Главная » Дан массив. Cумма которых минимальна
21:56

Дан массив. Cумма которых минимальна


Задание:

Дан целочисленный массив из 30 элементов. Элементы массива могут принимать произвольные целые значения. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит номера двух элементов массива, сумма которых минимальна. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.

Паскаль

Естественный язык

const N=30; 
var a: array [1..N] of integer; 
    i, j, min, min2, s: integer; 
begin
  for i:=1 to N do readln(a[i]); 
  ...
end.

Объявляем массив A из 30 элементов. Объяв-ляем целочисленные переменные i, j, min, min2, s. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й. 
...

Си

 

#include<stdio.h> 
int main(void) { 
const int N=30; 
int a[N]; 
int    i, j, min, min2, s; 
for (i=0; i<N; i++)
  scanf(″%d″, &a[i]); 
  ...
}

 

Решение:

Очевидно, что нужно вывести номера минимального элемента массива и «второго» минимума. Поэтому эта задача решается аналогично задаче 14 (меняем названия переменных и знаки > на знаки <, храним в переменных min и min2 не значения, а номера элементов):

  1. const N=30;
  2. var a: array [1..N] of integer;
  3.     i, k, min, min2: integer;
  4. begin
  5.   for i:=1 to N do readln(a[i]);
  6.   if a[1] < a[2] then begin
  7.     min := 1; min2:= 2 
  8.   end
  9.   else begin
  10.     min:= 2; min2:= 1 
  11.   end;
  12.   for i:=3 to N do
  13.     if a[i] < a[min] then begin
  14.       min2 := min;
  15.       min := i
  16.     end
  17.     else if a[i] < a[min2] then min2 := i;
  18.   writeln(min, ' ', min2)
  19. end.

Похожие материалы:
Нашли ошибку на сайте? Напишите в комментариях!
Категория: Язык программирования: Паскаль | Просмотров: 1263 | | Рейтинг: 5.0/1