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

объясните как работает эта программа по-шагово пожалуйста...
program Lklkjo;
uses crt;

const
n=10;
var
a:array[1..n]of integer;
i,min,j,min2,min3:integer;
begin
for i:=1 to n do
begin
a[i]:=random(100);
write(a[i]:4);
end;
min:=a[1];j:=1;min2:=a[1];min3:=a[1];
for i:=1 to n do
if a[i]<min then
           begin
min:=a[i];
j:=i;
end;
for i:=1 to n do
if (a[i]>=min)and(i<>j)and( min2:=a[i]);
writeln;
for i:=1 to n do
if (a[i]>min2)and(i<>j)and( min3:=a[i]);
writeln;
writeln(min,', ',min2,', ',min3);
end.

Ответы

Автор ответа: SteelR
0
Прикладываю исходник и скрин в приложении к ответу.

Несколько замечаний:

1. Большое количество комментариев внесено в код исключительно в учебных целях. В реальную программу переносить не рекомендуется - признак нехорошего тона.

2. У вас допущены синтаксические ошибки в двух последних циклах, а точнее - в операторах If, в которых стоит три условия (объединённых and), но нет ключевого слова "then" и последующих инструкций. Исправил.

3. Так же, автор вашей программы построил на мой взгляд нелогичную структуру алгоритма. Переменные min, min2 и min3, как я догадался, должны хранить три минимальных значения массива.
А вот что происходит в вашей конструкции: первый цикл безошибочно находит наименьший элемент и записывает его в min, а последующие два цикла записывают в min2 и min3 первые попавшиеся(начиная с первого) элементы, если они больше min. Таким образом, нет никакой закономерности в том, что попадёт в эти переменные и сложно представить, для какой задачи потребовались бы такие случайности.

Одним из вариантов решения предлагаю изначально записывать в эти три переменные не значение первого элемента массива, а какое-то большое число, которое в массиве нам не встретится (например 100). Тогда цикл будет искать значения меньше 100 и перезаписывать им соответствующую переменную, пока не найдёт самое маленькое значение. В таком случае не очень стабильная переменная j нам так же не нужна, я её вычеркнул.

Вам отсылаю уже с учётом поправок, однако если вам требовалась именно первоначальная версия несмотря на её минусы, просто поправьте синтаксис в последних циклах (41 и 34 строчка на скрине) и пользуйтесь ей.
Приложения:
Автор ответа: cvetlag
0
спасибо огромное))))))))))))))))
Похожие вопросы
Предмет: История, автор: semuskinakarina76
Предмет: Математика, автор: logachevayana
Предмет: Математика, автор: Аноним