Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 3
Регистрация: 07.10.2013
Сообщений: 81

Найти и вывести информацию о победителе в каждой секции. Найти средний балл каждой секции.

16.02.2014, 04:02. Показов 1192. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, друзья)
Прошу помочь с кодом, а именно с функцией search_winner.
Совсем запутался, в общем нужна помощь..
Задание к коду:
Протоколы конкурса имеют такую инфу: фамилия, имя, адрес, секция и набранный балл конкурсантов. Найти и вывести инфу о победителе в каждой секции. Найти средний балл каждой секции.
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
#include <iostream>
#include <conio.h>
using namespace std;
 
const int SIZE = 20;//допустим 20
enum section{football=1,basketball,atlethism};
 
struct competition{
       char surname[10];
       char name[10];
       char adress[10];
       section Section; 
       int score;
}aza[SIZE];
 
int display(int i);
     
       
void input()
{
     int i;
     for(i=0; i<SIZE; i++)
     {
              
     cout<<"\nFamiliya: ";
     cin>>aza[i].surname;
     
     cout<<"\nImya: ";
     cin>>aza[i].name;
     
     cout<<"\nAdress: ";
     cin>>aza[i].adress;
     int sc;
     do
     cout<<"\nSekciya: ";
     while(sc<1||sc>3);
     aza[i].Section=(section)sc;
     cin.get();
     
     cout<<"\nScore: ";
     cin>>aza[i].score;
     }
}
 
 
void search_winner()
{
     int i,max1=0,max2=0,max3=0,max4=0,max5=0,max6=0;
     
     if(aza[i].Section=(section)1)//хочу получить инфу по секции футбол
     {
            for(i=0; i<SIZE; i++)
            {
                if(aza[i].score<max)//хочу найти максимальный балл и вывести инфу по победителю
                max1=i;
            }
                
                cout<<"Winner of the football section:\n";
                display(i);}
     
                    for (i=0; i<SIZE; i++)//хочу узнать средний балл по секции
                    {
                        max2+=aza[i].score;
                    }
                        cout<<"The average score is: "<<max2;
      
      if(aza[i].Section=(section)2)
      {
            for(i=0; i<SIZE; i++)
            {
                if(aza[i].score<max)
                max3=i;
            }
     
                cout<<"Winner of the basketball section:\n";
                display(i);
      }
                    for (i=0; i<SIZE; i++)
                    {
                        max4+=aza[i].score;
                    }
     
                    cout<<"The average score is: "<<max4;
      
     if(aza[i].Section=(section)3)
     {
            for(i=0; i<SIZE; i++)
            {
                if(aza[i].score<max)
                max5=i;
            }
      
            cout<<"Winner of the athletism section:\n";
            display(i);
     }
            for (i=0; i<SIZE; i++)
            {
                max6+=aza[i].score;}
                cout<<"The average score is: "<<max6;
}            
 
 
int display(int i)
{
              cout<<aza[i].surname<<"\n";
              cout<<aza[i].name<<"\n";
              
              cout<<aza[i].adress<<"\n";
              cout<<aza[i].score<<"\n";
              
              cout<<"*************************"<<"\n";
              return 0;
}
 
int main()
{   
    input();
    cout<<"\nResults: \n";
    cout<<"************************\n";
    search_winner();
    getch();
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.02.2014, 04:02
Ответы с готовыми решениями:

Структуры. Вывести информацию по победителю в каждой секции и найти средний бал по каждой секции
Ведомости про участников конкурса содержат следующую информацию: фамилию,имя,секцию,набранный балл.Вывести информацию по победителю в...

Найти адрес начала и конца (для каждой секции), чтобы можно было произвести чтение/запись
в структуре IMAGE_SECTION_HEADER есть такое поле: PointerToRawData, в котором находится RVA начала секции. Но если файл загружается не...

Вычислить средний балл в каждой группе студентов и определить, какая группа имеет наибольший средний балл
две группы студентов (1-ая -13 человек, 2-ая - 8 человек) сдают экзамен по информатике. Написать программу, вычисляющую, средний балл в...

5
 Аватар для Ded_Vasilij
233 / 215 / 63
Регистрация: 01.09.2012
Сообщений: 2,103
16.02.2014, 08:42
Цитата Сообщение от aimbat Посмотреть сообщение
C++
1
2
3
4
5
for(i=0; i<SIZE; i++)
   {
      if(aza[i].score<max)//хочу найти максимальный балл и вывести инфу по победителю
         max1=i;
    }
Честно - не понял что Вы хотите здесь сделать.
0
 Аватар для stikkas
20 / 20 / 8
Регистрация: 26.01.2014
Сообщений: 56
16.02.2014, 10:19
во-первых для записи в массив символов правильней использовать
cin.getline(arr, size_of_array)

для подсчета очков в секции и кол-во участников можно использовать следующее:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
struct Section {
  int numbers;
  int score;
  float average() {
    return float(score) / numbers;
}
};
 
Section getScoresOfSection(competition arr[], int size, section tip) {
 Section sec = {0, 0};
 
for (int i = 0; i < size; ++i)
 {
   if (arr[i].Section == tip) {
      sec.numbers++;
      sec.score += arr[i].score;
   }
 }
return sec;
}
Для нахождения победителя в каждой секции можно использовать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
competition getWinner(competition arr[], int size, section tip) {
   competition winner;
   bool found = false;
 for (int i = 0; i < size; ++i) {
    if (arr[i].Section == tip) {
        if (!found) {
          winner = arr[i];
          found = true;
        }
        else if (arr[i].score > winner.score)
          winner = arr[i];
   }
}
if (!found)
 throw "Winner not found";
return winner;
}
0
0 / 0 / 3
Регистрация: 07.10.2013
Сообщений: 81
16.02.2014, 19:49  [ТС]
stikkas
Подставил, скомпилировало, но виснет(
В чем проблема не подскажешь?
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
#include <iostream>
#include <conio.h>
using namespace std;
 
const int SIZE = 3;
enum section{football=1,basketball,atlethism};
 
struct competition{
       char surname[10];
       char name[10];
       char adress[10];
       section Section; 
       int score;
}aza[SIZE];
 
int display(int i);
     
       
void input(competition arr[], int SIZE)
{
     int i;
     for(i=0; i<SIZE; i++)
     {
              
     cout<<"Surname: \n";
     cin>>aza[i].surname;
     
     cout<<"Name: \n";
     cin>>aza[i].name;
     
     cout<<"Adress: \n";
     cin>>aza[i].adress;
     int sc;
     do{
      cout<<"Section: \n";
      cin>>sc;} while(sc<1||sc>3);
     aza[i].Section=(section)sc;
     cin.get();
     
     cout<<"Score: \n";
     cin>>aza[i].score;
     }
}
 
struct Section 
{
  int number;
  int score;
  float average() 
{
    return float(score) / number;
}
};
 
 
Section getScoresOfSection(competition arr[], int SIZE, section tip)
{
        Section sec = {0, 0};
 
for (int i = 0; i < SIZE; i++)
 {
   if (arr[i].Section == tip) 
   {
      sec.number++;
      sec.score += arr[i].score;
   }
 }
      return sec;
}
 
 
competition getWinner(competition arr[], int SIZE, section tip) 
{
   competition winner;
   bool found = false;
 for (int i = 0; i < SIZE; i++) 
 {
    if (arr[i].Section == tip) 
    {
        if (!found) {
          winner = arr[i];
          found = true;
        }
        else if (arr[i].score > winner.score)
          winner = arr[i];
   }
}
          if (!found)
          throw "Winner not found";
          return winner;
}         
 
 
int display(int i)
{
              cout<<aza[i].surname<<"\n";
              cout<<aza[i].name<<"\n";
              
              cout<<aza[i].adress<<"\n";
              cout<<aza[i].score<<"\n";
              
              cout<<"*************************"<<"\n";
              return 0;
}
 
int main()
{   
    competition *arr;
    int i;
    section tip;
    input(arr,SIZE);
    cout<<"\nResults: \n";
    cout<<"************************\n";
    getScoresOfSection(arr,SIZE,tip);
    getWinner(arr,SIZE,tip);
    getch();
}
0
 Аватар для stikkas
20 / 20 / 8
Регистрация: 26.01.2014
Сообщений: 56
17.02.2014, 09:03
Цитата Сообщение от aimbat Посмотреть сообщение
competition *arr;
для начало измени на это
C++
1
competition arr[SIZE]
Цитата Сообщение от aimbat Посмотреть сообщение
int i;
что это тут делает?
Цитата Сообщение от aimbat Посмотреть сообщение
aza[SIZE];
это убрать оставить только ;
Цитата Сообщение от aimbat Посмотреть сообщение
void input(competition arr[], int SIZE) { int i; for(i=0; i<SIZE; i++) { cout<<"Surname: \n"; cin>>aza[i].surname; cout<<"Name: \n"; cin>>aza[i].name; cout<<"Adress: \n"; cin>>aza[i].adress; int sc; do{ cout<<"Section: \n"; cin>>sc;} while(sc<1||sc>3); aza[i].Section=(section)sc; cin.get(); cout<<"Score: \n"; cin>>aza[i].score; } }
поменять aza на arr (для чего тогда вообще передовать arr?)
Пользоваться глобальными переменными в C++ - плохой тон.
Цитата Сообщение от aimbat Посмотреть сообщение
getScoresOfSection(arr,SIZE,tip); getWinner(arr,SIZE,tip);
перед вызовом этих функций не плохо бы инициализировать tip (неплохо читай как обязательно)
Цитата Сообщение от aimbat Посмотреть сообщение
competition getWinner(competition arr[], int SIZE, section tip)
Вызов этой функции заключить в try - catch (на случай если в секции которую смотришь нет участников)
0
0 / 0 / 3
Регистрация: 07.10.2013
Сообщений: 81
21.02.2014, 03:32  [ТС]
а как tip инициализировать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.02.2014, 03:32
Помогаю со студенческими работами здесь

Отдельное меню для каждой секции на сайте FullPage
Добрый день! Имеется сайт, построенный на теме the7 с использованием плагина FullPage for Visual Composer. Для главной страницы сайта...

Вывести средний балл по каждой группе и расположить студентов в порядке уменьшения среднего бала
есть группы студентов по номерам - 1,2,3,4,5. Пусть в каждой группе учится по 20 студентов, каждый сдаёт по 3 экзамена. нужно вывести...

Вывести на экран названия экзаменационных дисциплин и средний балл за экзамен по каждой из дисциплин
Тема Комбинированный тип. задание Вывести на экран названия экзаменационных дисциплин и средний балл за экзамен по каждой из дисциплин.

Вывести на экран средний балл для каждого ученика и для каждой школы
Pascal ABC Тема Записи Файл содержит сведения: фамилию, имя ученика, номер школы, оценки(несколько). Вывести на экран средний балл для...

Может ли быть в секции еще секции?
Добрый времени суток. Я самообучаюсь верстке, поэтому у меня к вам такие простые и странные вопросы. Верстаю с бутстрапом. Есть...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru