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

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

16.02.2014, 04:02. Показов 1212. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru