Форум программистов, компьютерный форум CyberForum.ru

Обработка записей (список учеников имеет следующую структуру: фамилия – номер школы – число баллов по ЕГЭ – оценка) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Polovnik
Сообщений: n/a
30.05.2013, 13:33     Обработка записей (список учеников имеет следующую структуру: фамилия – номер школы – число баллов по ЕГЭ – оценка) #1
Разработать и отладить программу обработки записей. Предусмотреть:
- ввод данных
- вывод результатов (на экран в виде таблицы и в файл)

Задача:

Список учеников имеет следующую структуру: фамилия – номер школы – число баллов по ЕГЭ (от 0 до 100) – оценка. При вводе числа баллов рассчитайте оценку (до 40 баллов – «2», 40-59 баллов – «3», 60-89 баллов – «4», 90-100 баллов – «5») и выведите информацию об учениках в виде таблицы.
1) Вывести фамилии и номер школы учеников, получивших оценку «3».
2) Вывести информацию об учениках данной школы (номер школы ввести с клавиатуры).
3) Выполнить сортировку списка по количество баллов, вывести отсортированный список

Если возможно, то сделать программу через Case, чтобы по нажатию цифр (1,2,3) выбирать что необходимо сделать

Программа написана, однако она работает не совсем правильно, не могу понять почему. Проблема в том, что после того как я ввел данные по первому человеку он меня перебрасывает на ввод "Число баллов по ЕГЭ" у второго, хотя она должна была перекинуть на строку с "Фамилия", потом "Номер школы".
Плюс я не смог сделать все это через Case

Вот сама программа

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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include "stdafx.h"
#include <iostream>
#include <vector>
 
 
using namespace std;
 
struct student
{
    char name[50];
    int schoolnumber;
    int points;
    int rating;
};
 
void output_1 (vector<student> list)
{
    cout<<"Имя\tНомер школы\tБаллы ЕГЭ\tОценка"<<endl;
    for (int i=0; i<list.size(); i++)
    {
        cout<<list[i].name<<"\t"<<list[i].schoolnumber<<"\t"<<list[i].points<<"\t"<<list[i].rating<<endl;
    }
}
 
void output_2 (vector<student> list)
{
    cout<<"Имя\tНомер школы\tБаллы ЕГЭ\tОценка"<<endl;
    for (int i=0; i<list.size(); i++)
    {
        if (list[i].rating==3)
            cout<<list[i].name<<"\t"<<list[i].schoolnumber<<endl;
    }
}
 
void output_3 (vector<student> list)
{
    int n=0;
    cout<<"Введите номер школы для вывода: "<<endl;
    cin>>n;
    cout<<"\nИмя\tНомер школы\tБаллы ЕГЭ\tОценка"<<endl;
    for (int i=0; i<list.size(); i++)
    {
        if (list[i].schoolnumber==n)
            cout<<list[i].name<<"\t"<<list[i].schoolnumber<<"\t"<<list[i].points<<"\t"<<list[i].rating<<endl;
    }
}
 
void output_4 (vector<student> list)
{
    student st1;
    bool f=1;
    while (f=1)
    {
        f=0;
        for (int i=0; i<list.size()-1; i++)
            if (list[i].points>list[i+1].points)
            {
                st1=list[i];
                list[i]=list[i+1];
                list[i+1]=st1;
                f=1;
            }
    }
    cout<<"\nИмя\tНомер школы\tБаллы ЕГЭ\tОценка"<<endl;
    for (int i=0; i<list.size(); i++)
    {
        cout<<list[i].name<<"\t"<<list[i].schoolnumber<<"\t"<<list[i].points<<"\t"<<list[i].rating<<endl;
    }
}
 
 
 
student input_st ()
{
    student st1;
    cout<<"Введите данные по ученику: "<<"\nИмя ученика: ";
    cin.getline(st1.name,50);
    cout<<"\nНомер школы: ";
    cin>>st1.schoolnumber;
    cout<<"\nКоличество баллов ЕГЭ: ";
    cin>>st1.points;
    cout<<endl;
    if (st1.points<40) st1.rating=2;
    if ((st1.points>=40) && (st1.points<60)) st1.rating=3;
    if ((st1.points>=60) && (st1.points<90)) st1.rating=4;
    if (st1.points>=90) st1.rating=5;
    return st1; 
}
 
int main()
{
    setlocale (0,"");
    vector <student> list;
    bool flag=1;
    while (flag==1)
    {
        system("cls");
        list.push_back(input_st());
        cout<<"Ввести еще одного ученика? да - 1; нет - 0"<<endl;
        cin>>flag;
    }
    
    cout<<"\nВывод всей информации: "<<endl;
    output_1(list);
    system("pause");
 
    cout<<"\nВывод всей информации по троечникам: "<<endl;
    output_2(list);
    system("pause");
 
    cout<<"\nВывод всей информации по определенной школе: "<<endl;
    output_3(list);
    system("pause");
 
    cout<<"\nВывод отсортированной информации: "<<endl;
    output_4(list);
    system("pause");
 
    return 0;
}
Буду очень признателен за помощь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2013, 13:33     Обработка записей (список учеников имеет следующую структуру: фамилия – номер школы – число баллов по ЕГЭ – оценка)
Посмотрите здесь:

Описать структуру с именем NOTE, с полями: фамилия, номер телефона, год рождения. Ввести несколько структур. C++
C++ Задача (язык С + +). Создайте структуру данных Student, если нужно использовать следующие поля: фамилия, имя, номер группы, адрес, год рождения. Орган
C++ Создайте структуру данных Student, если нужно использовать следующие поля: фамилия, имя, номер группы, адрес, год рождения.
C++ Распечатать список учеников музыкальной школы, которые учатся играть на скрипке. Указать также, сколько лет они занимаются музыкой и принимали ли учас
C++ Создать структуру(номер по порядку,фамилия, адрес, № жека) вывести фамилии жильцов, дома которых относятся к пятому ЖЭКу
Список учеников имеет следующую структуру: фамилия – класс - оценка по алгебре - оценка по физике - средний балл C++
C++ Описать структуру NOTE, содержащую следующие поля: фамилия, имя, номер телефона
Запись имеет вид: фамилия студента, номер зачетной книжки, 4 оценки за экзамен. Выводить информацию о всех дво C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Polovnik
Сообщений: n/a
01.06.2013, 18:51     Обработка записей (список учеников имеет следующую структуру: фамилия – номер школы – число баллов по ЕГЭ – оценка) #2
Если непонятно описал проблему скажите плз. Мне и вправду необходимо доделать эту прогу. Спасибо

Добавлено через 4 часа 48 минут
Все, разобрался сам
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <conio.h>
 
using namespace std;
 
struct student
{
    char name[50];
    int schoolnumber;
    int points;
    int rating;
};
 
void output_1 (vector<student> list)
{
    cout<<"Имя\tШкола\tЕГЭ\tОценка"<<endl;
    for (int i=0; i<list.size(); i++)
    {
        cout<<list[i].name<<"\t"<<list[i].schoolnumber<<"\t"<<list[i].points<<"\t"<<list[i].rating<<endl;
    }
}
 
void output_2 (vector<student> list)
{
    cout<<"Имя\tШкола"<<endl;
    for (int i=0; i<list.size(); i++)
    {
        if (list[i].rating==3)
            cout<<list[i].name<<"\t"<<list[i].schoolnumber<<endl;
    }
}
 
void output_3 (vector<student> list)
{
    int n=0;
    cout<<"Введите номер школы для вывода: "<<endl;
    cin>>n;
    
        cout<<"\nИмя\tШкола\tЕГЭ\tОценка"<<endl;
        for (int i=0; i<list.size(); i++)
        {
            if (list[i].schoolnumber==n)
            cout<<list[i].name<<"\t"<<list[i].schoolnumber<<"\t"<<list[i].points<<"\t"<<list[i].rating<<endl;
        }
}
 
void output_4 (vector<student> list)
{
    student st1;
    bool f=1;
    while (f==1)
    {
        f=0;
        for (int i=0; i<list.size()-1; i++)
            if (list[i].points>list[i+1].points)
            {
                st1=list[i];
                list[i]=list[i+1];
                list[i+1]=st1;
                f=1;
            }
    }
    cout<<"\nИмя\tШкола\tЕГЭ\tОценка"<<endl;
    for (int i=0; i<list.size(); i++)
    {
        cout<<list[i].name<<"\t"<<list[i].schoolnumber<<"\t"<<list[i].points<<"\t"<<list[i].rating<<endl;
    }
}
 
 
 
student input_st ()
{
    student st1;
    
    cout<<"Введите данные по ученику: "<<"\nИмя ученика: ";
    cin>>st1.name;
 
    cout<<"\nНомер школы: ";
    cin>>st1.schoolnumber;
    
    
    
    cout<<"\nКоличество баллов ЕГЭ: ";
    cin>>st1.points;
    cout<<endl;
    if (st1.points<40) st1.rating=2;
    if ((st1.points>=40) && (st1.points<60)) st1.rating=3;
    if ((st1.points>=60) && (st1.points<90)) st1.rating=4;
    if (st1.points>=90) st1.rating=5;
    return st1; 
}
 
int main()
{
    setlocale (0,"");
    vector <student> list;
    bool flag=1;
    while (flag==1)
    {
        system("cls");
        list.push_back(input_st());
        cout<<"Ввести еще одного ученика? да - 1; нет - 0"<<endl;
        cin>>flag;
        
    }
    
    
 
 int choose = 0;
 bool bWork = true;
    while( bWork )
    {
        cout<<"\tМеню"<<endl;
        cout<<"1 - Список"<<endl;
        cout<<"2 - Троечники"<<endl;
        cout<<"3 - Информация по школе"<<endl;
        cout<<"4 - Сортировка"<<endl;
        cout<<"0 - Выход"<<endl;
        cout<<"Ваш выбор: ";
        if(!(cin>>choose) || cin.get() != '\n') 
        {
            cout<<"Введите число из меню\n"<<endl;
            cin.clear();                         
            cin.sync();                         
        }
        else
        {
            switch(choose)
            {
            case 1:
                output_1 (list);
                break;
            case 2:
                output_2 (list);
                break;
            case 3:
                output_3 (list);
                break;
            case 4:
                output_4 (list);
                break;
            case 0:
                bWork = false;
                break;
            default:
                cout<<"Выберите число из меню\n"<<endl;
                break;
            }
         }
    }
    return 0;
}
ПС Защита от дурака правда на вводе информации отсутствует, что я так и не смог сделать
Yandex
Объявления
01.06.2013, 18:51     Обработка записей (список учеников имеет следующую структуру: фамилия – номер школы – число баллов по ЕГЭ – оценка)
Ответ Создать тему
Опции темы

Текущее время: 21:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru