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

Магический, или волшебный, квадрат — это квадратная таблица nxn, заполненная n 2 числами таким образом, что сумма чисел в каждой строке, каждом столбце и на обеих диагоналях одинакова. задан двумерный массив размерностью nxn. определить, является ли он магическим квадратом. составить блок схему, описание решения и программу на паскаль

👇
Ответ:
Matvey1145
Matvey1145
22.11.2021
Программа для решения поставленной задачи - в прилагаемом файле. Отмечу, что программа далеко не оптимальная. Например, совсем не обязательно искать все суммы. Если хотя бы одна не совпала с предыдущими, то вычисления можно закончить. В комментарии в начале программы дан пример магического квадрата для проверки.
Магический, или волшебный, квадрат — это квадратная таблица nxn, заполненная n 2 числами таким образ
4,5(50 оценок)
Ответ:
890605
890605
22.11.2021
Var
  i,j,n:integer;
  m: array[1..10,1..10] of integer;
  flag:boolean;
  sum: array[0..1] of longint;
 begin
  readln(n);
  flag:=true;
  for i:=1 to n do
   begin
    for j:=1 to n do
     read(m[i,j]);
    readln;
   end;
     //Проверяем строки
  i:=1;
  for j:=1 to n do
      sum[i mod 2]:=sum[i mod 2]+m[i,j];
  while ((i<n) and flag) do
    begin
     i:=i+1;
     for j:=1 to n do
      sum[i mod 2]:=sum[i mod 2]+m[i,j];
     if sum[0]<>sum[1] then flag:=false;
     sum[(i+1) mod 2]:=0;
    end;
    //Проверяем столбцы
  sum[0]:=0;
  sum[1]:=0;
  j:=1;
  for i:=1 to n do
      sum[j mod 2]:=sum[j mod 2]+m[i,j];
  while ((j<n) and flag) do
    begin
     j:=j+1;
     for i:=1 to n do
      sum[j mod 2]:=sum[j mod 2]+m[i,j];
     if sum[0]<>sum[1] then flag:=false;
     sum[(j+1) mod 2]:=0;
    end;
  sum[0]:=0;
  sum[1]:=0;
  j:=1;
  for i:=1 to n do
   begin
    sum[0]:=sum[0]+m[i,j];
    sum[1]:=sum[1]+m[n-i+1,j];
    j:=j+1;
   end;
  if  sum[0]<>sum[1] then flag:=false;
  if flag then writeln('Магический');
 end.
4,5(27 оценок)
Открыть все ответы
Ответ:
faas1501
faas1501
22.11.2021

var

 i, n:integer;

 price:real;

begin

  n := 20;

  price := 20.4;

  for i := 1 to n do

    writeln('Стоимость ', i:3, ' ед. товара составляет ', price * i:8:2, ' руб.');

end.

 

 

//вторая задача

var

  i, f, n:integer;

begin

  f := 453;

  n := 10;

  writeln('фунты    граммы');

  for i := 1 to n do

    writeln(' ', i:2, i * f :11);

end.

 

//третья задача

var

  i, n:integer;

  k:real;

begin

  n := 20;

  writeln('Введите курс '); readln(k);

  writeln('доллары    рубли');

  for i := 1 to n do

    writeln('  ', i:2, i * k:13:2);

end.

4,7(5 оценок)
Ответ:
zaporozkayaoks
zaporozkayaoks
22.11.2021
Складываем число людей, знающих английский, немецкий, французский: 6 + 6 + 7 = 19. Однако в это число дважды вошли люди, знающие (только) два языка и трижды - три языка. Вычитаем людей, знающих (хотя бы) два языка: 19 - (4 + 3 + 2) = 10. Т.к. в каждое из трех вычтенных множеств включено множество людей, получается, мы вычли его три раза, и 10 - количество людей, знающих меньше трех языков. Еще раз прибавляем людей, знающих три языка: 10 + 1 = 11 человек в комнате всего.
В итоге получилось:
1 человек знает только английский
3 человека знают только французский
0 человек - только немецкий
3 - только английский и немецкий
2 - только немецкий и французский
1 - только английский и французский
1 - все три языка
Задача очень легко решается, если изобразить ее на диаграмме, даже без всех этих рассуждений про множества
4,6(41 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ