Элина2018
21.07.2020 03:30

Тема: двумерные матрицы.
Написать программу:
Дана матрица целых чисел А[n;n] Получить одномерный массив D, элементами которого являются максимальные значения диагоналей исходной матрицы. Данные берём из файла данных и результат помещаем в файл результата.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
SakhanovMadiar1
16.11.2022 09:10
1. Современный вариант
// PascalABC.NET 3.2, сборка 1439 от 09.05.2017
// Внимание! Если программа не работает, обновите версию!

begin
  ReadlnString.GroupBy(c->c).Select(x->(x.Key,x.Count)).OrderBy(x->x[0])
    .Select(x->Format('"{0}" - {1}',x[0],x[1])).Println(NewLine)
end.

Пример
10101110
"0" - 3
"1" - 5

2. Школьный вариант в стиле Pascal ABC, Free Pascal

var
  s:string;
  i,k0,k1:integer;
begin
  Readln(s);
  k0:=0; k1:=0;
  for i:=1 to Length(s) do
    if s[i]='0' then Inc(k0) else Inc(k1);
  Writeln('"0" - ',k0);
  Writeln('"1" - ',k1)
end.

Вывод результатов точно такой же, как и выше.
0,0(0 оценок)
Ответ:
nik868
02.05.2022 17:44
1. Современное решение, когда можно решить "в одну строку"

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

begin
  Writeln('S=',ReadSeqInteger(3).Select(n->n.ToString
    .Where(d->Pos(d,'13579')>0)).SelectMany(c->c)
    .Select(c->c.ToDigit).Sum)
end.

Пример
252 337 105
S=24

2. А примерно вот так учат писать в школе - долго и длинно (да и не особо понятно)

var
  m,i,j,s,d:integer;
begin
  s:=0;
  for i:=1 to 3 do begin
    Read(m);
    for j:=1 to 3 do begin
      d:=m mod 10;
      if d mod 2<>0 then s:=s+d;
      m:=m div 10
      end
    end;
  Writeln('S=',s)
end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота