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

Структуры: вывести фамилии трех лучших учеников данного класса - C++

Восстановить пароль Регистрация
 
bod1ka
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 29
14.07.2010, 19:08     Структуры: вывести фамилии трех лучших учеников данного класса #1
Анкета школьника включает в себя Ф.И.О., номер школы, номер класса и оценки по пяти предметам. Вывести фамилии трех лучших учеников данного класса.

Вывести в убывающем порядке цифры, которые входят в запись данного длинного целого числа только один раз.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2010, 19:08     Структуры: вывести фамилии трех лучших учеников данного класса
Посмотрите здесь:

C++ В строковом массиве храняться фамилии и инициалы учеников класса.
C++ Занести из файла в массив A фамилии учеников 11 класса, в матрицу С – их оценки
Вывести на экран фамилии и имена трех худших по среднему баллу учеников C++
C++ Структуры. Вывести фамилии студентов.
Распечатать список учеников, фамилии которых... C++
Вывести средний балл учеников класса по заданному предмету C++
Вывести трех лучших учеников C++
C++ Вывести фамилии неуспевающих учеников

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Qwerty_coder
29 / 29 / 2
Регистрация: 14.12.2009
Сообщений: 79
15.07.2010, 21:13     Структуры: вывести фамилии трех лучших учеников данного класса #2
Держи первое задание... Писал в ms visual 2008, если что...

p.s. единственное, что есть один маленький баг: когда вводишь Ф.И.О., например так, Petrov A.V., то программа зацикливается...
Чтобы этого не было, вводить ФИО нужно слитно, то есть так: Petrov.A.V. без пробелов

Анкета школьника включает в себя Ф.И.О., номер школы, номер класса и оценки по пяти предметам. Вывести фамилии трех лучших учеников данного класса.
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
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int _getch(void);
 
struct anketa
{
    char FIO[300];
    int num_school, num_class, mark1, mark2, mark3, mark4, mark5, sred;
} a[500], temp;
 
int kod = 0, kol = -1, temp_school = 0, temp_class = 0;
 
int main()
{
    while(true)
    {
        cout << " Add - 1\n Task - 2\n View - 3\n Exit - 0: ";
        scanf("%d", &kod);
        switch(kod)
        {
        case 1:
            //Ввод исходных данных
            kol++;
            cout << "\n\tInput F.I.O.: "; cin >> a[kol].FIO;
            cout << "\tInput school number: "; cin >> a[kol].num_school;
            cout << "\tInput class number: "; cin >> a[kol].num_class;
            cout << "\t--- Input marks ---" << endl;
            cout << "\tInput first mark: "; cin >> a[kol].mark1;
            cout << "\tInput second mark: "; cin >> a[kol].mark2;
            cout << "\tInput third mark: "; cin >> a[kol].mark3;
            cout << "\tInput fourth mark: "; cin >> a[kol].mark4;
            cout << "\tInput fifth mark: "; cin >> a[kol].mark5; cout << endl;
            break;
        case 2:
            cout << "\nInput the school number you like: "; cin >> temp_school;
            cout << "Input the class you like: "; cin >> temp_class;
            cout << "\n--- The best pupils of school N" << temp_school << " class N" << temp_class << "---"<< endl;
            
            //Вычисление среднего балла учеников
            for (int i = 0; i <= kol; i++)
            {
                a[i].sred = (a[i].mark1 + a[i].mark2 + a[i].mark3 + a[i].mark4 + a[i].mark5) / 5;
            }
 
            //Сортировка
            for (int i = 0; i <= kol - 1; i++)
            {
                for (int j = i + 1; j <= kol; j++)
                {
                    if (a[i].sred > a[j].sred)
                    {
                        temp = a[i];
                        a[i] = a[j];
                        a[j] = temp;
                    }
                }
            }
 
            //Вывод задания на экран
            for (int i = kol; i >= kol - 2; i--)
            {
                if (a[i].num_school == temp_school)
                {
                    if (a[i].num_class == temp_class)
                    {
                        cout << "\tF.I.O.: " << a[i].FIO << endl;
                        cout << "\tSchool number: " << a[i].num_school << endl;
                        cout << "\tClass number: " << a[i].num_class << endl;
                        cout << "\tFirst mark: " << a[i].mark1 << endl;
                        cout << "\tSecond mark: " << a[i].mark2 << endl;
                        cout << "\tThird mark: " << a[i].mark3 << endl;
                        cout << "\tFourth mark: " << a[i].mark4 << endl;
                        cout << "\tFifth mark: " << a[i].mark5 << endl;
                        cout << "\tAverage mark: " << a[i].sred << endl; cout << endl;
                    }
                }
            }
            break;
        case 3:
            for (int i = 0; i <= kol; i++)
            {
                a[i].sred = (a[i].mark1 + a[i].mark2 + a[i].mark3 + a[i].mark4 + a[i].mark5) / 5;
            }
            cout << "\n\t--- View ---" << endl;
            for (int i = 0; i <= kol; i++)
            {
                cout << "\tF.I.O.: " << a[i].FIO << endl;
                cout << "\tSchool number: " << a[i].num_school << endl;
                cout << "\tClass number: " << a[i].num_class << endl;
                cout << "\tFirst mark: " << a[i].mark1 << endl;
                cout << "\tSecond mark: " << a[i].mark2 << endl;
                cout << "\tThird mark: " << a[i].mark3 << endl;
                cout << "\tFourth mark: " << a[i].mark4 << endl;
                cout << "\tFifth mark: " << a[i].mark5 << endl;
                cout << "\tAverage mark: " << a[i].sred << endl; cout << endl;
            }
            break;
        case 0:
            //Выход из программы
            char letter = 0;
            cout << endl << "Would you like to leave this programm, input Y / N? "; cin >> letter;
            cout << endl;
            if (letter == 'Y') return 0;
            if (letter == 'N') cout << "Great decision!\n" << endl; 
            break;
        }
    }
 
    _getch();
}
gdz
2 / 2 / 0
Регистрация: 19.10.2009
Сообщений: 46
16.07.2010, 21:30     Структуры: вывести фамилии трех лучших учеников данного класса #3
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
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
 
int main()
{
long int a, f, h;
int z, k, i;
bool t;
cin >> a;
h=a;
while (a/10!=0 || a%10!=0 )
{
z=a%10;
a=a/10;
t=true;
i=0;
f=h;
while (f/10!=0 || f%10!=0 )
{
      k=f%10;
      f=f/10;
      if (z==k) i++; 
     if (i>1) {t=false; break;}
 
}
if (t)
cout << z;
}
getch();
return 0;
}
это на 2е
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
16.07.2010, 22:37     Структуры: вывести фамилии трех лучших учеников данного класса #4
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
/* Вывести в убывающем порядке цифры, которые входят в запись данного длинного целого числа 
только один раз. */
 
int main(void){
    long number;
    int i, counters[10];
    
    while ( 1 ){
        printf("Number: ");
        if ( scanf("%ld", &number) != 1 ){
            perror("scanf");
            exit(EXIT_FAILURE);
        }
        if ( ! number )
            break;
        memset(counters, 0, sizeof(counters));
        while ( number ){
            counters[number % 10]++;
            number /= 10;
        }
        printf("Single digits: ");
        for ( i = 9; i >= 0; --i )
            if ( counters[i] == 1 )
                printf("%d ", i);
        printf("\n");
    }
    
    exit(EXIT_SUCCESS);
}
Yandex
Объявления
16.07.2010, 22:37     Структуры: вывести фамилии трех лучших учеников данного класса
Ответ Создать тему
Опции темы

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