0 / 0 / 0
Регистрация: 06.03.2019
Сообщений: 20
1

Структуры

25.11.2019, 21:56. Показов 1066. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет, так вот задание такое:
1. Описать структуру с именем STUDENT, содержащую следующие поля:

- NAME — фамилия и инициалы;

- номер группы;

- успеваемость (массив из пяти элементов).

2. Написать программу, выполняющую следующие действия:

- ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT; записи должны быть упорядочены по возрастанию номера группы;

- вывод на дисплей фамилий и номеров групп для всех студентов, включенных в массив, если средний балл студента больше 4,0;

- если таких студентов нет, вывести соответствующее сообщение.

Я написал код, но есть баги и не знаю с чем связано. Во первых если я пишу кириллицей имена он мне в конце показывает набор букв и символов (setlocale подключил), второе если я пишу фамилию и имя с пробелом программа сразу прекращает работу и последнее связано с тем что если к примеру я пишу 2х учеников и у одного средний балл выше 4 а у другого меньше, программа покажет человека у которого больше но еще и выйдет сообщение что "таких студентов нет" (знаю что это все из за if но не могу догнать как по другому реализовать).

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
#include "pch.h"
#include <iostream>
 
using namespace std;
 
struct STUDENT
{
    char name[30];
    int num;
    double score[5];
};
 
void GetData(STUDENT *M, int N)
{
    int i;
    for (i = 0; i < N; i++)
    {
        cout << endl << "_________________________________________________" << endl;
        cout << "Имя и фамилия: ";
        cin >> M[i].name;
    
        cout << endl;
        cout << "Номер группы: ";
        cin >> M[i].num;
        
        cout << endl;
        for (int j = 0; j < 5; j++)
        {
            cout << endl << "Оценка: ";
            cin >> M[i].score[j];
        }
        
    }
}
 
void Show(STUDENT *M, int N)
{
    
    cout << endl << endl << endl << "///////////////////////////////////////////////////////////////////////////" << endl << endl;
 
        for (int i = 1; i < N; i++)
        {
            for (int j = i; j > 0 && M[j - 1].num > M[j].num; j--)
                swap(M[j - 1], M[j]);
        }
 
        for (int i = 0; i < N; i++)
        {
            double S;
            S = (M[i].score[0] + M[i].score[1] + M[i].score[2] + M[i].score[3] + M[i].score[4])/5;
            
            
            if (S > 4.0)
            {
                cout << endl << "________________________" << endl;
                cout << "Имя: " << M[i].name << endl;
                cout << "Номер группы: " << M[i].num << endl;
                cout << "Средння оценка: " << S << endl;
            }
            else
                cout << "Таких студентов нет :(";
        
            
        }
}
 
int main()
{
    int N;
    setlocale(LC_ALL, "Russian");
    cout << "Сколько учеников: ";
    cin >> N;
    STUDENT *M = new STUDENT[N];
 
    GetData(M,N);
    Show(M, N);
    
    return 0;
 
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2019, 21:56
Ответы с готовыми решениями:

Помещение структуры в вектор, удаление структуры, изменение элементов структуры
Здравствуйте. Помогите разобраться с тем, как: 1 - находить элементы в векторе зная уникальный...

Динамические структуры данных. Программа ввода в структуры и вывода информации из неё.
Автоматизированная информационная система на железнодорожном вокзале содержит сведения об...

Функция внутри структуры использует указатель, как поле этой структуры
Коротко, есть класс A, описан в файле A_class.h ну и реализованы функции в A_class.cpp, есть файл...

Структуры, массивы структур (как можно присваивать(инициализировать) значения полям структуры)
Есть у меня вот такая структура, например struct Subject { int cost; int Volume; }; Потом...

3
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
26.11.2019, 09:38 2
Цитата Сообщение от Gonerman Посмотреть сообщение
второе если я пишу фамилию и имя с пробелом программа сразу прекращает работу
Цитата Сообщение от Gonerman Посмотреть сообщение
cout << endl << "_________________________________________________" << endl;
        cout << "Имя и фамилия: ";
        cin >> M[i].name;
C++
1
2
3
        cout << endl << "_________________________________________________" << endl;
        cout << "Имя и фамилия: ";
cin.getline(M[i].name, 30);
0
0 / 0 / 0
Регистрация: 06.03.2019
Сообщений: 20
26.11.2019, 11:30  [ТС] 3
Я писал через getline программа начинает игнорировать ввод, приходит ввод имени он выводит сообщение что бы пользователь ввел но не дает сделать это просто сразу переходит на следующее сообщение
0
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
26.11.2019, 11:33 4
Лучший ответ Сообщение было отмечено Gonerman как решение

Решение

Цитата Сообщение от Gonerman Посмотреть сообщение
Я писал через getline программа начинает игнорировать ввод, приходит ввод имени он выводит сообщение что бы пользователь ввел но не дает сделать это просто сразу переходит на следующее сообщение
Сделай
C++
1
2
3
4
5
6
7
8
9
10
11
void GetData(STUDENT *M, int N)
{
cin.ignore();
    int i;
    for (i = 0; i < N; i++)
    {
.................        
 
cin.ignore();
    }
}
1
26.11.2019, 11:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2019, 11:33
Помогаю со студенческими работами здесь

Вывод структуры, строка как элемент структуры
Описать структуру с именем TRAIN, содержащую следующие поля: □ название пункта назначения;...

Исследование структуры FILE или: что вообще можно выудить из этой структуры, указатель на которую мы получаем при открытии файла?
Ничего нельзя. Итак, новичкам напомню, что после выполнения кода FILE* f= fopen (&quot;file.txt&quot;,...

Оператор if и структуры. Возвращение структуры из функции
Здравствуйте, имеется такая вот функция. void InputStructEmployee (int StructSize) { ...

Структуры. Вызов данных структуры по указателю. с++
Условие задачи: Помогите, пожалуйста, с как реализовать печать вообще не представляю.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru