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

Вывести имена трех худших по баллу - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как определить, что собеседник в данный момент печатает сообщение как в ICQ http://www.cyberforum.ru/cpp-beginners/thread161948.html
Думаю многие имеют скайп/асю. И там есть фишка если собеседник набирает сообщение про ето тебе пишет... Как ето реализовать??
C++ Ошибка в коде при выведении строки Пишу код для покера. Вот одна из его частей: #include <iostream> #include <time.h> using namespace std; class Pack { string kind_of_prise; int money_prise; http://www.cyberforum.ru/cpp-beginners/thread161936.html
Учебник по C++ полный. C++
Где взять такой учебник где все рассказывается о языке от а до я???
Где взять консольный компилятор? C++
Надоело мне эти IDE хочу попробывать по программировать в консольном компиляторе, вот только где его взять подскажите пожалуйста. Уже несколько дней ищу ни как немогу найти.
C++ Арифметика указателей http://www.cyberforum.ru/cpp-beginners/thread161916.html
есть size_t * pointer_1; logfile_f("\npointer_1 is 0x%X", pointer_1); есть size_t * pointer_2 = pointer_1 - 284; logfile_f("\npointer_2 is 0x%X", pointer_2); в итоге же: pointer_1 is 0x465B414 pointer_2 is 0x465AFA4
C++ Union что из себя представляет? Читал много книг и там про него не чего не было сказано, парни объясните мне пожалуйста для чего он? подробнее

Показать сообщение отдельно
OgUrec
0 / 0 / 0
Регистрация: 01.08.2010
Сообщений: 15

Вывести имена трех худших по баллу - C++

27.08.2010, 14:38. Просмотров 644. Ответов 6
Метки (Все метки)

Вот условие
На вход программе подаются сведения о сдаче экзаменов учениками 11-х классов некоторой средней школы. В первой строке сообщается количество учеников N, которое не меньше 10, но не превосходит 100, каждая из следующих N строк имеет следующий формат:

<Фамилия> <Имя> <оценки>,

где <Фамилия> – строка, состоящая не более чем из 20 символов, <Имя> – строка, состоящая не более чем из 15 символов, <оценки> – через пробел три целых числа, соответствующие оценкам по 100 бальной системе. <Фамилия> и <Имя>, а также <Имя> и <оценки> разделены одним пробелом. Пример входной строки:

Иванов Петр 55 65 73

Требуется написать как можно более эффективную программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет выводить на экран фамилии и имена трех худших по среднему баллу учеников. Если среди остальных есть ученики, набравшие тот же средний балл, что и один из трех худших, то следует вывести и их фамилии и имена.

Вот код

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
# include "iostream.h"
# include "math.h"
#include <fstream>
#include <tchar.h>
struct ege  {   char fam[20];
            char name[15];
            int o1;
            int o2;
            int o3;
            int sred;   };
using namespace std;
void main ()
{
    int i,n,min,s1,s2,s3;
    cout<<"Vvedite kolichestvo uchenikov"<<endl;
    cin>>n;
    s1=s2=s3=200;
    ege a[100];
    while (!(n>=10 && n<=100))
    {
        cout<<"Nepravilnii vvod. Chislo uchenikov dolzno bit' <100 i >10"<<endl;
    cout<<"Vvedite kolichestvo uchenikov"<<endl;
    cin>>n;
    }
        cout<<"Vvedite dannie Familia Name ball_1 ball_2 ball_3"<<endl;
        for (i=0;i<n;i++)
        {
            cin>>a[i].fam>>a[i].name>>a[i].o1>>a[i].o2>>a[i].o3;
            a[i].sred = (a[i].o1+a[i].o2+a[i].o3)/3;
        }
        cout<<endl<<"  Spisok uchenikov  "<<endl;
        for (i=0;i<n;i++)
        {
        if (a[i].sred<s1)
        {
            s3=s2;s2=s1;
            s1=a[i].sred;
                    }
            if (a[i].sred<s2)
            {
                s3=s2;
                s2=a[i].sred;       
            }   
                if (a[i].sred<s3)
                {
                    s3=a[i].sred;}              
                cout<<endl<<"--------------------"<<endl<<a[i].fam<<" "<<a[i].name<<" "<<a[i].o1<<" "<<a[i].o2<<" "<<a[i].o3<<"  Srednee znachenie  "<<a[i].sred<<endl<<endl;
 
        }   
 
cout<<"Hudshie srednie balli ege"<<endl;
cout<<s1<<" "<<s2<<" "<<s3<<endl;
for (i=0;i<n;i++)
{
    if (a[i].sred<=s3)
        cout<<endl<<a[i].fam<<" "<<a[i].name<<" "<<a[i].sred<<endl;
    
}
 
}
Проблема в том, что выводит только тех у кого минимальный средний балл. а 2-ой и 3-ий результаты не выводит. И все переменные s1,s2,s3 становятся одинаковые.
Помиогите, чувствую, что ошибка мелкая.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru