С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 06.10.2018
Сообщений: 161

Структуры: список студентов, вывод в порядке убывания среднего балла

08.12.2018, 22:41. Показов 4017. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача: Дан список студентов, включающий в себя ФИО, 4 оценки, город проживания студента и высчитывается средний балл.
Результат: 1. Вывести список всех студентов в порядке убывания среднего балла. 2. Вывести список только ИНОГОРОДНИХ(не Минских) студентов также в убывание среднего балла.
В чём проблема?: После ввода данных не выводит ни одного списка, а просто завершается программа после некоторого промежутка времени.

КОД:

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
#include<iostream>
using namespace std;
 
struct student {
    char fio[31];
    char addres[41];
    int marks[4];
    double average;
};
 
int main()
{
    int numberOfStudents; //Кол-во всего студентов
 
    cout << "Input number of students: "; 
    cin >> numberOfStudents;
 
    student *pointer = new student[numberOfStudents];
 
    for (int i = 0; i < numberOfStudents; i++) {
        cout << "Enter fio of " << i + 1 << " student: "; //Ввод ФИО
        cin >> pointer[i].fio;
 
        cout<< "Enter addres of " << i + 1 << " student: ";//Ввод адреса
        cin >> pointer[i].addres;
 
        cout << "Enter marks of " << i + 1 << " student: ";//Ввод оценок
        pointer[i].average = 0;
        for (int j = 0; j < 4; j++) {
            cin >> pointer[i].marks[j];
            pointer[i].average += pointer[i].marks[j];
            }
        pointer[i].average /= 4;
    }
 
    for (int i = 0; i < numberOfStudents; i++) {
        for (int j = 0; i < numberOfStudents; j++) {   //Идем по списку производим обмен, проверяем иногородний или нет
            if (pointer[i].average < pointer[j].average && strcmp(pointer[i].addres, "minsk") != 0 && strcmp(pointer[i].addres, "minsk") != 0) {
                student buf = pointer[i];
                pointer[i] = pointer[j];        //ОБМЕН
                pointer[j] = buf;
                int i = 0;
 
                while (strcmp(pointer[i].addres, "minsk") != 0) {
                    cout << pointer[i].fio << "\t" << pointer[i].average << endl;
                    i++;
                    if (i = 0)
                        cout << "No!!!!!" << endl;    //Когда нет иногородних
                }
            }
        }
    }
 
 
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.12.2018, 22:41
Ответы с готовыми решениями:

Вывести студентов в порядке убывания среднего балла
дан список студентов и список предметов,по которому сдавался экзамен. известны оценки по каждому предмету. разработать алгоритм и привести...

Выведите фамилии и имена студентов в порядке убывания их среднего балла
Выведите фамилии и имена студентов в порядке убывания их среднего балла

Сортировка структур в порядке убывания среднего балла
П.5.18.Правил Запрещено размещать задания и решения в виде картинок и других файлов с их текстом. Перепишите задачу в сообщение ...

2
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
09.12.2018, 00:15
C++
1
for (int j = 0; i < numberOfStudents; j++)
Должно быть:

C++
1
for (int j = 0; j < numberOfStudents; j++)
Добавлено через 1 минуту
C++
1
if (i = 0)
=?

может быть:

C++
1
if (i == 0)
Добавлено через 14 секунд
Может еще ошибки, не особо смотрел
0
1 / 1 / 0
Регистрация: 06.10.2018
Сообщений: 161
11.12.2018, 13:31  [ТС]
Спасибо, исправил. Также заметил ещё ошибку:
не удалил динамический массив.
C++
1
 delete [] pointer;
Но несмотря на это при вводе различных комбинаций результаты следующие:
1. Иногда проходит без проблем.
2. Проходит, но выдаёт большое множество не нужных символов после результата.
3. Проходит, но выдаёт дважды зеркальный результат.
4. Не проходит вовсе. Завершается программа.
Подскажите, пожалуйста, в чём дело?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.12.2018, 13:31
Помогаю со студенческими работами здесь

Выведите фамилии и имена учащихся в порядке убывания их среднего балла
Помогите, пожалуйста, с решением, последний тест не проходит, пишет &quot;превышено максимальное время работы&quot;. Вместо пузырька вставляли...

Получить список студентов с указанием среднего балла
имеется информация о студентах группы: Ф.И.О., результаты экзаменационной сессии. Мне надо получить список студентов с указанием среднего...

Получить список студентов с указанием среднего балла
Дан массив записей. Каждая запись содержит информацию о студентах группы: Ф.И.О., результаты последней экзаменационной сессии. -...

Упорядочить список студентов по возрастанию среднего балла
Имеется код, необходимо упорядочить список студентов по возрастанию среднего балла. Не понимаю, как это сделать. Прошу помочь! ...

Создать список студентов с оценками по нескольким дисциплинам. Отсортировать список по убыванию среднего балла. Имеющих двойки удалить из списка.
Помогите сделать лабу задание:Создать список студентов с оценками по нескольким дисциплинам. Отсортировать список по убыванию среднего...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru