Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
OverDozero
99 / 99 / 50
Регистрация: 07.04.2011
Сообщений: 529
#1

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

05.07.2014, 16:35. Просмотров 1658. Ответов 21
Метки нет (Все метки)

Всем доброго времени суток.Есть задача:Составить программу формирования данных об успеваемости студентов по дисциплине: фамилия И.О., 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
Вот попытался что-то объявить,но тут явно проблема в объявлении структуры.
Прошу помощи с этой задачей.Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2014, 16:35
Ответы с готовыми решениями:

Как правильно объявить внешнюю структуру
Начал изучение stm32 и возник вопрос Не ругайтесь за лузерский вопрос Задача:...

Как правильно объявить структуру в файле (модуле)?
Возникла проблема такая проблема в файле Queue.h объявлена структура и...

Как правильно написать функцию, которая редактирует структуру по полю Name и возвращает новую, исправленную структуру?..
Нужно отредактировать структуру по выбору пользователя. Проблема заключается в...

Как правильно объявить fopen
Доброго времени суток. наткнулся на некоторого рода проблемку. Не могу объявить...

Как правильно объявить вектор?
Только начинаю постигать STL. Подскажите, как заполнить случайными числами...

21
OverDozero
99 / 99 / 50
Регистрация: 07.04.2011
Сообщений: 529
07.07.2014, 21:00  [ТС] #21
В папке чтение и вычисления мой ВЦкод
Там же тиихстишник struct.Это и есть записанный файл,который надо считать в структуры
0
Вложения
Тип файла: rar Arch 4.rar (226.2 Кб, 2 просмотров)
uglyPinokkio
326 / 229 / 55
Регистрация: 30.05.2014
Сообщений: 682
08.07.2014, 06:48 #22
Лучший ответ Сообщение было отмечено OverDozero как решение

Решение

Не очень понял, что именно не получалось.
Все точно так же как и при вводе с экрана.

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;
}
1
08.07.2014, 06:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2014, 06:48

Как правильно объявить массив строк c++
Подскажите пожалуйста, как реализовать: нужно корректно обьявить массив...

Как правильно объявить массив объектов
Как правильно объявить массив объектов: #include &lt;cstdlib&gt; #include...

Как правильно объявить vector в классе?
как правильно объявить вектор? #include &lt;vector&gt; #include &lt;algorithm&gt; ...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru