Магічний трикутник і квадрат на сумах мовою
програмування Pascal
1.Дано
числа: 1, 2, 3, 4, 5, 6, 7, 8, 9. Розташуйте їх у кружечках
трикутника  так, щоб суми на кожній стороні трикутника були рівними: 
а) одному парному числу; б) одному непарному числу; в) трьом послідовним
натуральним числам. 
Технічні умови. Програма утворює послідовність,  цілі числа
якої послідовно заповнюють кружечки трикутника, починаючи з вершини за часовою
стрілкою, і ці числа розміщуються так, що на кожній стороні трикутника
виконується умова завдання.
Приклад: Починаючи з вершини за часовою стрілкою, числа
розміщуються так:  а) 5; 3;  4; 8; 1; 9; 2; 6; 7( на кожній
стороні по 20).    б)8;  5; 3; 7; 6;  1; 
9;  4;  2; ( на кожній стороні по 23)    в) 8; 3;
5; 7; 6; 2; 9; 1; 4(це числа 22,23,24).
Розв′язання. Програма для магічного трикутника з магічною сумою 23
program magic_tpukytnuk;
var a,b,c,d,e,f, h,i, j:
integer;    k:boolean;
begin
 {for a:=1 to 9 do begin}
a:=9;         for b:=1 to 9 do
begin     for c:=1 to 9 do begin
  {for d:=1 to 9 do begin}
d:=8;       for e:=1 to 9 do begin    
  for f:=1 to 9 do begin
   {for h:=1 to 9 do begin}
h:=7;       for i:=1 to 9 do begin  
   for j:=1 to 9 do begin
   k:= (a<>b) and
(c<>a) and (a<>d) and (a<>e) and  (a<>f) and
(a<>h) and (a<>i) and (a<>j);
   k:= k and(c<>b) and
(b<>d) and (b<>e) and  (b<>f) and (b<>h) and
(b<>i) and (b<>j);
   k:= k and (c<>d) and
(c<>e) and  (c<>f) and (c<>h) and (c<>i) and
(c<>j);
   k:= k and (d<>e)
and  (d<>f) and (d<>h) and (d<>i) and (d<>j);
   k:= k and (e<>f) and
(e<>h) and (e<>i) and (e<>j);
   k:= k and  (f<>h)
and (f<>i) and (f<>j);
   k:= k and (h<>i) and
(h<>j);
   k:= k and(i<>j);
   if k and(a+b+c+d=d+e+f+h)
and (h+i+j+a=d+e+f+h) and (h+i+j+a=a+b+c+d) then
   begin
  writeln('  a+b+c+d=' ,
a+b+c+d); writeln('  d+e+f+h=' , d+e+f+h);
   writeln('  h+i+j+a=' ,
h+i+j+a);
   write('  a=', a,
';  ');   write('  b=', b, ';  ');  write(' 
c=', c, ';  ');
   write('  d=', d,
';  '); write('  e=', e, ';  ');write('  f=', f, '; 
');
   write('  h=', h,
';  '); write('  i=', i, ';  ');write('  j=', j, '; 
'); writeln('  ');
end;end; end; end;end;end;end; { end;
end;end;}  end.
Приклади, що є результатом виконання
програми - це магічні трикутники з магічною сумою 23
 1)a+b+c+d=23, d+e+f+h=23, 
h+i+j+a=23,   a=9;    b=1;   
c=5;    d=8;    e=2;    f=6;   
h=7;    i=3;    j=4;   
 2) a+b+c+d=23, d+e+f+h=23,
 h+i+j+a=23,   a=9;    b=1;   
c=5;    d=8;    e=2;   
f=6;    h=7;    i=4;    j=3;   
 3)a+b+c+d=23, d+e+f+h=23,
 h+i+j+a=23,   a=9;    b=1;   
c=5;    d=8;    e=6;   
f=2;    h=7;    i=3;    j=4;   
 4) a+b+c+d=23, d+e+f+h=23,
 h+i+j+a=23,   a=9;    b=1;   
c=5;    d=8;    e=6;   
f=2;    h=7;    i=4;    j=3;   
 5)a+b+c+d=23,  d+e+f+h=23,
 h+i+j+a=23,   a=9;    b=2;   
c=4;    d=8;    e=3;   
f=5;    h=7;    i=1;    j=6;   
 6) a+b+c+d=23, d+e+f+h=23,
 h+i+j+a=23,   a=9;    b=2;   
c=4;    d=8;    e=3;   
f=5;    h=7;    i=6;   
j=1;   
Утворення магічних
квадратів  на сумах мовою Pascal
Задача 1. Записати алгоритм, який виводить  на екран  випадковий
 фрагмент 
дев′ятичленної арифметичної прогресії у вигляді магічного квадрату розміром 3х3 з магічною сумою та магічним добутком.
дев′ятичленної арифметичної прогресії у вигляді магічного квадрату розміром 3х3 з магічною сумою та магічним добутком.
Технічні умови.  Програма на мові Паскаль випадковим
чином задає два числа: 1)перший член; 2) знаменник для фрагменту арифметичної
прогресії.  Члени цієї прогресії,  це двоцифрові цілі числа.
Приклад. Виведення результату.
Перший випадковий  член арифметичної  прогресії: a1 =1
Випадковий знаменник  арифметичної  прогресії:  d =4
Магічна сума магічного квадрату:   S=51
Магічний квадрат:
a[1; 1]:=
13    a[1; 2]:= 33    a[1; 3]:=
5   
a[2; 1]:=
9    a[2; 2]:= 17    a[2; 3]:=
25   
a[3; 1]:=
29    a[3; 2]:= 1    a[3; 3]:=
21   
Розв′язання.
Якщо дано два довільних випадкових числа а та d, що задають  арифметичну прогресію, то отримаємо
магічний квадратів 3х3 з магічною сумою 3(а+4d). Із одного шаблона 3х3 можна отримати вісім різних
шаблонів  магічних квадратів 3х3 на сумах. наводимо приклади тільки двох
шаблонів.
| 
а + 3d | 
а + 8d | 
а + d | 
| 
а + 2d | 
а + 4d | 
а + 6d | 
| 
а + 7d | 
а | 
а + 5d | 
| 
n + 2m | 
n + 7m | 
n + 6m | 
| 
n+ 9m | 
n + 5m | 
n + m | 
| 
n + 4m | 
n + 3m | 
n + 8m | 
| 
ра +
  3d gn + 2m | 
ра +
  8d gn + 7m | 
ра + d gn + 6m | 
| 
ра +
  2d gn+ 9m | 
ра +
  4d gn + 5m | 
ра +
  6d gn + m | 
| 
ра +
  7d gn + 4m | 
ра gn + 3m | 
ра +
  5d gn + 8m | 
Останній квадрат можна використати як
шаблон для утворення безлічі квадратів з магічним добутком. При цьому, варто
зазначити, що числа р і g можна
накладити різні умови:  простоти, парності, непарності, кратності,
подільності.
Послідовність  із дев′яти цілих чисел
задається лінійною формулою: аn=a + d(n-1).  Цілі числа а та  d  задаються
випадковим чином, в межах від -100 <а <100; -100 <d <100.  Запишемо алгоритм, який
виводить  на екран у вигляді  таблиці  магічний квадрат розміром
3х3   з магічною сумою  3*(a1+4*d))   для  послідовності {an}
program anxn;
program anxn;
const  n=3;
var     
 a: array[1..n,1..n] of integer;     c:
array[1..n,1..n] of integer;   b: array[1..n*n] of integer;
d,a1, m,k,p,i, l, j:
integer;   
begin     a1:=round(random*20-10) ;  {a1 - перший член арифмет. прогресії}
d:= round(random*20-10); {d - знаменник  арифмет. прогресії}
writeln('  ');
writeln('  ');writeln('a1 =',a1);   writeln(' d =',d); writeln('  Магічна сума  S=',3*(a1+4*d));
a[1,1]:= a1 + 3*d;       a[1,2]:=
 a1 + 8*d;     
a[1,3]:=  a1 + 1*d;
a[2,1]:=  a1 + 2*d;       a[2,2]:= a1 + 4*d;      a[2,3]:=  a1 + 6*d;
a[3,1]:= a1+ 7*d;       a[3,2]:= a1 + 0*d;      a[3,3]:= a1 + 5*d;
for i:=1 to n do  begin
writeln('');
for j:=1 to n do  begin
write('a[',i, '; ',j,']:=
',a[i,j], '    ');
end; {writeln('   ')};
 end;  end.  
 
Немає коментарів:
Дописати коментар