Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 06.10.2018
Сообщений: 152
1

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

08.12.2018, 22:41. Просмотров 2215. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2018, 22:41
Ответы с готовыми решениями:

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

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

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

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

2
443 / 329 / 172
Регистрация: 01.07.2015
Сообщений: 1,162
09.12.2018, 00:15 2
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
Сообщений: 152
11.12.2018, 13:31  [ТС] 3
Спасибо, исправил. Также заметил ещё ошибку:
не удалил динамический массив.
C++
1
 delete [] pointer;
Но несмотря на это при вводе различных комбинаций результаты следующие:
1. Иногда проходит без проблем.
2. Проходит, но выдаёт большое множество не нужных символов после результата.
3. Проходит, но выдаёт дважды зеркальный результат.
4. Не проходит вовсе. Завершается программа.
Подскажите, пожалуйста, в чём дело?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.12.2018, 13:31

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

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

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

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

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


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

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

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