Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 05.03.2012
Сообщений: 3

Ошибки в структурах и массивах

05.03.2012, 20:05. Показов 1136. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
в общем, в чем вопрос...
дана задача:
1. Описать структуру с именем STUDENT, содержащую следующие поля:
- фамилия и инициалы;
- номер группы;
- успеваемость (массив из пяти элементов).
2. Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT; записи должны быть упорядочены по возрастанию номера группы;
- вывод на дисплей фамилий и номеров групп для всех студентов, включенных в массив, если средний балл студента > 4.0;
- если таких студентов нет - вывести соответствующее сообщение.

я начал писать программу. однако, слепо пытаясь разгадать грамматику, чувствую, уже наплодил ошибок))) прошу помочь расшифровать их и, если можно, кинуть код этой программы.

вот сам код и ошибки (начало, не стал дописывать, имхо, нет смысла раз уже так много ошибок):
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
#include <iostream.h>
#include <iomanip.h>
#include <string.h>
 
int main()
 
{  int i; int n; float sred;
int NAROD[100];
sred = 0;
cout << "BBOD 4isla studentov";
cin >> n;
for (i=0; i<=n;i++) {
                      NAROD(i)=struct STUDENT(i){
                                                  char fio[40];
                                                  int Ngroup;
                                                  ocenki[5];
                                                  }
                      int j;
                      for (j=0; j<=1;j++) {
                                           cout << "FIO ?\n";
                                           cin >> STUDENT[i].fio;
                                           cout << "\nHOMEP Group ?\n";
                                           cin >> STUDENT[i].Ngroup;
                                           cout << "\nOcenki?\n";
                                              int k;
                                                for (k=0; k<6; k++)
                                                 cin >> STUDENT[i].ocenki[k];  }
                                                                                             }
 
        return 0;
}
[C++ Error] Unit1.cpp(11): E2314 Call of nonfunction
[C++ Error] Unit1.cpp(11): E2188 Expression syntax
[C++ Error] Unit1.cpp(17): E2451 Undefined symbol 'j'
[C++ Error] Unit1.cpp(19): E2451 Undefined symbol 'STUDENT'
[C++ Warning] Unit1.cpp(55): W8004 'sred' is assigned a value that is never used
 Комментарий модератора 
diman66613, используйте тег вставки кода :
[CPP ]без пробелов[ /CPP] или кнопка С++ на панели окна редактирования сообщения
Правила
2.8. Используйте тэги форматирования текста для удобства восприятия ваших сообщений другими пользователями.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.03.2012, 20:05
Ответы с готовыми решениями:

Строки фиксированной длинны в структурах для записи/чтения в файлах
Всем привет. В С++ я совсем новичок. Создал тему в разделе для начинающих с парой вопросов. На один из них посоветовали попросить помощи в...

Ошибки в программе о массивах
В заданном целочисленном массиве а заменить максимальный элемент модулем минимального элемента. Начальный массив выводит, минимальное и...

Найти количество общих элементов в массивах. Исправить ошибки в коде
static void Main(string args) { Console.Write(&quot;Enter k: &quot;); int k = int.Parse(Console.ReadLine()); ...

7
 Аватар для Sergey-K
238 / 229 / 58
Регистрация: 27.10.2011
Сообщений: 249
05.03.2012, 21:06
Цитата Сообщение от diman66613 Посмотреть сообщение
успеваемость (массив из пяти элементов)
Почему массив? Не проще int?

Цитата Сообщение от diman66613 Посмотреть сообщение
состоящий из десяти структур типа STUDENT
Значит 10 групп и 10 студентов?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
05.03.2012, 21:14
прежде всего ОПРЕДЕЛИТЕ структуру, а потом из нее массив создавайте (а не одновременно). И как по Вашему компилятор должен понять такое: ocenki[5] ? Пять элементов ЧЕГО??
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
05.03.2012, 21:15
diman66613, писал для себя месяц назад
такое же задание .Так и не понадобилось .
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream.h>
#define IND 10
#define SIND 5
 
struct Student
{
        char family[IND];
        int numgroup;
        int eval[SIND];
};
void input(Student &stud,int ind);
float mid_eval(Student &stud);
 
    int main()
{
Student stud[10];
 
        int count_loop = 0;
        float mideval[IND];  //
for(int i = 0;i < IND;i++)
    {
        input( stud[i],i);
        mideval[i] = mid_eval(stud[i]);
if(mideval[i] > 4.0) count_loop += 1;
    }
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//           SORTIROVKA GRUP
        //
 
     cout << endl << "Sortirovka grup" << endl;
for(int i = 0; i < IND; ++i)
    {
 
        int tmp = 0;
        int pos = i;
        tmp = stud[i].numgroup;
for(int j = i + 1; j < IND; ++j)
        {
if (stud[j].numgroup < tmp)
           {
               pos = j;
               tmp = stud[j].numgroup;
           }
        }
        stud[pos].numgroup = stud[i].numgroup;
        stud[i].numgroup = tmp;
        cout << endl << "Nomer gruppi\t" << stud[i].numgroup <<"\tfamilia\t"<<stud[i].family <<"\tsredniy bal\t"<< mideval[i] << endl;
    }
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
        cout << endl ;
        cout << endl << "Sredniy bal > 4.0" << endl;
if(count_loop > 0)
        for(int i = 0; i < IND; ++i) {
                if(mideval[i] > 4.0){
        cout  <<"Familiya " << stud[i].family << "\tsredniy bal\t" << mideval[i] << endl;
                        }
                    }
        else cout << "\t\tnikto ne nabral" << endl;
 
system("pause");
return 0;
}
 
void input(Student &stud,int ind){
        cout << endl << "Familia studenta  " << (ind + 1) << "\t";
        cin >> stud.family;
        cout << "Nomer  gruppi:  ";
        cin >> stud.numgroup;
        cout << "Vvedite 5 ocenok:" << endl;
        for(int i = 0;i < SIND;i++)
        cin >> stud.eval[i];
 
}
float mid_eval(Student &stud){
        float m_eval = 0;
for(int i = 0; i < SIND;i++){
        m_eval += stud.eval[i];}
        m_eval /= SIND;
    return m_eval;
};
1
0 / 0 / 0
Регистрация: 05.03.2012
Сообщений: 3
05.03.2012, 21:24  [ТС]
Цитата Сообщение от MrCold Посмотреть сообщение
diman66613, писал для себя месяц назад
такое же задание .Так и не понадобилось .
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream.h>
#define IND 10
#define SIND 5
 
struct Student
{
        char family[IND];
        int numgroup;
        int eval[SIND];
};
void input(Student &stud,int ind);
float mid_eval(Student &stud);
 
    int main()
{
Student stud[10];
 
        int count_loop = 0;
        float mideval[IND];  //
for(int i = 0;i < IND;i++)
    {
        input( stud[i],i);
        mideval[i] = mid_eval(stud[i]);
if(mideval[i] > 4.0) count_loop += 1;
    }
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//           SORTIROVKA GRUP
        //
 
     cout << endl << "Sortirovka grup" << endl;
for(int i = 0; i < IND; ++i)
    {
 
        int tmp = 0;
        int pos = i;
        tmp = stud[i].numgroup;
for(int j = i + 1; j < IND; ++j)
        {
if (stud[j].numgroup < tmp)
           {
               pos = j;
               tmp = stud[j].numgroup;
           }
        }
        stud[pos].numgroup = stud[i].numgroup;
        stud[i].numgroup = tmp;
        cout << endl << "Nomer gruppi\t" << stud[i].numgroup <<"\tfamilia\t"<<stud[i].family <<"\tsredniy bal\t"<< mideval[i] << endl;
    }
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
        cout << endl ;
        cout << endl << "Sredniy bal > 4.0" << endl;
if(count_loop > 0)
        for(int i = 0; i < IND; ++i) {
                if(mideval[i] > 4.0){
        cout  <<"Familiya " << stud[i].family << "\tsredniy bal\t" << mideval[i] << endl;
                        }
                    }
        else cout << "\t\tnikto ne nabral" << endl;
 
system("pause");
return 0;
}
 
void input(Student &stud,int ind){
        cout << endl << "Familia studenta  " << (ind + 1) << "\t";
        cin >> stud.family;
        cout << "Nomer  gruppi:  ";
        cin >> stud.numgroup;
        cout << "Vvedite 5 ocenok:" << endl;
        for(int i = 0;i < SIND;i++)
        cin >> stud.eval[i];
 
}
float mid_eval(Student &stud){
        float m_eval = 0;
for(int i = 0; i < SIND;i++){
        m_eval += stud.eval[i];}
        m_eval /= SIND;
    return m_eval;
};


Cпасибо за решение, но ещё...не мог бы ты написать комментарии к коду, хотя бы общие?) т.к. я не могу понять, что за return m_eval, к примеру...
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
05.03.2012, 22:17
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <iostream.h>
#define IND 10        // ДЛЯ КОЛ- ВА СТРУКТУР 
#define SIND 5         // ДЛЯ КОЛ- ВА ОЦЕНОК 
// ОПРЕДЕЛЕНИЕ СТРУКТУРЫ STUDENT
struct Student
{
        char family[IND];
        int numgroup;
        int eval[SIND];
};
 
// ПРОТОТИПЫ ФУНКЦИЙ  
 
// ВВОД ДАННЫХ О СТУДЕНТАХ
void input(Student &stud,int ind);
// ВЫЧИСЛЕНИЕ СРЕДНЕГО БАЛЛА ИЗ ПЯТИ ОЦЕНОК 
float mid_eval(Student &stud);
 
    int main()
{
Student stud[10];//   МАССИВ ИЗ ДЕСЯТИ СТРУКТУР
 
        int count_loop = 0;// МЕТКА ЕСЛИ СРЕДНИЙ БАЛЛ ХОТЬ У ОДНОГО СТУДЕНТА > 4.0 
 
        float mideval[IND];  //   МАССИВ ДЛЯ СРЕДНЕГО БАЛЛА КАЖД.СТУДЕНТА
 
for(int i = 0;i < IND;i++)
    {
        // ВВОД  ДАННЫХ
        input( stud[i],i);
        // СРАЗУ  ВЫЧИСЛЯЕМ СРЕДНИЙ БАЛ  И ЗАНОСИМ В МАССИВ 
        mideval[i] = mid_eval(stud[i]);
        // ЕСЛИ ЕСТЬ  БАЛ > 4.0  ПЛЮСУЕМ МЕТКУ 
if(mideval[i] > 4.0) count_loop += 1;
    }
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//           SORTIROVKA GRUP
        //
 
          cout << endl << "Sortirovka grup" << endl;
// СОРТИРУЕМ ГРУППЫ ПО НОМЕРУ  
     
for(int i = 0; i < IND; ++i)
    {
 
        int tmp = 0;
        int pos = i;
        tmp = stud[i].numgroup;
for(int j = i + 1; j < IND; ++j)
        {
if (stud[j].numgroup < tmp)
           {
               pos = j;
               tmp = stud[j].numgroup;
           }
        }
        stud[pos].numgroup = stud[i].numgroup;
        stud[i].numgroup = tmp;
        // ВЫВОД ДАННЫХ  
        cout << endl << "Nomer gruppi\t" << stud[i].numgroup <<"\tfamilia\t"<<stud[i].family <<"\tsredniy bal\t"<< mideval[i] << endl;
    }
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
        cout << endl ;
        cout << endl << "Sredniy bal > 4.0" << endl;
        // ЕСЛИ МЕТКА БОЛЬШЕ НУЛЯ -  таких студентов нет - вывести соответствующее сообщение
if(count_loop > 0)
        for(int i = 0; i < IND; ++i) {
                if(mideval[i] > 4.0){
                    // ВЫВОД ДАННЫХ  
        cout  <<"Familiya " << stud[i].family << "\tsredniy bal\t" << mideval[i] << endl;
                        }
                    }
        else cout << "\t\tnikto ne nabral" << endl;
 
system("pause");
return 0;
}
    // ВВОД ДАННЫХ О СТУДЕНТАХ
void input(Student &stud,int ind){
        cout << endl << "Familia studenta  " << (ind + 1) << "\t";
        cin >> stud.family;
        cout << "Nomer  gruppi:  ";
        cin >> stud.numgroup;
        cout << "Vvedite 5 ocenok:" << endl;
        for(int i = 0;i < SIND;i++)
        cin >> stud.eval[i];
 
}
// ВЫЧИСЛЕНИЕ СРЕДНЕГО БАЛЛА ИЗ ПЯТИ ОЦЕНОК 
// ДЛЯ КАЖДОГО СТУДЕНТА  
float mid_eval(Student &stud){
        float m_eval = 0;
for(int i = 0; i < SIND;i++){
        m_eval += stud.eval[i];}
        m_eval /= SIND;
    return m_eval;  // ВЕРНУТЬ СРЕДНИЙ БАЛЛ В  MAIN()
};
Добавлено через 26 минут
В коментах чуть ошибся
Цитата Сообщение от MrCold Посмотреть сообщение
// ЕСЛИ МЕТКА БОЛЬШЕ НУЛЯ - *таких студентов нет - вывести соответствующее сообщение
Читать : ЕСЛИ МЕТКА РАВНА НУЛЮ
1
0 / 0 / 0
Регистрация: 05.03.2012
Сообщений: 3
06.03.2012, 19:40  [ТС]
спс за подробности
тему можно closed
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
06.03.2012, 20:19
diman66613, вот еще ошибка
C++
1
char family[IND];
здесь символов нужно побольше ,так например
C++
1
char family[40];
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.03.2012, 20:19
Помогаю со студенческими работами здесь

В массивах G(8), K(19) определить кол-во и произведение элементов меньших 26 в двух заданных массивах (6;34)
Задать два одномерных массива значений, чтобы величины элементов массивов попадали в заданный интервал на всем его диапазоне ( значения...

Строки в структурах
Добрый день, объясните пожалуйста мне - начинающему, как в структуре можно обратиться к строке. Например структура: struct Record { ...

программа по структурах
В входной файл записать анкетные данные Ваших студентов. Определить старшего и младшего студента группы.

Ошибка в структурах
Добрый день! Не работает if + криво выводится сама структура, в чем может быть ошибка? #include&lt;stdio.h&gt; ...

Операция new в структурах
Недавно начал изучать С++ и уже первые &quot;трудности&quot; :) Вот задание: 7. Вильям Вингейт (William Wingate) заведует службой анализа рынка...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru