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

Вывести на экран строку, сумма элементов которой максимальна. формат вывода: строка 2: 3 5 8 9 8 все это в паскале

👇
Ответ:
KATIAqwerty
KATIAqwerty
10.11.2022
var
  i,j,s,n,max:integer;
  a:array[1..5,1..5]of integer;
begin
for i:=1 to 5 do
  begin
  s:=0;
  for j:=1 to 5 do
    begin
    a[i,j]:=random(10);
    write(a[i,j],' ');
    s:=s+a[i,j];
    end;
  if s>max then
    begin
    n:=i;
    max:=s;
    end;
  writeln;
  end;
writeln;
write('Строка ',n,': ');
for j:=1 to 5 do
  write(a[n,j],' ');
end.
4,8(77 оценок)
Открыть все ответы
Ответ:
anas20041006
anas20041006
10.11.2022
Ошибки две:
1) Не забывайте обнулять переменную k. У вас она не обнулялась, и так как каждый раз прибавлялось что-то, то максимум достигался на последнем числе.
2) Нужно не количество, а сумма делителей, поэтому к k надо прибавлять не 1, а i.

Пример исправленной программы:

var
  max, i, j, k, a, b, z: integer;
 
begin
  max := 0;
  readln(a, b);
  for i := a to b do
  begin
    k := 0;
    for j := 1 to i do
      if (i mod j) = 0 then 
        k := k + j;
    if k > max then 
    begin
      max := k;
      z := i;
    end;
  end;
  writeln(z);
end.
4,5(20 оценок)
Ответ:
П6о6л6я
П6о6л6я
10.11.2022
1. Современное, короткое и быстрое решение

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

begin
  var a:=ArrRandom(16,-20,80); a.Println;
  Writeln('S=',a.Where((x,i)->i.IsOdd).Sum)
end.

Пример
61 64 70 22 76 22 18 44 36 53 29 -9 42 -19 66 34
S=211

2. А вот так все еще учат в большинстве школ (стиль образца 70-80х годов века)

const
  n=16;
var
  i,s:integer;
  a:array[1..n] of integer;
begin
  Randomize;
  s:=0;
  for i:=1 to n do begin
    a[i]:=Random(101)-20;
    Write(a[i],' ');
    if i mod 2=0 then s:=s+a[i]
    end;
  Writeln;
  Writeln('S=',s)
end.
4,5(79 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ