Предмет: Информатика, автор: Andrekol

C++
1) Заполнить массив случайными числами и найти два максимальных элемента массива и их номера.
2) Введите массив с клавиатуры и найдите (за один проход) количество элементов, имеющих максимальное значение.


Шист: Вопрос на счёт 1-ого пункта. Что если будет три одинаковых и при том максимальных элемента в массиве, какие два из трёх тогда вывести? Вопрос на счёт номеров, они идут начиная с нуля (как индексы), или же начиная с единицы?

Ответы

Автор ответа: Шист
2

Ответ:

Исходные коды программ я прикреплю в файлах: 1) task_1.cpp, 2) task_2.cpp, а также снизу в виде текста.

Объяснение:

В качестве демонстрации работы этих программ я прикреплю также два скриншота работы обоих скриптов: 1) скриншот работы task_1.cpp, 2) скриншот работы task_2.cpp.

На всякий случай, оставлю и на этой странице в том числе исходные коды программ.

Исходный код 1-ого задания:

#include <iostream>

#include <string>

#include <random>

using namespace std;

int main()

{

// Русский язык

setlocale(LC_ALL, "Rus");

// Для генерациия случайных чисел

random_device generator;

uniform_int_distribution<int> rand_num(-1000, 1000);

// Количество элементо в массиве

int N = 0;

cout << "Введите количество элементов массива: ";

cin >> N;

// Выделение памяти под массив с элементами

int* arr = new int[N];

// Самый первый по величине элемент

int first_biggest_num = INT_MIN;

// Номер самого первого по величине элемента

int first_biggest_num_ind = -1;

// Второй по величине элемент

int second_biggest_num = INT_MIN;

// Номер самого второго по величине элемента

int second_biggest_num_ind = -1;

// Заполнение массива случайными элементами

for (int i = 0; i < N; i++)

{

 // Заполнение случайным элементом

 arr[i] = rand_num(generator);

 if (arr[i] > first_biggest_num)

 { // Если очередной элемент больше текущего самого большого...

  second_biggest_num = first_biggest_num;

  second_biggest_num_ind = first_biggest_num_ind;

  first_biggest_num = arr[i];

  first_biggest_num_ind = i + 1;

 }

 else if (arr[i] > second_biggest_num)

 { // Если очередной элемент не больше текущего самого большого, но больше второго по величине...

  second_biggest_num = arr[i];

  second_biggest_num_ind = i + 1;

 }

}

// Вывод элементов массива

cout << "Элементы сгенерированного массива:" << endl;

for (int i = 0; i < N; i++)

{

 cout << arr[i] << endl;

}

// Вывод информации о двух самых больших элементах и их номерах

cout << "Первый по величине элемент в массиве: " << first_biggest_num << endl;

cout << "Номер первого по величине элемента в массиве: " << first_biggest_num_ind << endl;

cout << "Второй по величине элемент в массиве: " << second_biggest_num << endl;

cout << "Номер второго по величине элемента в массиве: " << second_biggest_num_ind << endl;

// Очищаем память, которую выделяли для массива

delete[] arr;

// Возвращаем 0, чтобы дать знать, программа отработала корректно, раз дошла до этого момента

return 0;

}

Исходный код 2-ого задания:

#include <iostream>

#include <string>

using namespace std;

int main()

{

// Русский язык

setlocale(LC_ALL, "Rus");

// Количество элементо в массиве

int N = 0;

cout << "Введите количество элементов массива: ";

cin >> N;

// Выделение памяти под массив с элементами

int* arr = new int[N];

// Самое большое значение среди элементов

int max_num = INT_MIN;

// Кличество элементов с самым большим значением

int max_nums_amount = 0;

// Заполнение массива случайными элементами

for (int i = 0; i < N; i++)

{

 cout << "Введите " << (i + 1) << "-й элемент массива: ";

 // Заполнение элементов массива с консоли

 cin >> arr[i];

 // Если очередной элемент массива больше максимального, то...

 if (arr[i] > max_num)

 { // Запоминаем новое максимальное значение, а также ставим счётчик количества на единицу

  max_num = arr[i];

  max_nums_amount = 1;

 }

 else if (arr[i] == max_num)

 { // Если же равен максимальному, то приплюсовываем к счётчику количества ещё один элемент

  max_nums_amount++;

 }

}

// Вывод элементов массива

cout << "Элементы сгенерированного массива:" << endl;

for (int i = 0; i < N; i++)

{

 cout << arr[i] << endl;

}

// Вывод информации о самом большом значении и количестве элементов с этим значением

cout << "Самое большое значение в массиве: " << max_num << endl;

cout << "Количество элементов с максимальным значением: " << max_nums_amount << endl;

// Очищаем память, которую выделяли для массива

delete[] arr;

// Возвращаем 0, чтобы дать знать, программа отработала корректно, раз дошла до этого момента

return 0;

}

Приложения:
Похожие вопросы
Предмет: Математика, автор: Аноним