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

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

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



Задача
У вас даны три последовательности A, B и C, каждая из которых содержит 20 целых чисел. Вам нужно найти последовательность, в которой содержится наибольшее количество нулей. Предполагается, что такая последовательность существует только одна. Затем замените все нули в этой последовательности на наибольшее значение в этой последовательности.
Решение
Для решения этой задачи вам потребуется пройти по каждой последовательности и подсчитать количество нулей в каждой из них. Затем выберите последовательность с наибольшим количеством нулей и замените все нули в этой последовательности на наибольшее значение в этой последовательности.
Вот пример кода на языке Python, который решает эту задачу:
```python sequences = [A, B, C] # Здесь A, B и C - это ваши последовательности
max_zeros = 0 max_sequence = None
# Проходим по каждой последовательности for sequence in sequences: zeros_count = sequence.count(0) # Подсчитываем количество нулей в последовательности if zeros_count > max_zeros: max_zeros = zeros_count max_sequence = sequence
# Заменяем все нули в последовательности на наибольшее значение в этой последовательности max_value = max(max_sequence) max_sequence = [max_value if num == 0 else num for num in max_sequence]
# Выводим результат print(max_sequence) ```
Пожалуйста, учтите, что вам нужно будет заменить `A`, `B` и `C` в коде на ваши собственные последовательности. Также обратите внимание, что в приведенном коде предполагается, что каждая последовательность содержит ровно 20 целых чисел.
Примечание: Данный код решает задачу на замену всех нулей на наибольшее значение только в одной последовательности, в которой содержится наибольшее количество нулей. Если вам нужно заменить все нули во всех последовательностях, то код нужно немного изменить.


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili