середа, 4 березня 2015 р.

Магічний трикутник і квадрат на сумах

Магічний трикутник і квадрат на сумах мовою програмування 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   з магічною сумою та магічним добутком.
Технічні умови.  Програма на мові Паскаль випадковим чином задає два числа: 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=+ d(n-1).  Цілі числа а та  d  задаються випадковим чином, в межах від -100 <а <100; -100 <<100.  Запишемо алгоритм, який виводить  на екран у вигляді  таблиці  магічний квадрат розміром 3х3   з магічною сумою  3*(a1+4*d))   для  послідовності {an}

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]:= a17*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.  

Немає коментарів:

Дописати коментар