Program progn;
usesWincrt;
Const
n=4;
m=4;
Var
i,j:byte;
a:array[1..n,1..m]ofinteger;
b:array[1..n]ofinteger;
s,k:byte;
{ аналогично предыдущей }
Begin
fori:=1toN do
read(b[i]);
forj:=1tomdo
Begin
s:=0;
fori:=1tondo
Begin
read(a[i,j]);
s:=s+b[i]*a[i,j];{выполнение
умножения}
End;
c[j]:=s;
End;
write(s);
End.
Пример7_11.Вычисление произведения всех элементов массива.
Programlupa3;
UsesWinCrt;
const
a:array[1..4,1..4]ofinteger=((4,2,-3,-6),
(1,8,3,2),{Ввод с помощью}
(1,4,98,3),{типизированной
константы}
(3,1,1,1));
var
p,i,j:integer;
begin
writeln(‘В двумерном массиве вычислить произведение’);
writeln (‘всех элементов массива.’);
writeln (‘== Дана матрица==’);
fori:=1to4do
Begin
forj:=1to4do
write(‘ ‘,a[i,j]:3);
writeln;
End;
p:=1;
fori:=1to4 do
forj:=1to4do
Begin
p:=p*a[i,j];
End;
writeln(‘ *Результат*’);
write(‘ ***’, p,’***’);
End.
Пример7_12.Вычисление произведения двух матриц а (2,3) и b (3, 2)
ProgramProg10;
UsesWinCrt;
Var
a,b,c:array[1..5,1..5]ofinteger;
i,j,f,s:byte;
Begin
writeln('Даны две матрицы');
randomize;
fori:=1to2do
Begin
forj:=1to3do
a[i,j]:=random(10);
End;
fori:=1to2 do
Begin
forj:=1to3do
Begin
write(a[i,J]:3);
End;
writeln;
end; {Заполение и вывод матриц}
writeln;
forj:=1to3do
forf:=1to2do
b[j,f]:=random(10);
forj:=1to3do
Begin
forf:=1to2 do
write(b[j,f]:3);
writeln;
End;
writeln;
writeln('3aдaние: найти произведение этих матриц');
writeln;
fori:=1to2do
forf:=1to2do
Begin
s:=0;
forj:=1to3do {поиск произведения}
s:=s+a[i,J]*b[j,f];
c[i,f]:=s;
End;
fori:=1to2do
Begin
forf:=1to2do {вывод результата}
write(c[i,f]:5);
writeln;
End;
readln;
readln;
End.
Пример7_13.Получить единичную матрицу путем замены элементов на главной диагонали на 1, а остальные – на 0
Programmas4;
Var
a:array[1..5,1..5]ofinteger;
i,j:byte;
Begin
writeln(‘Дана матрица:5*5’);
fori:=1to5do
forj:=1to5do {заполнение и вывод массива}
a[i,j]:=random(100);{датчик случайных чисел}
fori:=1to5 do
Begin
forj:=1to5do
write(a[i,j]:3);
writeln;
End;
writeln;
writeln(‘Задание: получить единичную матрицу’);
writeln(‘путем замены элементов на главной’);
writeln(‘диагонали на1, а остальные – на 0’);
for i:=1 to 5 do
for j:=1 to 5 do
if i=jthen {замена элементов массива в соответствии}
{с определением единичной матрицы }
a[i,j]:=1
Else
a[i,j]:=0;
writeln;
writeln(‘Результат’);
fori:=1to5do
Begin
forj:=1to5do {вывод результата}
write(a[i,j]:3);
writeln;
End;
End.
Пример7_14.Поменять местами два элемента в двумерном массиве
Programmas5;
useswincrt;
Const
n=4;
Type
t=array[1..n]ofinteger;
Var
b:boolean;
a:array[1..n]oft;
i,j,f.e,g,s:byte;
k:integer;
Begin
writeln(‘Дана матрица:’);
randomize;
fori:=1to n do
Begin
forj:=1to n do
begin {заполнение и вывод массива}
a[i,j]:=random(20);
write(a[i,j]:3);
End;
writeln;
End;
writeln(‘Задание: поменять местами любые два элемента’);
Repeat
writeln(‘введите номера строк’);
b:=false;
readln(f);
readln(e);{считывание номеров строк и столбцов}
writeln(‘введите номера столбцов’);
readln(g);
readln(s);
if(f<=n)and (e<=n)and(g<=n)and(s<=n)then
b:=true
Else
writeln(‘Массив', n,'х',n, 'Введите числа<4.’);
writeln;
untilb=true;
k:=a[e,s];
a[e,s]:=a[f,g];{перестановка элементов}
a[f,g]:=k;
writeln(‘измененная матрица’);
fori:=1to n do
Begin
forj:=1to n do
write(a[i,j]:3);{ вывод результата }
writeln;
End;
End.
Пример7_15.В двумерном массиве найти сумму максимальногои минимального элементов, если она меньше 0, тогда все отрицательные элементы матрицы, лежащие выше главной диагонали, заменить на нули.
prodramkonst1;
Var
a:array[1..6,1..6]ofinteger;
max, min,i,j,p:integer;
Begin
writeln(‘В двумерном массиве найти сумму макс. и мин.
элемента,’);
writeln(‘если она меньше 0, тогда все отрицательные элементы
матрицы,’);
writeln(‘лежащие выше главной диагонали, заменить на нули.’);
writeln(‘Исходная матрица’);
fori:=1to6do
forj:=1to6do
read (a[i,j]);{считывание массива из файла}
fori:=1to6do
Begin
forj:=1to6do
write(a[i,j]:3); {вывод массива в матричной форме}
writeln;
End;
writeln;
max:=a[1,1];
fori:=1to6do
forj:=1to6do {поиск и вывод максимального элемента}
ifmax<a[i,j]thenmax:=a[i,j];
writeln(‘максимальный элемент’, max);
min:=a[1,1];
fori:=1to6do
forj:=1to6do
ifmin>a[i,j]thenmin:=a[i,j];{поиск и вывод
минимального элемента}
writeln(‘минимальный элемент’,min);
p:=min+max;{поиск и вывод суммы}
writeln(‘сумма макс. и мин. элемента’,p);
ifp<0then begin
fori:=1to6do
forj:=1to6do
if(i<j) and (a[i,j]<0)thena[i,j]:=0; {замена
элементов по условию}
End;
writeln(‘измененная матрица”);
fori:=1to6do
Begin
forj:=1to6do {вывод измененного массива в
матричной форме}
write(a[i,j]:3);
writeln:
End;
readln;
End.
Пример7_16. Пусть надо посчитать общее количество продукции, е пускаемой каждым заводом, и количество продукции каждого наимено ния, выпускаемой всеми заводами.
Вычисляемые и исходные данные объединить в одну таблицу.
Изделие1 Изделие 2 изделие 3 Изделие 4 Всего
Завод 1 | |||||
Завод 2 | |||||
Завод 3 | |||||
Всего |
Для представления таблицы в программе используем двумерный массив:
ргоd: аггау [1..zab+1,1..izd+].
Ниже приведен текст программы, решающей поставленную задачу.
cost:
zab=3 ;
izd=4;
Var
prod:аггау[1..zab+1,1..izd+1]ofinteger;
i:integer; { номер завода }
j:integer; { номер изделия }
Begin
writeln ( 'Ввод исходных данных. ' ) ;
for i:=1 to zav do
Begin
writeln ('Завод', i:2);
for j:=1 to izd do
begin
write ('Изделие', j:2, ' ');
readln (prod[i,j]);
end;
end;
{вычислим общее колическтво изделий
выпускаемых каждым заводом}
for i:=1 to zav do
begin
prod [i,izd+1]:=0;
for j:=1 to izd do
prod[i,izd+1]:= prod [i,izd+1]+prod[i,j];
end;
{вычислим количество изделий одного наименованияб
выпущенных всеми заводами}
for j:=1 to izd do
begin
prod [zav+1,j]:=0;
for i:=1 to zav do
prod [zav+1,j]:=prod[zav+1]+prod[i,j];
end;
{вывод итоговой таблицы}
writeln (' 1 2 3 4 Всего');
for i:=1 to zav+1 do
begin
if i< zav then write ('Завод ', i:2)
else write ('Всего ');
for j:=1 to izd +1 do
write (prod[i,j]:5;
writeln;
end;
end.
Пример работы программы:
Ввод исходных данных. Завод 1
Изделие1->120
Изделие2->100
Изделие3->100
Изделие4->25Завод 2
Изделие1->100
Изделие2->50
Изделие3->75
Изделие4->40
Завод 3
Изделие 1->75
Изделие2->50
Изделие3->50
Изделие4->50
1 2 3 4 Всего
Завод 1 120 100 100 25 345
Завод 2 100 50 75 40 265
Завод 3 75 50 50 50 225 <
Зсего 295 200 225 115 835
Обратите внимание на использование констант в программе. Если изменятся исходные данные, например, число заводов, то надо будет внести изменения только в разделе описания констант.
Следующая программа обрабатывает результаты соревнований по легкой атлетике.
Завоевано медалей:
Дата добавления: 2015-01-13; просмотров: 982;