Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
aimbat
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 81
#1

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

16.02.2014, 04:02. Просмотров 411. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2014, 04:02
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти и вывести информацию о победителе в каждой секции. Найти средний балл каждой секции. (C++):

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

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

Вывести средний балл каждого студента и общий средний балл группы - C++
Здравствуйте. Помогите понять, в чем ошибка. Программа не выводит нормально средний бал каждого студента по трем предметам и общий средний...

7.Дан список студентов. Общие поля: Ф.И.О., дата рождения, группа, средний балл. Если средний балл 4 и выше, то указать размер стипендии. Если средний - C++
#include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;clocale&gt; int main() { setlocale(0,&quot;Rus&quot;); static char res; int...

Найти средний балл - C++
помогите прошу надо найти средний балл города минск только на С++

В каждой строке найти минимальный элемент, затем среди них найти максимальное и вывести на экран индекс этого элемента - C++
Здравствуйте! Помогите, пожалуйста, с задачей: В двумерном массиве все числа различны. В каждой строке найти минимальный элемент, затем...

5
Ded_Vasilij
232 / 214 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
16.02.2014, 08:42 #2
Цитата Сообщение от aimbat Посмотреть сообщение
C++
1
2
3
4
5
for(i=0; i<SIZE; i++)
   {
      if(aza[i].score<max)//хочу найти максимальный балл и вывести инфу по победителю
         max1=i;
    }
Честно - не понял что Вы хотите здесь сделать.
0
stikkas
19 / 19 / 6
Регистрация: 26.01.2014
Сообщений: 56
16.02.2014, 10:19 #3
во-первых для записи в массив символов правильней использовать
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
aimbat
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 81
16.02.2014, 19:49  [ТС] #4
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
19 / 19 / 6
Регистрация: 26.01.2014
Сообщений: 56
17.02.2014, 09:03 #5
Цитата Сообщение от 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
aimbat
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 81
21.02.2014, 03:32  [ТС] #6
а как tip инициализировать?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2014, 03:32
Привет! Вот еще темы с ответами:

Вычислить средний балл оценок каждого студента и напечатать их фамилии и средний балл (объединение (union)) - C++
Дан список студентов. Общие поля: Ф.И.О., дата рождения, группа, средний балл. Вычислить средний балл оценок каждого студента и напечатать...

Вычислить средний балл оценок каждого студента и напечатать их фамилии и средний балл - C++
Вычислить средний балл оценок каждого студента и напечатать их фамилии и средний балл.

найти средний балл студента по заданной фамилии - C++
Первую часть задания сделал Осталось это &quot;найти средний балл студента с введенной фамилией&quot; #include &lt;stdio.h&gt; #include...

Найти студентов имеющих средний балл больше заданного - C++
Доброго времени суток! Необходимо решить задание 2мя способами. С помощью классов и с помощью switch Вывести фамилии, имена, отчества...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru