
Помогите решить задачу на C++ Дан целочисленный массив из 30 элементов. Элементы массива могут
принимать произвольныецелые значения. Напишите программу, которая находит и выводит номера двух элементов массива, сумма которых минимальна.

Ответы на вопрос

Ответ:
Объяснение:
// Example program
#include <iostream>
#include <string>
int main()
{
int k[30];
for(int i = 0; i < 30; i ++) //заполняем случайными числами
k[i] = rand();
int min_sum = 999999999;
int num1, num2;
for(int i = 0; i < (30 - 1); i ++) //цикл поиска, i меняется от начала
//до предпоследнего элемента, чтобы не выйти
//за пределы при обращении к i + 1 элементу
{
int sum = k[i] + k[i+1];//очередная сумма
if(sum < min_sum) //сравниваем ее с текущим минимумом
{//если она меньше, то
min_sum = sum;//обновляем текущую сумму
num1 = i; num2 = i + 1;//обновляем номер
}
}
//на выходе из цикла в min_sum и num1 и num2 имеем самые минимальные номера
std::cout << "min_sum = " << min_sum << " nomer1 = " << num1 <<" nomer2 = " << num2;
}





Конечно, вот пример программы на C++, которая решает данную задачу:
cpp#include <iostream>
#include <climits>
int main() {
const int size = 30;
int array[size];
// Ввод элементов массива
std::cout << "Введите " << size << " элементов массива:\n";
for (int i = 0; i < size; ++i) {
std::cin >> array[i];
}
int minSum = INT_MAX;
int index1, index2;
// Поиск пары элементов с минимальной суммой
for (int i = 0; i < size - 1; ++i) {
for (int j = i + 1; j < size; ++j) {
int currentSum = array[i] + array[j];
if (currentSum < minSum) {
minSum = currentSum;
index1 = i;
index2 = j;
}
}
}
// Вывод результатов
std::cout << "Номера элементов с минимальной суммой: " << index1 << " и " << index2 << std::endl;
std::cout << "Значения элементов: " << array[index1] << " и " << array[index2] << std::endl;
return 0;
}
Программа сначала запрашивает у пользователя ввод 30 элементов массива, затем проходится по всем парам элементов, вычисляя их сумму и сравнивая с текущей минимальной суммой. Если находится пара элементов с меньшей суммой, обновляются значения минимальной суммы и индексов элементов.
На выходе программа выведет номера элементов и их значения, которые имеют минимальную сумму.



Конечно, вот пример программы на C++, которая решает данную задачу:
cpp#include <iostream>
#include <climits>
int main() {
const int size = 30;
int array[size];
// Ввод элементов массива
std::cout << "Введите " << size << " элементов массива:\n";
for (int i = 0; i < size; ++i) {
std::cin >> array[i];
}
int minSum = INT_MAX; // Изначально задаем максимальное значение для сравнения
int index1, index2;
// Перебираем все пары элементов и находим пару с минимальной суммой
for (int i = 0; i < size - 1; ++i) {
for (int j = i + 1; j < size; ++j) {
int currentSum = array[i] + array[j];
if (currentSum < minSum) {
minSum = currentSum;
index1 = i;
index2 = j;
}
}
}
// Вывод результатов
std::cout << "Номера элементов с минимальной суммой: " << index1 << " и " << index2 << std::endl;
return 0;
}
Эта программа создает массив из 30 элементов, позволяет пользователю ввести значения элементов и затем находит и выводит индексы двух элементов с минимальной суммой.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili