kartyshkinaaa
?>

Очень Рассчитываю на вашу Напишите программу язык Turbo Pascal

Информатика

Ответы

Apresov
Магический квадрат с 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.
shkola8gbr

Нужный язык программирования не указан. Наверное, тебе подойдет Си :с

int n, tmp;           // переменные для длины массива и временная

int count = 0;     // переменная-счетчик для количества перестановок

scanf_s("%d", &n;)       // считываем количество элементов в массиве

int arr[n];               // объявляем массив из n элементов

for (int i = 0; i < n; i++) {          // формируем массив

       scanf_s("%d", arr[i]);

}

for (int i = 0; i < n; i++)  {          // сравниваем два соседних элемента (j и j+1)

     for (int j = 0; j < n - i - 1; j++)  {

                if (arr[j] > arr[j + 1])  {   // свапаем элементы местами, если порядок неверный через временную переменную

                        tmp = arr[j];

                        arr[j] = arr[j + 1];

                        arr[j + 1] = tmp;

                        count++;          // увеличиваем счетчик перестановок

                      }

               }

      }

ptintf("%d", count);         //выводим количество перестановок

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Очень Рассчитываю на вашу Напишите программу язык Turbo Pascal
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

gorsimonyan4
libirishka7910
lovely138887
ВасилийКлимова1695
missbuhgalter2013
Galliardt Sergeevna1284
laplena1982750
Lvova_Aleksandr933
Yurevich-Vladimirovich
predatorfishing608
Ka-shop2791
Plotnikovangav
krutikovas
ehrik-ch
extremhunter