Форум программистов, компьютерный форум CyberForum.ru

Как правильно объявить структуру - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.63
OverDozero
 Аватар для OverDozero
98 / 98 / 6
Регистрация: 07.04.2011
Сообщений: 517
05.07.2014, 16:35     Как правильно объявить структуру #1
Всем доброго времени суток.Есть задача:Составить программу формирования данных об успеваемости студентов по дисциплине: фамилия И.О., 5 оценок по контрольным мероприятиям. Организовать вычисление итоговых оценок: если студент набрал 80% и более от максимально возможного балла – оценка 5, от 60% до 79% – 4; от 40% до 59% -3, менее 40% - 2
Необходимо использовать структуры.
Задумка такая:
Задаем количество студентов с клавиатуры.
Количество студентов=количеству структур.
1:вводим количество студентов
Заполнение структуры:
1.Вводим фио студента.
2.Водим количество предметов,которые есть у данного студента
3.Вводим конкретный предмет
4.Указываем максимальный балл по этому предмету
5.Указываем оценки по по конкретному предмету
Например:
1 студент
-Иванов И.И
-2 предмета у студента
-2.1 - математика
-2.1.1-максимальный бал по предмету =100
-2.1.1.1.-вводим баллы по предмету математика
После ввода баллов вводим 2 предмет и аналогичные действия пунктам 2.1-2.1.1.1
Весь вопрос в заполнении структуры.Как ее правильно объявить чтоб можно было выполнять описанные выше действия?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <alloc.h>
 struct stud{
    char FIO[256];//ÔÈÎ
    char pred [256];//ïðåäìåò
    int ozp [5];//îöåГ*ГЄГЁ
    int maxball;
    int kolpred[99];
      };
 
int percent=0;//ñêîëüêî ïðîöåГ*ГІ Г*Г*ГЎГ°Г*Г« ñòóäåГ*ГІ
int sumball=0;//Г±ГіГ¬Г* ГЎГ*ëëîâ
//int maxball=0;//Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*ûé ГЎГ*ëë ГЇГ® Г¤Г*Г*Г*îìó ïðåäìåòó
//int kolpred=0;//êîëè÷åñòâî ïðåäìåòîâ Гі ñòóäåГ*ГІГ*
int kolvostud=0;//êîëè÷åñòâî Г±ГіГІГҐГ¤Г*òîâ
//percent=(sumball*100)/maxball
 
 int main ()
  {
      struct stud std[999]
     printf("Vvedite loli4estvo studentov:");
     scanf("%d",&kolvostud);
 
    for (int i=0;i<kolvostud;++i){//1 on I
     printf("Vvedite FIO studenta(4erez probel):");
     scanf("%s",std[i].FIO);
     
     printf("Vvedite koli4estvo predmetov u studenta:");
     scanf("%d",&std[i].kolpred);   
         for (int j=0;j<std[i].kolpred;++j){//2 on J
     
             printf("Vvedite nazvanie '%d' predmeta:",j+1);
             scanf("%s",std[i].pred);
              
               printf("Vvedite max.ball po predmetu: %s",std[i].pred);
             scanf("%d",std[i].maxball);
               for (int k=0;k<5;++j){//3 on K
                 printf("Vvedite ocenku В№:%d",k+1);
             scanf("%d",std[i].ozp);
               }//3 off K
                   }//2 off J 
                         }//1 off I
Вот попытался что-то объявить,но тут явно проблема в объявлении структуры.
Прошу помощи с этой задачей.Спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OverDozero
 Аватар для OverDozero
98 / 98 / 6
Регистрация: 07.04.2011
Сообщений: 517
07.07.2014, 21:00  [ТС]     Как правильно объявить структуру #21
В папке чтение и вычисления мой ВЦкод
Там же тиихстишник struct.Это и есть записанный файл,который надо считать в структуры
Вложения
Тип файла: rar Arch 4.rar (226.2 Кб, 2 просмотров)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2014, 06:48     Как правильно объявить структуру
Еще ссылки по теме:

Как правильно написать функцию, которая редактирует структуру по полю Name и возвращает новую, исправленную структуру?.. C++
C++ Как правильно объявить массив строк c++
C++ Как правильно объявить статический метод

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
08.07.2014, 06:48     Как правильно объявить структуру #22
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Не очень понял, что именно не получалось.
Все точно так же как и при вводе с экрана.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <iostream>
 
/*Составить программу формирования данных об успеваемости студентов по дисциплине:
фамилия И.О., 5 оценок по контрольным мероприятиям.
Организовать вычисление итоговых оценок: если студент набрал 80% и более от максимально возможного балла - оценка 5,
от 60% до 79% - 4; от 40% до 59% -3, менее 40% - 2*/
 
struct predmet{
   char predm [255];//предмет
   int ozp [5];//оценки
   int maxball;
 };
 struct students{
   char FIO[255];//ФИО
   int kolpred;//количество предметов 
   struct predmet *pred;
  };
 
int percent=0;//сколько процент набрал студент
int sumball=0;//сума баллов
int kolvostud=0;//количество сутеднтов
char arr[255];
int main ()
 
{  
 FILE *in;
 in=fopen("struct.txt","r");
 fscanf (in,"%d", &kolvostud);   
 printf("%d\n",kolvostud);
 students study[kolvostud]; 
 while ( fgetc(in) != '\n' );
 
 for (int i=0;i<kolvostud;i++){//1 on I
      fgets(study[i].FIO,255,in);//читаем строку с ФИО
      //strcpy(study[i].FIO,arr);//в структуру пишем ФИО
      printf("%s\n",study[i].FIO);
      fscanf(in,"%d",&study[i].kolpred);//читаем количество предметов у студента
      while ( fgetc(in) != '\n' );
      printf("%d\n",study[i].kolpred);
      study[i].pred = (predmet*)calloc(study[i].kolpred,sizeof(predmet));//выделяем память под предметы      
      for (int j=0;j<study[i].kolpred;j++){//2 on J
         fgets(study[i].pred[j].predm,255,in);
         printf("%s",study[i].pred[j].predm);
         fscanf(in,"%d",&study[i].pred[j].maxball);
         while ( fgetc(in) != '\n' );
         printf("%d:",study[i].pred[j].maxball);
         for (int k=0;k<5;k++){//3 on K
            fscanf(in,"%d",&study[i].pred[j].ozp[k]);
            while ( fgetc(in) != '\n' );
            printf("%d;",study[i].pred[j].ozp[k]);
            }//3 off K
         printf("\n");      
      }//2 off J
      printf("\n");      
 }//1 off I
 for (int i=0;i<kolvostud;i++)
   free(study[i].pred);
 getch();
 return 0;
}
Yandex
Объявления
08.07.2014, 06:48     Как правильно объявить структуру
Ответ Создать тему
Опции темы

Текущее время: 20:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru