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

Определить количество участников состязаний, которые разделили первое место

22.11.2017, 15:18. Показов 3665. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Если в условиях задачи сказано "Дан двумерный массив", то программа получает на вход два числа n и m, являющиеся числом строк и столбцов в массиве. Далее во входном потоке идет n строк по m чисел, являющиеся элементами массива. Если в условиях задачи сказано "Дан квадратный массив", то в первой строке входных данных содержится только одно число n, далее идет n строк по n чисел в каждой.

Массивы должны быть динамическими!!!!

Состязания. Если перенумеровать спортсменов числами от 0 до n-1, а попытки каждого из них – от 0 до m-1, то на вход программа получает массив int A[n][m], состоящий из неотрицательных чисел.

Будем считать, что победитель определяется по лучшему результату. Определите количество участников состязаний, которые разделили первое место, то есть определите количество строк в массиве, которые содержат значение, равное наибольшему. На экран выведите еще и номера спортсменов, разделивших первое место. Сначала программа выводит количество спортсменов, показавших наилучший результат, затем – их номера в порядке возрастания.

Вход Выход
4 3 2
1 2 3 1 2
4 5 6
6 2 5
2 3 4
Не забудьте, что все строки и столбцы нумеруются с 0.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.11.2017, 15:18
Ответы с готовыми решениями:

Определите количество участников состязаний, которые разделили первое место
Состязания. Если перенумеровать спортсменов числами от 0 до n-1, а попытки каждого из них – от 0 до m-1, то на вход программа получает...

Определите количество участников, а так же самих участников состязаний, которые разделили первое место
В метании молота состязается n спортcменов. Каждый из них сделал m бросков. Победитель определяется по лучшему результату. Определите...

Определить количество студентов занявших первое место в летнем виде спорта
Имя входного файла: z1271.in Имя выходного файла: z1271.out Про студентов даны сведения фамилия, курс, спортивное хобби – зимнее и...

4
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
22.11.2017, 16:32
Лучший ответ Сообщение было отмечено FlyPetty как решение

Решение

FlyPetty, здравствуйте! Вот решение:

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
#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
    int N, M, max = 0, k, best;
    cout << "Enter a number of sportsmen:" << "\n";
    cout << "N = ";
    cin >> N;
    cout << "Enter a number of each sportsman's attempts:" << "\n";
    cout << "M = ";
    cin >> M;
    int** A = new int*[N];
    for (int i = 0; i < N; i++)
    {
        A[i] = new int[M];
    }
    int* num = new int[N];
    cout << "Enter a matrix info:" << "\n";
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            cin >> A[i][j];
            if (A[i][j] > max)
                max = A[i][j];
        }
    }
    k = 0;
    for (int i = 0; i < N; i++)
    {
        best = 0;
        for (int j = 0; j < M; j++)
        {
            if (A[i][j] == max)
            {
                best++;
            }
        }
        if (best)
            num[k++] = i + 1;
    }
    cout << "The quantity of winners: " << k << "\n";
    cout << "The winners numbers: ";
    for (int i = 0; i < k; i++)
    {
        cout << num[i] << " ";
    }
    for (int i = 0; i < N; i++)
    {
        delete [] A[i];
    }
    delete [] A;
    delete [] num;
    cin.get();
    return 0;
}
1
0 / 0 / 0
Регистрация: 12.11.2017
Сообщений: 72
22.11.2017, 16:38  [ТС]
Здравствуйте!Опять же,если вас не затруднит,напишите комментарии,как работает программа,буду благодарен!
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
22.11.2017, 17:31
FlyPetty, вот программа с комментариями:

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
#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
    int N, M, max = 0, k, best;
    cout << "Enter a number of sportsmen:" << "\n";
    cout << "N = ";
    cin >> N; //Вводим количество спортсменов
    cout << "Enter a number of each sportsman's attempts:" << "\n";
    cout << "M = ";
    cin >> M; //Вводим количество попыток для каждого из спортсменов
    int** A = new int*[N]; //Формируем матрицу указанного размера (количество спортсменов и их попытки)
    for (int i = 0; i < N; i++)
    {
        A[i] = new int[M];
    }
    int* num = new int[N]; //Объявляем массив, который будет хранить номера победителей
    cout << "Enter a matrix info:" << "\n";
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            cin >> A[i][j]; //Вводим элементы матрицы
            if (A[i][j] > max)
                max = A[i][j]; //Находим максимальный элемент (наилучший результат)
        }
    }
    k = 0; //Объявляем счетчик, который орпеделяет количество (позицию) строк с наилучшим результатом
    for (int i = 0; i < N; i++)
    {
        best = 0; //Счетчик, который определяет количество лучших попыток для каждой строки (каждого спортсмена)
        for (int j = 0; j < M; j++)
        {
            if (A[i][j] == max)
            {
                best++; //Подсчитываем количество лучших попыток для каждого спортсмена (каждой строки)
            }
        }
        if (best) 
            num[k++] = i + 1; //Если количество лучших попыток больше нуля, заносим в массив номер строки (спортсмена)
    }
    cout << "The quantity of winners: " << k << "\n"; //Выводим количество спортсменов с наилучшим результатом
    cout << "The winners numbers: ";
    for (int i = 0; i < k; i++)
    {
        cout << num[i] << " "; //Выводим номера строк (спортсменов) с наилучшим результатом (по возрастанию)
    }
    for (int i = 0; i < N; i++) //Освобождаем память, выделенную под матрицу
    {
        delete [] A[i];
    }
    delete [] A;
    delete [] num; //Освобождаем память, выделенную под одномерный массив
    cin.get();
    return 0;
}
P.S. Кстати, для этой задачи можно (и даже лучше) использовать флаг вместо переменной best. Вот эта же программа с использованием флага:

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
#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
    int N, M, max = 0, k;
    bool flag;
    cout << "Enter a number of sportsmen:" << "\n";
    cout << "N = ";
    cin >> N; //Вводим количество спортсменов
    cout << "Enter a number of each sportsman's attempts:" << "\n";
    cout << "M = ";
    cin >> M; //Вводим количество попыток для каждого из спортсменов
    int** A = new int*[N]; //Формируем матрицу указанного размера (количество спортсменов и их попытки)
    for (int i = 0; i < N; i++)
    {
        A[i] = new int[M];
    }
    int* num = new int[N]; //Объявляем массив, который будет хранить номера победителей
    cout << "Enter a matrix info:" << "\n";
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            cin >> A[i][j]; //Вводим элементы матрицы
            if (A[i][j] > max)
                max = A[i][j]; //Находим максимальный элемент (наилучший результат)
        }
    }
    k = 0; //Объявляем счетчик, который орпеделяет количество (позицию) строк с наилучшим результатом
    for (int i = 0; i < N; i++)
    {
        flag = false; //Начальное значение для флага false (предполагается, что лучших попыток пока не было)
        for (int j = 0; j < M; j++)
        {
            if (A[i][j] == max)
            {
                flag = true; //Значение флага равно true (по крайней мере одна лучшая попытка была)
            }
        }
        if (flag) 
            num[k++] = i + 1; //Если были лучшие попытки, заносим в массив номер строки (спортсмена)
    }
    cout << "The quantity of winners: " << k << "\n"; //Выводим количество спортсменов с наилучшим результатом
    cout << "The winners numbers: ";
    for (int i = 0; i < k; i++)
    {
        cout << num[i] << " "; //Выводим номера строк (спортсменов) с наилучшим результатом (по возрастанию)
    }
    for (int i = 0; i < N; i++) //Освобождаем память, выделенную под матрицу
    {
        delete [] A[i];
    }
    delete [] A;
    delete [] num; //Освобождаем память, выделенную под одномерный массив
    cin.get();
    return 0;
}
0
0 / 0 / 0
Регистрация: 12.11.2017
Сообщений: 72
22.11.2017, 18:16  [ТС]
Еще при запуске программы пишет что cout: необъявленный идентификатор,начиная с первого и до последнего.
"error C2065: cout: необъявленный идентификатор"

Добавлено через 42 минуты
Все,решил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.11.2017, 18:16
Помогаю со студенческими работами здесь

Если можно создать команды с равным количеством участников, то необходимо вывести количество участников в одно
Для проведения игр и различных конкурсов на площади в честь празднования Наурыз организуют команды среди подростков с равным количеством...

Определить количество участников шахматного турнира
Сколько участников в шахматном турнире, если известно, что каждый участник сыграл с каждым из остальных, а всего было сыграно 210 партий?...

Определить, кто занял первое место и стал лучшим по наименьшему остатку цифр (Excel)
Нужно определить победителя на первое место по наибольшим в одной таблице и наименьшим цифрам, соответственно рядом стоящей ниже есть...

В предложении из n слов первое слово поставить на место второго, второе - на место третьего, и т.д.
В предложении из n слов первое слово поставить на место второго, второе - на место третьего, и т.д., (n-е слово - на место n-го, n-е слово...

Определить среднее количество участников олимпиады из одной школы
На вход программе подаются сведения о номерах школ учащихся, участвовавших в олимпиаде. В первой строке сообщается количество учащихся N....


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru