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

Составить блок-схемы к двум программам. Паскаль. Огромное


Составить блок-схемы к двум программам. Паскаль. Огромное

👇
Открыть все ответы
Ответ:
arsigonin
arsigonin
22.03.2021
Магический квадрат с n сторон

const
  mn = 16;
var
  p: Boolean;
procedure Swap(var a, b: Integer);
var
T: Integer;
begin
T := a; a := b; b := T
end;
procedure CreateMagic(n: Integer);
var
i, j, k, s, b, r, m: Integer;
a: Array[1.. mn, 1.. mn] Of Integer;
begin
  p := True; 
if Odd(n) Then
begin
i := 1; j := Succ(n div 2);
for k := 1 To Sqr(n) do
begin
a[i, j] := k;
if k mod n = 0 Then Inc(i)
Else
begin
Dec(i); Inc(j);
if i = 0 Then i := n;
if j > n Then j := 1
end
end;
  end
Else
if n mod 4 = 0 Then
begin
k := 1;
for i := 1 To n Do
for j := 1 To n Do
begin
a[i, j] := k; Inc(k)
end;
j := 2; m := n div 2;
for i := 1 To m Do
for k := 1 To m Div 2 Do
begin
if j = Succ(m) Then j := 2
Else
if j = (m + 2) Then j := 1;
s := Succ(n - i); b := Succ(n - j);
Swap(a[i, j], a[s, b]);
Swap(a[i, b], a[s, j]);
Inc(j, 2)
end
  end
Else
if n <> 2 Then
begin
k := 1;
for i := 1 To n Do
for j := 1 To n Do
begin
a[i, j] := k; Inc(k)
end;
  r := Pred(n div 2) div 2; m := n div 2;
for i := 1 To m Do
begin
j := i;
for k := 1 To r Do
begin
if j > m Then j := 1;
s := Succ(n - i); b := Succ(n - j);
Swap(a[i, j], a[s, b]);
Swap(a[i, b], a[s, j]);
Inc(j)
end
  end;
i := 1;
for k := 1 To m Do
begin
if j > m Then j := 1;
s := Succ(n - i);
Swap(a[i, j], a[s, j]);
Inc(i); Inc(j)
  end;
i := 1; j := r + 2;
for k := 1 To m Do
begin
if j > m Then j := 1;
b := Succ(n - j);
Swap(a[i, j], a[i, b]);
Inc(i); Inc(j)
end
  end
  Else p := False;
if p Then
begin
for i := 1 To n Do
begin
for j := 1 To n Do
Write(a[i, j]: 4);
WriteLn
end
end
Else
WriteLn( 'do not exists' )
end;
var
  n: Integer;
begin
WriteLn('n = '); ReadLn(n);
  CreateMagic(n);
end.
4,4(38 оценок)
Ответ:
VasyaKotikSnake
VasyaKotikSnake
22.03.2021
#include <iostream>
#include <cmath>

class point
{
    int x;
    int y;
public:
    point(): x(0), y(0) {}
    void setkoord(int koordx,int koordy)
    {
        x = koordx;
        y = koordy;
    }
    int getx()const { return x; }
    int gety()const { return y; }
};

double length(point p1, point p2)
{
     return (sqrt(pow(double(p1.getx()-p2.getx()),2)+pow(double(p1.gety()-p2.gety()),2)));
}

int main()
{
    point A,B,C;
    B.setkoord(1,1);
    C.setkoord(1,0);
    double a=length(A,B), b=length(B,C), c=length(C,A);
    double p=(a+b+c)/2;
    double s=sqrt(p*(p-a)*(p-b)*(p-c));
    std::cout <<"square: " <<s <<std::endl;
    return 0;
}
4,6(18 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ