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

Даны последовательности а,в,с. в каждой из них 20 целых чисел. в той последовательности, где больше всего 0(считая что такая последовательность одна), все 0 заменить наибольшим значением данной последовательности (теория алгоритмов)

👇
Ответ:
glafira23
glafira23
12.10.2022
Const
  n=20;
type
  S=array[1..n] of integer;

procedure SGen(a,b:integer; var m:S);
{ Заполняет массив m случайными числами из интервала [a;b] }
var
  i:integer;
begin
  Randomize;
  for i:=1 to n do m[i]:=Random(b-a+1)+a
end;

procedure SWrite(SName:char; a:S);
{ Выводит массив a с указанием имени SName в заголовке }
var
  i:integer;
begin
  Writeln('Последовательноcть ',SName);
  for i:=1 to n do Write(a[i],' ');
  Writeln
end;

function SZeros(a:S):integer;
{ Возвращает количество нулей в массиве a }
var
  i,k:integer;
begin
  k:=0;
  for i:=1 to n do
    if a[i]=0 then Inc(k);
  SZeros:=k
end;

var
  a,b,c,d,r:S;
  nr:char;
  za,zb,zc,zd,zr,i,mx:integer;
begin
  SGen(-5,5,a); SWrite('A',a); za:=SZeros(a);
  r:=a; nr:='A'; zr:=za;
  repeat
    SGen(-8,9,b); zb:=SZeros(b);
  until zb<>zr;
  SWrite('B',b);
  if zb>zr then begin r:=b; nr:='B'; zr:=zb end;
  repeat
    SGen(-9,3,c); zc:=SZeros(c);
  until zc<>zr;
  SWrite('C',c);
  if zc>zr then begin r:=c; nr:='C'; zr:=zc end;
  repeat
    SGen(-2,7,d); zd:=SZeros(d);
  until zd<>zr;
  SWrite('D',d);
  if zd>zr then begin r:=d; nr:='D'; zr:=zd end;
  mx:=r[1];
  for i:=2 to n do
    if r[i]>mx then mx:=r[i];
  for i:=1 to n do
    if r[i]=0 then r[i]:=mx;
  Writeln;
  SWrite(nr,r)
end.

Контрольное выполнение

Последовательноcть A
-5 4 0 -1 2 -1 4 -5 3 3 1 5 -2 1 -1 -5 -1 -1 0 4
Последовательноcть B
-1 1 4 6 8 -1 -8 -8 5 4 -2 0 -2 8 3 -8 -6 -3 9 -7
Последовательноcть C
-4 -3 0 1 2 -4 -9 -9 0 0 -5 -4 -5 2 -1 -9 -8 -5 3 -8
Последовательноcть D
1 3 5 5 7 2 -2 -2 5 5 1 2 1 6 4 -2 -1 1 7 -2

Последовательноcть C
-4 -3 3 1 2 -4 -9 -9 3 3 -5 -4 -5 2 -1 -9 -8 -5 3 -8
4,5(41 оценок)
Открыть все ответы
Ответ:

Program n_1;

var a:array [1..1000] of integer; i, buf:integer;

begin

  for i:=1 to 1000 do read(a[i]); //Вводим массив

   for i:=1 to 500 do begin //Переворачиваем массив

       buf:=a[i];

       a[i]:=a[1001-i];

       a[1001-i]:=buf;

   end;

   for i:=1 to 1000 do write(a[i], ' '); //Выводим перевернутый массив

   writeln(); //Переносим строку

   for i:=1 to 1000 do begin //Выводим нужные нам числа

       buf:=a[i];

       while buf>9 do buf:=buf div 10; //buf равно старшему разряду

       if buf>a[i] mod 10 then write(a[i], ' '); //Если старший разряд больше младшего, то выводим

   end;

end.

Часть, выделенная полужирным, эквивалентна

for i:=1000 downto 1 do read(a[i]); //Заполняем массив с конца и тем самым он сразу становится перевернутым.

4,4(54 оценок)
Ответ:
efr47
efr47
12.10.2022

программа с комментариями, если все равно не понятно спрашивай

для проверки программы рекомендую n поставить где нибудь на 10 потому что вводить 1000 чисел с клавиатуры то еще удавольствие :))

числа можно вводить по одному или одной строкой через пробел

const

   n = 1000; // длина массива

var

   d : array of integer := new integer[n]; // объявляем и создаем массив

   a, b : integer;

   

begin

   // вводим числа в массив //

   writeln('введите данные в массив:');

   for var i := 0 to n-1 do begin

       read(a);

       d[i] := a;

   end;

   writeln('введен массив d=', d); // выводим массив на экран

   // переворачиваем данные в массиве                                //

   // для этого меняем первое с последним, второе с предпоследним    //

   // и так до середины                                              //

   for var i := 0 to (n div 2)-1 do begin

       a := d[i];

       d[i] := d[n-i-1];

       d[n-i-1] := a;

   end;

   writeln('переворачиваем массив d=', d); // выводим перевернутый массив

   write('числа у которых первая цифра больше последней:');

   // ищем и ввыводим числа с заданным условием //

   for var i := 0 to n-1 do begin

       // находим чему равна 1 цифра //

       b := d[i];

       repeat

           b := b div 10;

       until b < 10;

       if b > d[i] mod 10 then write(' ', d[i]); // сравниваем первую и последнюю цифры и ели первая больше то выводим число

   end;

end.

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