Применение алгоритмов при решении программных задач
Самостоятельная работа 1. Линейные
алгоритмы, условия, циклы
1. Даны две переменные
вещественного типа A и B. Перераспределить значения в данных переменных так,
чтобы A оказалась меньшее из значений, в B - больше
Код:
, b, p: real;('Введите значения A и
B через пробел: '); (a,b); a > b then :=a; :=b; :=p; ; ('A = ', a, '; B = ',
b);.
Блок-схема
2. Даны числа x, y, x1, y1, x2,
y2. Проверить истинность высказывания: «Точка с координатами (x,y) лежит внутри
прямоугольника, левая верхняя вершина которого находится в точке (x1,y1),
правая нижняя вершина - в точке (x2,y2)»
Код:
,y,x1,y1,x2,y2: integer;('x:
');(x);('y: ');(y);('x1: ');(x1);('y1: ');(y1);('x2: ');(x2);('y2:
');(y2);(x>x1) and (x<x2) and
(y<y1) and (y>y2) then('Верно')
else('Не верно');
End.
Блок-схема
3. Написать программу,
вычисляющую произведение первых n нечетных натуральных чисел
Код:
, i, s, n: integer; :=3; s:=1; i:=1;
('Введите n:'); (n); :=s*k; i:=i+1; k:=k+2; =n; ('произведение первых n
нечётных натуральных чисел: ', s); .
Блок-схема
4. С клавиатуры вводится
последовательность чисел до тех пор, пока не задается ноль. Вывести на экран те
из них, которые попадут в интервал [ a,b]
Код:
Блок-схема:
5.
Дано натуральное число N. Получить число P, содержащее в своей записи цифры
числа N, записанные в обратном порядке. 234->432
Код
, P: Longint;('N= ');(N);:=0;:=(P+(N
mod 10))*10;:=N div 10;N=0;:=P div 10;('P= ',P);.
Блок-схема
6.
Дано целое число N>1. Вывести наибольшее из целых чисел K, для которых сумма
1+2+3…+K меньше или равна N, и саму эту сумму
Код:
Var, K, Summ: integer;('N=
');(N);:=0;:=0;(K);(Summ,K);Summ+K>N;('K= ',K);('Summ= ',Summ);.
Блок-схема
Самостоятельная работа 2. Массивы,
строки, множества, подпрограммы, файлы
1. Дан массив вещественных
чисел. Указать позицию последнего экстремального элемента (т.е. минимального
или максимального)
Код:
:array [1..100] of integer;, min, n,
i, maxInd, minInd:integer;('n=');(n);i:= 1 to n do begin(a[i]);(a[i],' ');;:=
0; := 0;:= a[1];:= a[1];i:=1 to n do begina[i] > max then begin:= a[i];:=
I;;a[i] < min then begin:= a[i];:= I;;; maxInd > minInd then //индекс
какого экстремального значения больше, тот и выводится на экран('index (max) =
', maxInd) ('index (min) = ', minInd);
end.
Блок-схема
2.
Дан массив из N целых чисел. Сформировать массив M, в который поместить сначала
все нулевые элементы исходного массива, затем - отрицательные элементы, затем
положительные элементы
crt;n=10;a,b:array[1..n]of integer;,k:integer;;('->
');i:=1 to n do read(a[i]);;:=0;i:=1 to n do if a[i]>0
then(k);[k]:=a[i];;i:=1 to n do if a[i]<0 then(k);[k]:=a[i];;i:=1 to n do if
a[i]=0 then(k);[k]:=a[i];;i:=1 to n do write(b[i],' ');;
end.
Блок-схема
3. Дан массив A из N целых
чисел. Осуществить циклический сдвиг элементов массива вправо на одну позицию.
При этом A1 перейдет в A2, A2 в A3 и т.д. An перейдет в A1
Код:
;:array [1..100] of
integer;,n,temp:integer;;('Введите количество элементов: ');(n);('Исходный
массив: ');i:=1 to n do[i]:=random(10)-5;(a[i],' ');;;('Массив после сдвига
элементов на одну позицию: ');:=a[n];i:=n downto 2 do[i]:=a[i-1];[1]:=temp;i:=1
to n do(a[i],' ');;.
Блок-схема
алгоритм массив матрица
4. Дана целочисленная матрица A
размерности 5x5. Вывести ее элементы из каждого столбца в обратном порядке
Код:
= array[1..5,1..5] of
integer;a:matrix;:integer;var i:=1 to 5 dovar j:=1 to 5
do[i,j]:=random(10);('Дана целочисленная матрица');var i:=1 to 5 dovar j:=1 to
5 do(a[i,j],' ');;;('Вывести элемент из каждого столбца в обратном
порядке');;var j:=1 to 5 do:=5;(j,' столбец ');not(k=0) do(a[k,j],'
');:=k-1;;;;.
Блок-схема
5.
Даны непустые строки S1 и S2. Определить количество вхождений строки S2 в
строку S1
Код:
program instring;s1, s2: string;:
integer;('s1 = ');(s1);('s2 = ');(s2);:= 0;pos(s2, s1) > 0 do(s1, 1, pos(s2,
s1) + length(s2));:= i + 1;('Count of join s2 in s1: ', i);.
Блок-схема
Код
SumRange(A, B: integer): integer;i,
t: integer;:= 0;A > B then SumRange:= 0 elsei:= A to B do t:= t + i;:= t;a,
b, c: integer;('введите a, b, c: ');(a, b, c);('сумма чисел от a до b: ',
SumRange(a, b));('сумма чисел от b до c: ', SumRange(b, c)).
Блок-схема
7.
Сформировать файл, содержащий сведения об n работниках предприятия. Должны
учитываться следующие сведения: ФИО, стаж работы, профессия. Вывести фамилии
людей определенной профессии с опытом работы не менее X лет (профессия и
минимальный стаж вводятся с клавиатуры)
Код:
p14_07;=record:string[50];:word;:string[50];;:tperson;:
file of tperson;:string[50];:word;,i:byte;('Укажите режим работы:');(#9,'1-ввод
данных в файл');(#9,'2-вывод данных из файла');(c);(data, 'p14_07.dat');c of
:begin('Для прекращения ввода данных
укажите пустую фамилию или специальность...');(data);.name:='';
person.year:=0;person.speciality:='';('---------------------------------------');('
Укажите ФИО работника: '); readln(person.name);person.name='' then break;('
Укажите год приема на работу: ');readln(person.year);(' Укажите специальность:
');readln(person.speciality);(person.name<>'') and
(person.speciality<>'') then(data,person);:=i+1;;{/if}(person.name = '')
or (person.speciality = '');('В файл сохранено ',i,' записей о
сотрудниках.');(data);;{/case-1}
:begin(data);('Укажите
специальность:');readln(speciality);('Укажите минимальный стаж
работы:');readln(stage);not eof(data) do(data, person);(person.speciality =
speciality) and ((2015-person.year) > stage) then:=i+1;(i,'. ',
person.name);;;{while}(i = 0) then writeln('Данные, подходящие под указанные
критерии, не найдены.');(data);;{/case-2};{/case}.
8. Сформировать отдельный
модуль, содержащий описание функции Quarter(x,y) целого типа, определяющей
номер координатной четверти, в которой находится точка с ненулевыми
координатами. Подключить данный модуль, с помощью его функции Quarter
определить четверти для пяти точек
Код
p14_08;u14_08;:byte;,y:integer;i:=1
to 5 do('Укажите координаты ',i,'и точки (x,y):
');readln(x,y);quarter(x,y)>0 then writeln('Указанная точка расположена в
',quarter(x,y),'и координат четверти.')writeln('ТОчка расположена НА
КООРДИНАТАХ ОСИ.');;.
Блок-схема
Код
u14_08;quarter(x,y:
integer):byte;quarter(x,y: integer):byte;(x=0) or (y=0) then
{частный случай точка на
координатной оси}:=0;;;x > 0 theny > 0 then quarter:=1quarter:=4;y
> 0 then quarter:=2quarter:=3;;;{function}.
Блок-схема