В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
Pashitsyna
Pashitsyna
12.01.2020 22:02 •  Информатика

С клавиатуры вводится число, если оно нечётное и кратно 5 - вывести "Да", иначе, вывести - "Нет"

Показать ответ
Ответ:
myshkin02
myshkin02
10.02.2020 12:51
Если в нашем распоряжении имеется современная версия PascalABC.Net 3.2, то есть минимум два решить такую задачу. Массив мы будем заполнять случайными числами из интервала [1;98].

Первый использовать имеющуюся в этой версии паскаля возможность находить максимумы и минимумы встроенными в язык средствами. Это очень быстро программируется и обычно страхyет от возможных ошибок при написании более детальных программ.

// PascalABC.NET 3.2, сборка 1353 от 27.11.2016
// Внимание! Если программа не работает, обновите версию!

begin
  var a:=ArrRandom(30,1,98); a.Println;
  Writeln('D=',a.Where(x->x.IsEven).Max-a.Where(x->x.IsOdd).Max)
end.

Пример
29 52 58 75 13 77 63 13 17 6 67 17 53 51 14 93 83 30 81 17 93 58 13 71 78 96 42 66 4 91
D=3

Второй не привязан к упомянутой выше версии языка, т.е. может быть использован в школах, исповедующих "доисторический стиль программирования" ))) Естественно, он длиннее и можно будет сравнить количество строк кода. Алгоритм основан на последовательном переборе элементов массива и одновременном получении максимума среди четных и нечетных его элементов.

const
  n=30;
var
  a:array[1..30] of integer;
  i,a1max,a2max:integer;
begin
  Randomize;
  a1max:=0; a2max:=0;
  for i:=1 to n do begin
    a[i]:=Random(98)+1;
    Write(a[i],' ');
    if a[i] mod 2 <> 0 then
      begin if a1max<a[i] then a1max:=a[i] end
    else
      if a2max<a[i] then a2max:=a[i]
    end;
  Writeln;
  Writeln('D=',a2max-a1max)
end.

Замечу, что данный вариант программы содержит фрагмент, в котором школьники (да и не только школьники) часто делают ошибку.
if a[i] mod 2 <> 0 then
  begin if a1max<a[i] then a1max:=a[i] end
else
  if a2max<a[i] then a2max:=a[i]
Выделенные мной begin и end на первый взгляд не нужны. Но в этом-то и ошибка!
По правилам языка паскаль когда внутри одного if встречается другой if и хотя бы один из них неполный, т.е. не содержит else, последний else относится к самому последнему из if, который без его будет неполным.
Запутанно? Поясню на нашем фрагменте.
Его без этих begin ... end можно понимать так:

if a[i] mod 2 <> 0 then
  if a1max<a[i] then a1max:=a[i]
else
  if a2max<a[i] then a2max:=a[i]

Но можно и так:

if a[i] mod 2 <> 0 then
  if a1max<a[i] then a1max:=a[i]
  else
     if a2max<a[i] then a2max:=a[i]

И паскаль, увы, понимает как раз по последнему варианту. Посему как раз begin ... end решают эту проблему. Но... встречается она не очень часто и о ней быстро забывают. А потом нарываютcя и не могут понять причины.

Что ж, выбор как решать - за вами!
0,0(0 оценок)
Ответ:
Миланахасик
Миланахасик
16.11.2022 09:53
1 задача:

const n=10;
var 
  min,i: integer;
  a: array[1..n] of integer;
begin
  randomize;
  min:=11;
  for i:=1 to n do begin
    a[i]:=random(1,10);
    write (a[i],' '); // для наглядности. можно удалить
    if  (i mod 2 =1) and (a[i]<min) 
      then min:=a[i];    
  end;
  writeln;
  writeln ('min = ',min)
end.

Пример:
5 4 7 8 6 2 10 4 9 9 
min = 5


2 задача:

const n=10;
var 
  max,count,i: integer;
  a: array[1..n] of integer;
begin
  randomize;
  max:=0;
  count:=0;
  for i:=1 to n do begin
    a[i]:=random(1,10);
    write (a[i],' '); // для наглядности. можно удалить
    if a[i]>max
      then max:=a[i];     
  end;
  for i:=1 to n do 
    if max=a[i] then count:=count+1;
  writeln;
  writeln ('max = ',max);
  writeln ('count = ',count);
end.

Пример:
8 5 3 2 2 10 10 9 3 10 
max = 10
count = 3
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота