Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/22: Рейтинг темы: голосов - 22, средняя оценка - 4.82
Эксперт 1С
 Аватар для OverDozero
1475 / 338 / 136
Регистрация: 07.04.2011
Сообщений: 1,785

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

05.07.2014, 16:35. Показов 5199. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.07.2014, 16:35
Ответы с готовыми решениями:

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

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

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

21
Эксперт 1С
 Аватар для OverDozero
1475 / 338 / 136
Регистрация: 07.04.2011
Сообщений: 1,785
07.07.2014, 21:00  [ТС]
Студворк — интернет-сервис помощи студентам
В папке чтение и вычисления мой ВЦкод
Там же тиихстишник struct.Это и есть записанный файл,который надо считать в структуры
Вложения
Тип файла: rar Arch 4.rar (226.2 Кб, 3 просмотров)
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
08.07.2014, 06:48
Лучший ответ Сообщение было отмечено 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.07.2014, 06:48

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

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

Как правильно объявить массив объектов
Как правильно объявить массив объектов: #include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; class orenda_kvartiri {...

Как правильно объявить статический метод
например class A { private: static void method(); // объявление }; // как правильно объявить реализацию?

Как правильно объявить массив байтов?
Как правильно объявить массив байтов? Надо ли вручную выставлять ему размер после &quot;GetBitmapBits&quot;? Я делал так: ...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru