C++
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;
}