Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 19.11.2018
Сообщений: 4
1

Массив: Вывести фамилии спортсменов и их результаты в сумме в порядке занятых мест

15.01.2019, 10:08. Показов 1734. Ответов 6
Метки нет (Все метки)

В соревнованиях по десятиборью участвуют N спортсменов. Известны результаты в баллах по каждому из видов. Вывести фамилии спортсменов и их результаты в сумме в порядке занятых мест

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
int main()
{
    srand(time(0));
    setlocale(LC_ALL, "Russian");
    const int MAX = 50, round = 10;
    const float Mball = 10;
    char name[MAX][20];
    int N;
    do {
        printf("Введите количество спортсменов: ");
        scanf("%d", &N);
    } while (N<2);
    float res[MAX][round];
    int i, j; //i-номер раунда; j-номер спортсмена;
    for (i = 0; i < N; i++)
    {
        printf("Ведите фамилию %d спортсмена: ", i + 1);
        scanf_s("%s", &name[i], 20);
        for (j = 0; j < round; j++)
        {
            printf("Введите результаты %d раунда ", j + 1);
            scanf("%d", &res[i][j]);
        }
    }
 
    system("pause");
    return 0;
}
Понимаю, что типы данных уже с косяками. Подскажите, пожалуйста, как правильно
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2019, 10:08
Ответы с готовыми решениями:

Напечатайте фамилии участников и их результаты в порядке занятых ими мест
Составьте с использованием вспомогательных процедур и функций программу для решения одной из...

Результаты вывести в виде таблицы с заголовком в порядке занятых мест
Результаты соревнований по прыжкам в длину определяются по сумме двух попыток. В протоколе для...

Расположите записи в порядке занятых спортсменами мест
массив записей содержит фамилии учасников соревнования по прыжкам в длину и результаты трех...

Заполнить двумерный массив номерами мест, подсчитать количество мест у окон и вывести на экран схему мест
В автобусе 6 рядов кресел по 4 места в каждом ряду. Чётные номера находятся у окон.Необходимо...

6
1553 / 795 / 327
Регистрация: 11.10.2018
Сообщений: 4,176
15.01.2019, 10:13 2
Тэги кода ставьте - надоело уже писать!!!!!!!!
0
0 / 0 / 0
Регистрация: 19.11.2018
Сообщений: 4
15.01.2019, 10:21  [ТС] 3
я премного извиняюсь, но Вы про табуляцию или про метки?)
0
590 / 398 / 148
Регистрация: 11.01.2019
Сообщений: 1,649
15.01.2019, 11:37 4
Цитата Сообщение от Sternwind Посмотреть сообщение
я премного извиняюсь, но Вы про табуляцию или про метки?)
Для вставки кода нажмите "С++". Появятся открывающий и закрывающий тэги, между которыми и нужно вставить код.

PS: Вам написать, как учат в универах, или на нормальном С++? ))
2
0 / 0 / 0
Регистрация: 19.11.2018
Сообщений: 4
15.01.2019, 13:16  [ТС] 5
спасибо, больше не допущу такой оплошности)
в универах)
на самом деле мне главное понять, а не стыбзить. поэтому достаточно даже простого объяснения кода/описания алгоритма
тут как Вам удобнее

Добавлено через 5 минут
Цитата Сообщение от Sternwind Посмотреть сообщение
/*В соревнованиях по десятиборью участвуют N спортсменов.
Известны результаты в баллах по каждому из видов. Вывести фамилии
спортсменов и их результаты в сумме в порядке занятых мест*/

int main()
{
srand(time(0));
setlocale(LC_ALL, "Russian");
const int MAX = 50, round = 10;
const float Mball = 10;
char name[MAX][20];
int N;
do {
printf("Введите количество спортсменов: ");
scanf("%d", &N);
} while (N<2);
float res[MAX][round];
int i, j; //i-номер раунда; j-номер спортсмена;
for (i = 0; i < N; i++)
{
printf("Ведите фамилию %d спортсмена: ", i + 1);
scanf_s("%s", &name[i], 20);
for (j = 0; j < round; j++)
{
printf("Введите результаты %d раунда ", j + 1);
scanf("%d", &res[i][j]);
}
}

system("pause");
return 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
/*В соревнованиях по десятиборью участвуют N спортсменов.
Известны результаты в баллах по каждому из видов. Вывести фамилии
спортсменов и их результаты в сумме в порядке занятых мест*/
 
#include "stdafx.h"
#include <iostream>
#include "stdio.h"
#include <time.h>
 
using namespace std;
 
 
int main()
{
    srand(time(0));
    setlocale(LC_ALL, "Russian");
    const int MAX = 50, round = 10;
    const float Mball = 10;
    char name[MAX][20]
        ;
    int N;
    do {
        printf("Введите количество спортсменов: ");
        scanf("%d", &N);
    } while (N<2);
    float res[MAX][round];
    int i, j; //i-number of the round; j-номер спортсмена;
    for (i = 0; i < N; i++)
    {
        printf("Ведите фамилию %d спортсмена: ", i + 1);
        scanf_s("%s", &name[i], 20);
        for (j = 0; j < round; j++)
        {
            printf("Введите результаты %d раунда ", j + 1);
            scanf("%d", &res[i][j]);
        }
    }
 
    system("pause");
    return 0;
}
0
590 / 398 / 148
Регистрация: 11.01.2019
Сообщений: 1,649
15.01.2019, 22:09 6
В общем, старался делать "как учат в универсах на С++ Builder 6.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
using namespace std;
 
typedef struct sportsman_info_t {
    char name[20];
    unsigned short points[10];
    unsigned sum;
} sportsman_info_tag;
 
unsigned sum_points(const sportsman_info_t & sportsman) {
    unsigned sum = 0;
    for (unsigned i = 0; i < 10; ++i) sum += sportsman.points[i];
    return sum;
}
 
bool comparator(const sportsman_info_t & sportsman_1, const sportsman_info_t & sportsman_2) {
    return sum_points(sportsman_1) > sum_points(sportsman_2);
}
 
int main() {
 
    sportsman_info_t results[10]{ 
        {"Иванов", {6,6,7,8,8,7,8,7,10,9}}, {"Петров", {7,6,7,7,8,9,8,7,6,7}}, 
        {"Сидоров", {6,6,7,8,6,7,8,9,6,9}}, {"Николаев", {7,6,9,7,8,6,8,7,6,8}},
        {"Сидоренко", {6,6,7,6,6,5,8,6,6,9}}, {"Заболотин", {7,6,9,7,6,10,6,7,6,7}},
        {"Прокопов", {6,8,7,6,9,7,8,6,9,9}}, {"Федоров", {7,6,6,7,9,6,6,7,6,7}},
        {"Дымов", {6,8,5,6,9,8,8,9,9,9}}, {"Федоров", {7,6,10,7,8,6,6,7,7,7}}
    };
 
    sort(begin(results), end(results), comparator);
 
    setlocale(LC_ALL, "Russian");
    for (unsigned i = 0; i < 10; ++i) 
        cout << results[i].name << ": " << sum_points(results[i]) << endl;
 
    return 0;
}
1
0 / 0 / 0
Регистрация: 19.11.2018
Сообщений: 4
15.01.2019, 22:17  [ТС] 7
Цитата Сообщение от jugu Посмотреть сообщение
В общем, старался делать "как учат в универсах на С++ Builder 6.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
using namespace std;
 
typedef struct sportsman_info_t {
    char name[20];
    unsigned short points[10];
    unsigned sum;
} sportsman_info_tag;
 
unsigned sum_points(const sportsman_info_t & sportsman) {
    unsigned sum = 0;
    for (unsigned i = 0; i < 10; ++i) sum += sportsman.points[i];
    return sum;
}
 
bool comparator(const sportsman_info_t & sportsman_1, const sportsman_info_t & sportsman_2) {
    return sum_points(sportsman_1) > sum_points(sportsman_2);
}
 
int main() {
 
    sportsman_info_t results[10]{ 
        {"Иванов", {6,6,7,8,8,7,8,7,10,9}}, {"Петров", {7,6,7,7,8,9,8,7,6,7}}, 
        {"Сидоров", {6,6,7,8,6,7,8,9,6,9}}, {"Николаев", {7,6,9,7,8,6,8,7,6,8}},
        {"Сидоренко", {6,6,7,6,6,5,8,6,6,9}}, {"Заболотин", {7,6,9,7,6,10,6,7,6,7}},
        {"Прокопов", {6,8,7,6,9,7,8,6,9,9}}, {"Федоров", {7,6,6,7,9,6,6,7,6,7}},
        {"Дымов", {6,8,5,6,9,8,8,9,9,9}}, {"Федоров", {7,6,10,7,8,6,6,7,7,7}}
    };
 
    sort(begin(results), end(results), comparator);
 
    setlocale(LC_ALL, "Russian");
    for (unsigned i = 0; i < 10; ++i) 
        cout << results[i].name << ": " << sum_points(results[i]) << endl;
 
    return 0;
}
Спасибо, к концу дня уже понимаю что к чему)
Сейчас дальше разбираться буду с помощью Вашего кода, спасибо еще раз огромное!)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2019, 22:17

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Вывести все результаты спортсменов, и конечно кто занял 1, 2 и 3 место
В соревнованиях, принимают участие 5 участников. Каждый из них, прыгает по 3 раза. Имена ввести в...

Рассортировать массив в алфавитном порядке и вывести фамилии всех президентов
Исходные данные считать из созданного текстового файлу Составить массив из 5 записей следующей...

Подсчитать количество занятых мест
Как подсчитать количество занятых мест? Имеется dbEdit1 в котором указана вместимость. dbEdit2...

Отсортировать аудитории по убыванию процента занятых мест
Друзья, возникла проблема с программой. А именно с поиском и сортировкой. 11 вариант Если не...


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

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

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