Консультация № 201688
15.11.2021, 17:00
0.00 руб.
0 2 1
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Нужно составить программу с объяснениями к каждой строчке. На языке Pascal.
Составьте программу, отыскивающую номер первого по порядку нулевого элемента одномерного массива W(N).

Обсуждение

давно
Модератор
137394
1850
15.11.2021, 19:02
общий
15.11.2021, 19:05
это ответ
Код:
const                                     { Как константы определим:}
N = 20; { количество элементов массива;}
O = -10; { начальное значение отрезка;}
R = 10; { конечное значение отрезка;}
var
W : array [1..N] of integer; { опишем массив, в который занесём исходные значения;}
i : Integer; { индекс массива;}
maxx : Integer; { максимум для генерации случайного числа от 0<=A[i]<maxx=R-O+1;}
inul : Integer; { номер нулевого элемента;}

begin
randomize; { инициализация генератора случайных чисел;}
maxx := R-O+1; { вычисление верхней границы случайного числа;}

writeln('Исходный массив W'); { выдача заголовка для печати исходного массива;}
for i := 1 to N do begin { цикл по всем элементам массива;}
W[i] := random(maxx) + O; { занесение в массив случайного значения O<=A[i]<=R;}
write(W[i] : 4); { печать значения элемента массива;}
end;

inul := 0; { Номер нулевого элемента, для начала вне массива =0;}
for i := 1 to N do begin { цикл по всем элементам массива от 1 до N;}
If (W[i] = 0) Then begin { если элемент массива =0}
inul := i; { запомним номер нулевого элемента}
break; { выходим из цикла}
end;
end;

writeln; { пропустим пустую строку чтобы отделить вывод от исходного массива;}

If (inul = 0) Then begin { если нулевой элемент не найден (номер элемента вне массива)}
writeln('Нулевой элемент в массиве не найден'); {сообщаем об этом}
end
Else begin
writeln('Номер первого нулевого элемента в массиве=',inul:4); {иначе выдаём номер нулевого элемента}
end;
end.
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
давно
Модератор
137394
1850
16.11.2021, 15:12
общий
Адресаты:
Цитата: Зенченко Константин Николаевич
Тут более уместны циклы с условиями:
Я рассматривал такую возможность, но решил, что проще For. По любому надо организовывать счетчик в цикле (тут for удобнее), но, как плата, пришлось ввести признак найденного элемента inul, чтобы иметь какое-то основание для выдачи соответствующего сообщения.
Поразмыслив, понял, что Repeat даст возможность подсократить код.
Код:
const                                     { Как константы определим:}
N = 20; { количество элементов массива;}
O = -10; { начальное значение отрезка;}
R = 10; { конечное значение отрезка;}
var
W : array [1..N] of integer; { опишем массив, в который занесём исходные значения;}
i : Integer; { индекс массива;}
maxx : Integer; { максимум для генерации случайного числа от 0<=A[i]<maxx=R-O+1;}
inul : Integer; { строка с выводом ответа;}

begin
randomize; { инициализация генератора случайных чисел;}
maxx := R-O+1; { вычисление верхней границы случайного числа;}

writeln('Исходный массив W'); { выдача заголовка для печати исходного массива;}
for i := 1 to N do begin { цикл по всем элементам массива;}
W[i] := random(maxx) + O; { занесение в массив случайного значения O<=A[i]<=R;}
write(W[i] : 4); { печать значения элемента массива;}
end;
writeln; { организуем начало новой строки после вывода исходного массива;}

i := 1; { присваеваем начальный номер индекса массива}
Repeat { организуем цикл}
{ если найден нулевой элемент, выдаём сообщение}
If W[i] = 0 Then writeln('Номер первого нулевого элемента в массиве=',i:4);
i := i + 1; { наращиваем номер индекса массива}
Until (i > N) Or (W[i-1] = 0); { завершаем цикл, если i > N или найден нулевой элемент}

If (i > N) And (W[N] <> 0) Then writeln('Нулевой элемент в массиве не найден');{сообщаем об этом}
end.
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
Форма ответа