М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Madgik2000
Madgik2000
13.01.2023 13:22 •  Информатика

Опишите на паскале алгоритм вычисления разности максимального среди элементов, имеющих чётные значения, и максимального среди элементов, имеющих нечётные значения, в заданном целочисленном массиве из 30 положительных элементов (в предположении, что в массиве есть и чётные, и нечётные элементы).

👇
Ответ:
vita142
vita142
13.01.2023
Если в нашем распоряжении имеется современная версия 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я и не могут понять причины.

Что ж, выбор как решать - за вами!
4,8(65 оценок)
Открыть все ответы
Ответ:
shakirqasanov
shakirqasanov
13.01.2023

# Задание 1

total = 0

num = int(input())

while num != -1:

   total += num

   num = int(input())

print(total)

# Задание 2

num = input().split()

num = [int(i) for i in num]

print(max(num))

# Задание 3

from random import randint

num = randint(1, 10)

good = False

for i in range(3):

   ans = int(input())

   if ans == num:

       print('Вы угадали!')

       good = True

       break

   elif ans < num:

       print('Загаданное число больше!')

       

   else:

       print('Загаданное число меньше!')

     

if not good:

   print(f'Загаданное число - {num}')

Объяснение:

, протестируйте программы, перед тем как их сдавать куда-либо


1. Считать сумму введенных с клавиатуры чисел до тех пор, пока не будет введен -1. 2. С клавиатуры в
4,6(28 оценок)
Ответ:
polyaХеХеХе
polyaХеХеХе
13.01.2023

Дан массив, содержащий 70 целых чисел. Опишите на одном из языков программирования алгоритм,

позволяющий найти и вывести наименьшее содержащееся в массиве положительное число, десятичная

запись которого оканчивается цифрой 7. Гарантируется, что в массиве есть хотя бы один

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

разрешается не использовать часть из них.

1

2

3

4

5

6

7

8

9

const N=70;

var

a: array [1..N] of integer;

i, j, m: integer;

begin

for i:=1 to N do

что-то подобное?

4,6(20 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ