Вопрос задан 31.05.2018 в 20:26. Предмет Информатика. Спрашивает Усик Іра.

Объясните как работает эта программа по-шагово пожалуйста... 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.
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Исламбаева Гулнур.

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

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

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

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

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

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

Вам отсылаю уже с учётом поправок, однако если вам требовалась именно первоначальная версия несмотря на её минусы, просто поправьте синтаксис в последних циклах (41 и 34 строчка на скрине) и пользуйтесь ей.


0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос