1.4 Примеры задач
1. Найти сумму всех элементов некоторого двумерного массива и сравнить их с произведением элементов некоторой строки.
program zadacha_1;
uses crt;
var
a: array[1..50,1..50] of integer; {массив}
i,j: integer; {переменные счетчики}
n,m: integer; {количество строк и столбцов массива}
s: integer; {сумма элементов массива}
p: integer; {произведение элементов некоторой строки}
q: integer; {некоторая строка}
begin
clrscr;
write('Введите количество строк: ');
readln(n);
write('Введите количество столбцов: ');
readln(m);
for i:=1 to n do
for j:=1 to m do
begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
writeln('Матрица:');
for i:=1 to n do
begin
for j:=1 to m do
begin
write(a[i,j]:3);
end;
readln;
end;
for i:=1 to n do
for j:=1 to m do
begin
s:=s+a[i,j];
end;
write('Введите номер строки для работы: ');
readln(q);
p:=1;
for j:=1 to m do
begin
p:=p*a[q,j];
end;
writeln('Сумма элементов матрицы: ',s);
writeln('Произведение элементов строки ',q,' равна ',p);
if s>p then
begin
writeln('Сумма больше произведения');
end
else
begin
writeln('Произведение больше произведения');
end;
readln;
end.
2.Поменять второй столбец матрицы с предпоследним.
program zadacha_2;
uses crt;
var
a: array [1..50,1..50] of integer;
b: array [1..50,1..50] of integer;
m,n,i,j: integer;
begin
clrscr;
writeln('Количество строк');
readln(n);
writeln('Количество столбцов');
readln(m);
for i:= 1 to n do
for j:= 1 to m do
begin
write ('a[',i,',',j,']=');
readln (a[i,j]);
end;
writeln('Исходная матрица:');
for i:=1 to n do begin
for j:=1 to m do
write (a[i,j]);
writeln;
end;
for i:=1 to n do begin
for j:=1 to m do
b[i,j]:=a[i,j];
end;
for i:=1 to n do begin
a[i,2]:=b[i,m-1];
end;
for i:=1 to n do begin
a[i,m-1]:=b[i,2];
end;
writeln('Полученная матрица:');
for i:=1 to n do begin
for j:=1 to m do
write (a[i,j]);
writeln;
end;
readln;
end.
3.Дана матрица размерности m*n. Расположить элементы последнего столбца по убыванию.
program zadacha_3;
uses crt;
var
a:array [1..50] of integer;
b:array [1..50] of integer;
k,i,m,j,n,r,l:integer;
begin
clrscr;
write('Введите количество строк');
readln(n);
write('Введите количество столбцов');
readln(m);
for i:=1 to n do
for j:=1 to m do
begin
write('a[',i,']={b[',j,']=}');
readln(a[i]);
end;
for i:=1 to n-1 do
for k:=i+1 to n do
{for j:=1 to m do}
if a[k]>a[i] then
begin
r:=a[i];
a[i]:=a[k];
a[k]:=r;
end;
writeln('Отсортированый массив:');
for i:=1 to n do
writeln(a[i]:4);
readln;
end.
4. Дана квадратная матрица. Транспонировать её. Посчитать сумму всех нечётных элементов транспонированной матрицы.
program zadacha_4;
uses crt;
var
a:array [1..5,1..5] of integer;
S,i,j,n,c:integer;
begin
clrscr;
write ('введите кол-во строк и столбцов ');
readln (n);
for i:=1 to n do
for j:=1 to n do
begin
write ('a[',i,',',j,']=');
readln (a[i,j]);
end;
for i:=1 to n do
for j:=i+1 to n do
begin
c:=a[i,j];
a[i,j]:=a[j,i];
a[j,i]:=c;
end;
S:=0;
for j:=1 to n do
for i:=1 to n do
begin
if a[j,i] mod 2 <>0 then
begin
S:=S+a[j,i];
end;
end;
writeln ('S=',S);
readln;
end.
5. Дан двумерный массив. Посчитать сумму его двух столбцов, вывести большую сумму.
program zadacha_5
uses crt;
var
a:array[1..3,1..3] of integer;
i,j,m,n,s,s1,p,p1,max,p3:integer;
begin
clrscr;
write('введите количество строк');
readln(n);
write('введите количество столбцов');
readln(m);
for i:=1 to n do
for j:=1 to m do
begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
begin
write('введите номер столбца');
readln(p);
for i:=1 to n do
for j:=1 to m do
if j=p then s:=s+a[i,p];
write('s=',s);
readln;
end;
s1:=0;
begin
write('введите номер другого столбца');
readln(p1);
for i:=1 to n do
for j:=1 to m do
if j=p1 then s1:=s1+a[i,p1];
write ('s1=', s1);
readln;
end;
begin
max:=s;
if s < s1 then
begin
max:=s1;
write('максимальная сумма',max);
readln;
write('вывести на экран номер столбца большей суммы', p3);
readln(p3);
end;
end;
end.
end.
6. Заполнить матрицу по образцу:
0
0
0
0
program zadacha_6;
uses crt;
var
a:array [1..50,1..50] of integer;
n:integer;
i,j,k:integer;
begin
clrscr;
write ('Введите количество строк и столбцов в матрице');
readln (n);
k:=0;
for i:=1 to n do
for j:=1 to n do
if i=j then
begin
a[i,j]:=k;
k:=k+1;
end
else
begin
a[i,j]:=0;
end;
for i:=1 to n do
for j:=1 to n do
begin
writeln('a[',i,',',j,']=',a[i,j]);
readln;
end;
readln; end.
... ячейка, а имя переменной превращается в адрес ячейки. Появление этого адреса происходит в результате работы специального оператора языка (NEW), однако его значение в большинстве случаев не используется при программировании на алгоритмических языках типа Паскаль. Условимся считать, что адрес ячейки, которая будет хранить переменную А, есть А. Или, другими словами, А - это общее имя переменной и ...
... , сколько времени потребуется для его составления, как много места для возможных ошибок? Естественно, об этом задумывались и авторы языков программирования. Поэтому во всех существующих языках имеются типы переменных, отвечающие за хранение больших массивов данных. В языке Паскаль они так и называются: "массивы". Массивом будем называть упорядоченную последовательность данных одного типа, ...
... Богатырев - руководитель «Студии программных технологий 1024» при издательстве «Открытые системы». E-mail: bogatyrev@osp.ru. Из биографии Н. Вирта Профессор Никлаус Вирт (Niklaus K. Wirth), автор языка Паскаль, закончил Швейцарский федеральный технологический институт ETH (Eidgenoessische Technische Hochschule) в родном Цюрихе (1958). В Лавальском университете в Квебеке (Канада) он получил ...
... I+J<N+I элементы матрицы расположены над побочной диагональю I+J>N+I элементы матрицы расположены под побочной диагональю. Ниже приведены примеры задач с массивами на языке Turbo Pascal. Пример 1. Ввод значений элементов массива с помощью генератора случайных чисел и вывод их в строчку. Примечание: Для использования случайных чисел в TP используются операторы ...
0 комментариев