середа, 21 березня 2018 р.

Обчислювальні алгоритми на масивах


Практична робота 31
 Обчислювальні алгоритми на масивах

Завдання 1. Створити та реалізувати алгоритм мовою Pascal, який підносить до квадрату парні  остачі усіх чисел в одномірному масиві(рядок чисел) при діленні на 7 і підносить до кубу непарні остачі (mod 7) та виводить   результати цих дій  у новий масив. І до того ж   знаходить суму усіх цих остач.  При цьому  у початковому масиві числа задаються алгоритмом, як випадкові 7-цифрові цілі  від’ємні числа.
program MOD1;     {Підрахунок і дії з остачами для усіх елементів числового масиву}
const  n=2;    var a, b: array [1..n] of  integer;         s, i: integer;
begin        writeln ( 'Виводиться    ', n,  '  випадкових елементів масиву A:');
 for   i:=1  to  n   do  begin     a[i]:=-1000000-random(9000000);  write(' а[', i, ']=: ', a[i]);  write('     '); end; writeln;  writeln ( 'Виводиться    ', n,  '  елементів масиву остач:');
  s:=0;        for i:=1 to n do  begin  b[i]:=a[i]  mod  7;     s:=s+b[i];   write('b[', i, ']= ', b[i]);  write('  '); end; writeln; writeln('Сума усіх остач елементів масиву =', s); writeln('***');
for i:=1 to n do  begin  if  b[i] mod 2=0 then b[i]:= b[i]* b[i]  else b[i]:= b[i]* b[i]* b[i];
write('c[', i, ']= ', b[i]);  write('     '); end; writeln;  writeln('************');end.
Протестувати  алгоритм для 9-цифрових: а) const =9; б) const =8;  в) const =25. 

Завдання 2. Створити та реалізувати алгоритм мовою Pascal, який знаходить  парні числа і ділить ці числа на 2 та знаходить непарні числа і подвоює їх в двовимірному  масиві(таблиця чисел). При цьому  у початковому масиві алгоритмом задаються випадкові 8-цифрові цілі,  як додатні  так і від’ємні  числа.
program ODD2;   {Дії окремо з парними  та окремо з непарними елементами масиву}
const  n=3;       var  a: array [1..n, 1..n] of integer;             j, i, p: integer;
begin        writeln ( 'Вводиться    ', n*n,  '  випадкових елементів масиву');
for  i:=1 to n do begin  for j:=1 to n do begin        a[i, j]:=-4000000+random(90000000);
write('  а[', i, ' ,' , j, ' ]= ', a[i, j]);  write('  '); end;    writeln('  ');  end;  writeln ('Масив:');
    p:=0;   for i:=1 to n do begin       for   j:=1 to n do begin
  if  (a[i, j] mod 2)=0   then begin  p:=p + 1;  a[i, j]:=a[i, j] div 2  end  else a[i, j]:=2*a[i, j];
write('  b[', i, ' ,' , j, ' ]=', a[i, j]);     write('  '); end;    writeln('  ');  end;  writeln;
writeln('Кількість парних елементів масиву =', p);
writeln('Кількість непарних елементів масиву =', n*n- p); writeln('*******');end.
Протестувати  алгоритм для 4-цифрових: а) const =4; б) const =5;  в) const =8. 

Завдання 3. Створити та реалізувати алгоритм мовою Pascal, який виводить два масиви розміром nxn у вигляді рядків та стовпців і знаходить потроєну суму та  потроєну різницю цих двох  двовимірних  масивів А та В(таблиці з різними числами,  котрі збільшені в 3 рази), якщо у двох масивах алгоритмом задаються випадкові 6-цифрові цілі додатні  числа.
program SUM3DELTA3;   { Потроєна сума або потроєна різниця масивів: С= 3А ± 3В}
const  n=2;       var  b, a: array [1..n, 1..n] of integer;   k,m,  j, i: integer;
begin   writeln ( 'Виводиться  по  ', n*n,  '  випадкових елементів  масивів А та В');
for i:=1  to n do   begin      for j:=1  to n do  begin   a[i,j]:= 100000+random(90000) ; 
 write('  a[',i,';',j,']:= ' ,  a[i,j]);   end; writeln('   ');  end;  writeln(' Другий  масив:');
 for i:=1  to n do   begin     for j:=1  to n do  begin     b[i,j]:= 100000+random(90000);  
write('  b[',i,';',j,']:= ', b[i,j]);   end; writeln('   '); end;  writeln('   '); writeln(' Відповідь.');
for i:=1 to n do begin for    j:=1 to n do begin  write('  3a+3b[', i, ' ,' , j, ' ]= ', 3*( a[i,j]+ b[i,j] )); end; writeln('   '); end;  writeln('   ');   writeln('   ');  for  k:=1 to n do begin  for  m:=1 to n do begin   write('  3a-3b[', k, ' ,' , m, ' ]= ', 3*( a[k,m]- b[k,m]));  end; writeln('   '); end;  writeln('   '); writeln; end.
Протестувати  алгоритм для 10-цифрових: а) const =3; б) const =4;  в) const =9. 

Практична робота 32 
Обчислювальні алгоритми на масивах

Завдання 1. Створити та реалізувати алгоритм мовою Pascal, який знаходить потроєний квадрат суми усіх чисел в одномірному масиві, тобто  С= 3(а12+…+ар)2 і виводить новий масив, в якому кожний і-ий елемент дорівнює числу: C -a і*aі  , якщо у даному масиві А алгоритмом задаються випадкові 7-цифрові цілі  від’ємні числа.
program QUADRATSUMMA1; {Підрахунок потроєного квадрату суми чисел масиву}
const  n=2;    var a, b: array [1..n] of  integer;        c, s, i: integer;
begin        writeln ( 'Вводиться    ', n,  '  випадкових елементів масиву A:');
     for   i:=1  to  n   do  begin     a[i]:=-1000000-random(9000000);
write(' а[', i, ']=: ', a[i]);  write('     '); end; writeln;
writeln ( 'Виводиться    ', n,  '  елементів нового масиву різниць  C ІІ:');
     s:=0;        for i:=1 to n do  s:=s+a[i];   C:=3*s*s;
for i:=1 to n do  begin write('b[', i, ']= ', c- a[i]*a[i]);  write('     '); end; writeln;
writeln('Потроєний квадрат суми елементів масиву А:', C); writeln('*****************'); end.
Протестувати  алгоритм для 4-цифрових: а) const =7; б) const =6. 

Завдання 2. Створити та реалізувати алгоритм мовою Pascal, який змінює усі числа на протилежні і обмінює числа  місцями відносно головної діагоналі в двовимірному  масиві, якщо у масиві алгоритмом задаються випадкові 8-цифрові цілі додатні і від’ємні  числа.
program TRANSPONUVAN2;   {Обмін  елементів масиву відносно головної діагоналі}
const  n=3;       var  a,b: array [1..n, 1..n] of integer;            s, m, j, i, p: integer;
begin        writeln ( 'Вводиться    ', n*n,  '  випадкових елементів масиву');
     for    i:=1 to n do begin          for    j:=1 to n do begin 
      a[i, j]:=10000000+random(90000000)*(1- random(3));
write('  a[',i,';',j,']:= ' ,  a[i,j]);   end; writeln('   ');  end;  writeln(' Змінений  масив:');
p:=0;   for i:=1 to n do begin       for   j:=1 to n do begin
 b[i, j] :=- a[j,i];  write('  b[', i, ' ,' , j, ' ]=', b[i, j]);  write('  '); end; writeln('  ');  end;  writeln;
writeln('*****************');end.
Протестувати  алгоритм для 4-цифрових: а) const =2; б) const =4;   в) const =5. 

Завдання 3. Створити та реалізувати алгоритм мовою Pascal, який виводить два масиви розміром nxm у вигляді рядків та стовпців і знаходить поелементу різницю між потроєними  числами першого рядка масиву та подвоєними  числами другого рядка   двовимірного  масиву А(nxm) і результат записує у третій рядок, якщо у масиві А алгоритмом задаються випадкові 1-цифрові цілі додатні  числа.
program DELTA3;   {Різниця між потроєними  числами першого рядка масиву }
const  n=3; const  m=4;       var  b, a: array [1..n, 1..m] of integer;     j, i: integer;
begin   writeln ( 'Виведення ', n*m,  '  випадкових елементів масиву A: ');
for i:=1  to n do   begin      for j:=1  to m do  begin   a[i,j]:= 1+random(10) ;
 write('   a[',i,';',j,']:= ' ,  a[i,j]);   end; writeln('    ');  end;  writeln('   ');
writeln('Шуканий масив: ');
 for i:=1  to m do   begin  a[3, i]:= 3*a[1, i]- 2*a[2, i]; end;
 for i:=1  to n do   begin      for j:=1  to m do  begin
write('   b[',i,';',j,']:= ' ,  a[i,j]);   end; writeln('    ');  end;  writeln('   ');
writeln;   end.
Протестувати  алгоритм для   а) випадкових  10-цифрових: const  n=6; const  m=9; 
б) випадкових  7-цифрових:  const  n=7; const  m=8;  в)  4-цифрових: const  n=4; const  m=5.    

Практична робота 33 
Обчислювальні алгоритми на масивах

Завдання 1. Створити та реалізувати алгоритм мовою Pascal, який знаходить   суму чисел в кожному стовпчику двовимірного  масиву(таблиця чисел) і записує ці суми  у одномірний масив. При цьому  у початковому масиві nxn алгоритмом задаються випадкові дійсні,  як додатні  так і від’ємні  числа.
program SUMMA1;   {cума чисел у кожному стовпчику масиву}
const  n=3;  const  m=4;    var  a: array [1..n, 1..m] of realb: array [1..m] of real;     j, i, p: integer;
begin        writeln ( 'Вводиться    ', n*n,  '  випадкових елементів масиву');
for  i:=1 to n do begin  for j:=1 to m  do begin     a[i, j]:=-2-random(5)+0.8*random(4);
write('  а[', i, ' ,' , j, ' ]= ', a[i, j]);  write('  '); end;    writeln('  ');  end;
 writeln ('Масив сум по стовпичках:');
    for i:=1 to m do begin  b[i]:=0;  end;
     for i:=1 to n do begin  for   j:=1 to m do  b[j]:=a[i, j]+ b[j];  end;
  for i:=1 to m do begin  write('  b[', i, ' ]=', b[i]);     write('  '); end;    writeln;
writeln('*******');end.
Протестувати  алгоритм для: а) const  n=5; const m=6; б) const n=8; const m=8;   в) const  n=9  const m=10;   г) const  n=7; const m=10;  д) const n=1; const m=10.
Завдання 2. Створити та реалізувати алгоритм мовою Pascal, який знаходить   суму чисел в кожному рядку  двовимірного  масиву(таблиця чисел) і записує ці суми  у одномірний масив. При цьому  у початковому масиві nxn алгоритмом задаються випадкові дійсні,  як додатні  так і від’ємні  числа.
program SUMMA2;   {cума чисел у кожному рядку масиву}
const  n=3;  const  m=4; 
var  a: array [1..n, 1..m] of realb: array [1..n] of real;     j, i: integer;
begin        writeln ( 'Вводиться    ', n*n,  '  випадкових елементів масиву');
for  i:=1 to n do begin  for j:=1 to m do begin     a[i, j]:=-2-random(5)+0.8*random(4);
write('  а[', i, ' ,' , j, ' ]= ', a[i, j]);  write('  '); end;    writeln('  ');  end;
 writeln ('Масив сум по рядках:');      for i:=1 to n do begin  b[i]:=0;  end;
     for i:=1 to m do begin  for   j:=1 to n do  b[j]:=a[j, i]+ b[j];  end;
  for i:=1 to n do begin  write('  b[', i, ' ]=', b[i]);     write('  '); end;    writeln;
writeln('*******');end.

Протестувати  алгоритм для: а) const  n=2; const m=6; б) const n=3; const m=8;   в) const  n=1  const m=10;   г) const  n=3; const m=5;  д) const n=1; const m=1.



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

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