
- •Часть I
- •1.1 Простейшее консольное приложение. Основные понятия
- •Задачи.
- •1.2 Простые типы
- •Целые типы.
- •Задачи.
- •Символьные типы.
- •Логические типы
- •Задачи.
- •Перечислимый тип
- •Вещественные типы
- •Тип дата-время
- •1.3 Операторы Оператор присваивания
- •Составной оператор
- •Условный оператор if
- •Задачи.
- •Оператор выбора case
- •Задачи.
- •Операторы цикла
- •Задачи.
- •Задачи.
- •Задачи.
- •1.4 Процедуры и функции.
- •Процедуры.
- •Функции.
- •Вызов подпрограмм.
- •Локализация имён.
- •Параметры.
- •Задачи.
- •Перегрузка функций.
- •Процедурные типы.
- •1.5 Динамическая память и указатели
- •1.6 Массивы
- •Статические массивы
- •Задачи.
- •Задачи.
- •Задачи.
- •Задачи.
- •Динамические массивы
- •Параметры-массивы
- •1.7 Строки Строковые типы
- •Стандартные подпрограммы для строк.
- •Строковые выражения
- •Задачи.
- •Преобразование строк в числовые типы и обратно.
- •1.8 Множества
- •Задачи.
- •1.9 Записи
- •Задачи.
- •Литература.
- •Оглавление
Задачи.
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. Заполнить двумерный массив размера nm (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. Заполнить двумерный массив размера nm (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. Заполнить квадратную матрицу размера nn следующим образом:
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. Дан двумерный целочисленный массив размера nm. Напечатать номера строк, все элементы которых чётны.
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. Дан двумерный целочисленный массив размера nm. Сформировать одномерный массив, каждый элемент которого равен сумме элементов соответствующей строки исходного массива. Вывести полученный одномерный массив на экран. Найти номер строки с максимальной суммой элементов.
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. Найти произведение двух квадратных матриц размера nn.
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.