Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
delphi_p1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
571.39 Кб
Скачать

Задачи.

115. Удалить из одномерного целочисленного массива размерности n первый отрицательный элемент.

116. Удалить из одномерного целочисленного массива размерности n последний чётный элемент.

117*. Удалить из одномерного целочисленного массива размерности n все отрицательные элементы.

118. Вставить число x после первого отрицательного элемента.

119. Вставить число x перед последним отрицательным элементом.

120. Дана последовательность различных действительных чисел a1,…,a10 . Поменять местами максимальный элемент и последний элемент последовательности.

121. Дана последовательность различных действительных чисел a1,…,a10 . Поменять местами минимальный элемент и первый отрицательный элемент последовательности.

122. В одномерном целочисленном массиве размерности n (n=10) поменять местами первую и вторую половины массива.

a1, a2, … a5, a6, … a9, a10  a6, … a9, a10, a1, a2, … a5

123. Дан одномерный целочисленный массив размерности n (n=10). Переставить его элементы следующим образом: поменять местами первые три и последние три элемента, сохраняя порядок их следования.

124*. Дан одномерный целочисленный массив размерности n (n=10). Переставить в обратном порядке элементы массива, расположенные между минимальным и максимальным элементами.

Двумерные массивы. Инициализация. Работа с элементами.

Пример 36. Заполнить двумерный массив размера nm (n строк, m столбцов) целыми числами, введёнными с клавиатуры. Ко всем отрицательным элементам массива прибавить первый элемент соответствующей строки. Вывести преобразованный массив на экран.

const n=4; m=5;

type lin = array[1..m] of integer;

mas = array[1..n] of lin;

var a:mas;

procedure init1_mas(var x:mas);

var i,j:integer;

begin

for i:=1 to n do for j:=1 to m do read(x[i,j])

end;

procedure print_mas(x:mas);

var i,j:integer;

begin

for i:=1 to n do

begin

for j:=1 to m do write(x[i,j]:6);

writeln

end

end;

procedure solve(var x:mas);

var i,j:integer;

begin

for i:=1 to n do

for j:=1 to m do if x[i,j]<0 then x[i,j]:=x[i,j] + x[i,1]

end;

begin

init1_mas(a);

solve(a); print_mas(a);

readln; readln;

end.

Пример 37. Заполнить двумерный массив размера nm (n строк, m столбцов) случайными действительными числами из интервала [-4, 4]. К элементам k1-ой строки прибавить соответствующие элементы k2-ой строки (k1=2, k2=3).

const n=4; m=5;

type lin = array[1..m] of real;

mas = array[1..n] of lin;

var a,b:mas;

procedure init2_mas(var x:mas);

var i,j:integer;

begin

randomize;

for i:=1 to n do for j:=1 to m do x[i,j]:=(-40 + random(81))/10;

end;

procedure print_mas(x:mas);

var i,j:integer;

begin

for i:=1 to n do

begin for j:=1 to m do write(x[i,j]:6:1); writeln end;

writeln;

end;

procedure sum_str(var x:mas; k1, k2:integer);

var j:integer;

begin

for j:=1 to m do x[k1,j]:=x[k1,j]+x[k2,j];

end;

begin

init2_mas(a); print_mas(a);

b:=a; sum_str(b, 2, 3); print_mas(b);

readln;

end.

Пример 38. Заполнить квадратную матрицу размера nn следующим образом:

const n=8;

type mas = array[1..n,1..n] of integer;

var a:mas;

procedure fill(var x:mas);

var i,j:integer;

begin

for i:=1 to n do for j:=1 to n do

if j=n–i+1 then x[i,j]:=i else x[i,j]:=0

end;

procedure print_mas(x:mas);

var i,j:integer;

begin

for i:=1 to n do

begin for j:=1 to n do write(x[i,j]:6); writeln; writeln end;

end;

begin

fill(a); print_mas(a);

readln;

end.

Пример 39. Дан двумерный целочисленный массив размера nm. Напечатать номера строк, все элементы которых чётны.

const n=4; m=5;

type lin = array[1..m] of integer;

mas = array[1..n] of lin;

var a:mas; k:integer;

procedure init1_mas(var x:mas);

var i,j:integer;

begin

for i:=1 to n do for j:=1 to m do read(x[i,j])

end;

function control(y:lin):boolean;

var j:integer; t:boolean;

begin

t:=true; j:=1;

while (j<=m) and t do

begin t:=not odd(y[j]); inc(j) end;

result:=t

end;

begin

init1_mas(a);

for k:=1 to n do

if control(a[k]) then writeln(k);

readln; readln

end.

Пример 40. Дан двумерный целочисленный массив размера nm. Сформировать одномерный массив, каждый элемент которого равен сумме элементов соответствующей строки исходного массива. Вывести полученный одномерный массив на экран. Найти номер строки с максимальной суммой элементов.

const n=4; m=5;

type lin = array[1..m] of integer;

mas = array[1..n] of lin;

vector = array[1..n] of integer;

var a:mas; rez:vector; nmax:integer;

procedure init1_mas(var x:mas);

var i,j:integer;

begin

for i:=1 to n do for j:=1 to m do read(x[i,j])

end;

procedure print(x:vector);

var k:integer;

begin

for k:=1 to n do write(x[k]:5);

writeln

end;

procedure sum_str(x:mas; var z:vector);

var i,j,s:integer;

begin

for i:=1 to n do

begin

z[i]:=0;

for j:=1 to m do z[i]:=z[i] + x[i,j]

end;

end;

function max_sum(z:vector):integer;

var k, max:integer;

begin

max:=z[1]; result:=1;

for k:=2 to n do

if max<z[k] then

begin max:=z[k]; result:=k end;

end;

begin

init1_mas(a);

sum_str(a, rez); print(rez);

nmax:=max_sum(rez); writeln(nmax);

readln; readln;

end.

Пример 41. Найти произведение двух квадратных матриц размера nn.

const n=4;

type mas = array[1..n, 1..n] of integer;

var a, b, c:mas;

procedure init1_mas(var x:mas);

var i,j:integer;

begin

for i:=1 to n do for j:=1 to n do read(x[i,j])

end;

procedure print_mas(x:mas);

var i,j:integer;

begin

for i:=1 to n do

begin

for j:=1 to n do write(x[i,j]:6); writeln

end

end;

procedure mult(x,y:mas; var z:mas);

var i, j, k:integer;

begin

for i:=1 to n do for j:=1 to n do

begin

z[i,j]:=0;

for k:=1 to n do z[i,j]:=z[i,j] + x[i,k]*y[k,j]

end

end;

begin

init1_mas(a);

init1_mas(b);

mult(a, b, c);

print_mas(c);

readln; readln;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]