Применение алгоритмов при решении программных задач
Линейные алгоритмы, условия и циклы. Массивы, строки, множества, подпрограммы и файлы. Определение позиций экстремальных элементов в массивах вещественных чисел. Осуществление циклических сдвигов элементов массива. Определение элементов матрицы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 10.04.2015 |
Размер файла | 719,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Самостоятельная работа 1. Линейные алгоритмы, условия, циклы
1. Даны две переменные вещественного типа A и B. Перераспределить значения в данных переменных так, чтобы A оказалась меньшее из значений, в B - больше
Код:
var
a, b, p: real;
begin
write('Введите значения A и B через пробел: ');
readln(a,b);
if a > b then
begin
p:=a;
a:=b;
b:=p;
end;
writeln('A = ', a, '; B = ', b);
end.
Блок-схема
2. Даны числа x, y, x1, y1, x2, y2. Проверить истинность высказывания: «Точка с координатами (x,y) лежит внутри прямоугольника, левая верхняя вершина которого находится в точке (x1,y1), правая нижняя вершина - в точке (x2,y2)»
Код:
Var
x,y,x1,y1,x2,y2: integer;
Begin
Write('x: ');
Readln(x);
Write('y: ');
Readln(y);
Write('x1: ');
Readln(x1);
Write('y1: ');
Readln(y1);
Write('x2: ');
Readln(x2);
Write('y2: ');
Readln(y2);
If (x>x1) and (x<x2) and
(y<y1) and (y>y2) then
Writeln('Верно') else
Writeln('Не верно');
End.
Блок-схема
3. Написать программу, вычисляющую произведение первых n нечетных натуральных чисел
Код:
var
k, i, s, n: integer;
begin
k:=3; s:=1; i:=1;
writeln('Введите n:');
readln(n);
repeat
s:=s*k; i:=i+1; k:=k+2;
until
i=n;
writeln('произведение первых n нечётных натуральных чисел: ', s);
end.
Блок-схема
4. С клавиатуры вводится последовательность чисел до тех пор, пока не задается ноль. Вывести на экран те из них, которые попадут в интервал [ a,b]
Код:
Var
a,b,c: char;
S: string;
Begin
repeat
c:=readkey;
if c in ['1'..'9'] then
Begin
S:=S+c;
Write(c);
End;
until c='0';
Writeln('0');
Write('a= ');
Repeat
a:=readkey;
Until (a in ['0'..'9']);
Writeln(a);
Write('b= ');
Repeat
b:=readkey;
Until (b in ['0'..'9']);
Writeln(b);
Write('Result: ');
While S<>'' do
Begin
If (S[1]>=a)and(S[1]<=b) then
Write(S[1]);
delete(S,1,1);
End;
Writeln;
End.
Блок-схема:
5. Дано натуральное число N. Получить число P, содержащее в своей записи цифры числа N, записанные в обратном порядке. 234->432
Код
Var
N, P: Longint;
Begin
Write('N= ');
Readln(N);
P:=0;
Repeat
P:=(P+(N mod 10))*10;
N:=N div 10;
Until N=0;
P:=P div 10;
Writeln('P= ',P);
End.
Блок-схема
6. Дано целое число N>1. Вывести наибольшее из целых чисел K, для которых сумма 1+2+3…+K меньше или равна N, и саму эту сумму
Код:
Var
N, K, Summ: integer;
Begin
Write('N= ');
Readln(N);
K:=0;
Summ:=0;
Repeat
Inc(K);
Inc(Summ,K);
Until Summ+K>N;
Writeln('K= ',K);
Writeln('Summ= ',Summ);
End.
Блок-схема
Самостоятельная работа 2. Массивы, строки, множества, подпрограммы, файлы
1. Дан массив вещественных чисел. Указать позицию последнего экстремального элемента (т.е. минимального или максимального)
Код:
var
A:array [1..100] of integer;
max, min, n, i, maxInd, minInd:integer;
begin
write('n=');
readln (n);
for i:= 1 to n do begin
read(a[i]);
write(a[i],' ');
end;
maxInd:= 0;
minInd:= 0;
max:= a[1];
min:= a[1];
for i:=1 to n do begin
if a[i] > max then begin
max:= a[i];
maxInd:= I;
end;
if a[i] < min then begin
min:= a[i];
minInd:= I
end;
end;
writeln;
if maxInd > minInd then //индекс какого экстремального значения больше, тот и выводится на экран
writeln('index (max) = ', maxInd)
else
writeln('index (min) = ', minInd);
end.
Блок-схема
2. Дан массив из N целых чисел. Сформировать массив M, в который поместить сначала все нулевые элементы исходного массива, затем - отрицательные элементы, затем положительные элементы
Код:
uses crt;
const n=10;
var a,b:array[1..n]of integer;
i,k:integer;
begin
clrscr;
write('-> ');
for i:=1 to n do read(a[i]);
readln;
k:=0;
for i:=1 to n do if a[i]>0 then
begin
inc(k);
b[k]:=a[i];
end;
for i:=1 to n do if a[i]<0 then
begin
inc(k);
b[k]:=a[i];
end;
for i:=1 to n do if a[i]=0 then
begin
inc(k);
b[k]:=a[i];
end;
for i:=1 to n do write(b[i],' ');
readln;
end.
Блок-схема
3. Дан массив A из N целых чисел. Осуществить циклический сдвиг элементов массива вправо на одну позицию. При этом A1 перейдет в A2, A2 в A3 и т.д. An перейдет в A1
Код:
uses
crt;
var
a:array [1..100] of integer;
i,n,temp:integer;
begin
randomize;
write('Введите количество элементов: ');
readln(n);
writeln('Исходный массив: ');
for i:=1 to n do
begin
a[i]:=random(10)-5;
write(a[i],' ');
end;
writeln;
writeln('Массив после сдвига элементов на одну позицию: ');
temp:=a[n];
for i:=n downto 2 do
a[i]:=a[i-1];
a[1]:=temp;
for i:=1 to n do
write(a[i],' ');
readln;
end.
Блок-схема
алгоритм массив матрица
4. Дана целочисленная матрица A размерности 5x5. Вывести ее элементы из каждого столбца в обратном порядке
Код:
type
matrix = array[1..5,1..5] of integer;
var a:matrix;
k:integer;
begin
for var i:=1 to 5 do
for var j:=1 to 5 do
a[i,j]:=random(10);
writeln('Дана целочисленная матрица');
for var i:=1 to 5 do
begin
for var j:=1 to 5 do
write(a[i,j],' ');
writeln;
end;
writeln('Вывести элемент из каждого столбца в обратном порядке');
writeln;
for var j:=1 to 5 do
begin
k:=5;
write(j,' столбец ');
while not(k=0) do
begin
write(a[k,j],' ');
k:=k-1;
end;
writeln;
end;
end.
Блок-схема
5. Даны непустые строки S1 и S2. Определить количество вхождений строки S2 в строку S1
Код:
program instring;
var s1, s2: string;
i: integer;
begin
write('s1 = ');
readln(s1);
write('s2 = ');
readln(s2);
i:= 0;
while pos(s2, s1) > 0 do
begin
delete(s1, 1, pos(s2, s1) + length(s2));
i:= i + 1
end;
writeln('Count of join s2 in s1: ', i);
readln
end.
Блок-схема
6. Описать функцию SumRange(A,B) целого типа, находящую сумму всех целых чисел от А до В включительно (A и B - целые). Если А >В, то функция возвращает ноль. С помощью этой функции найти суммы чисел от А до В и от В до С, если даны числа А, В,С
Код
function SumRange(A, B: integer): integer;
var i, t: integer;
begin
t:= 0;
if A > B then SumRange:= 0 else
begin
for i:= A to B do t:= t + i;
SumRange:= t
end
end;
var a, b, c: integer;
begin
write('введите a, b, c: ');
readln(a, b, c);
writeln('сумма чисел от a до b: ', SumRange(a, b));
writeln('сумма чисел от b до c: ', SumRange(b, c))
end.
Блок-схема
7. Сформировать файл, содержащий сведения об n работниках предприятия. Должны учитываться следующие сведения: ФИО, стаж работы, профессия. Вывести фамилии людей определенной профессии с опытом работы не менее X лет (профессия и минимальный стаж вводятся с клавиатуры)
Код:
program p14_07;
type
tperson=record
name:string[50];
year:word;
speciality:string[50];
end;
var
person:tperson;
data: file of tperson;
speciality:string[50];
stage:word;
c,i:byte;
begin
writeln('Укажите режим работы:');
writeln(#9,'1-ввод данных в файл');
writeln(#9,'2-вывод данных из файла');
readln(c);
assign(data, 'p14_07.dat');
case c of
1:begin
writeln('Для прекращения ввода данных укажите пустую фамилию или специальность...');
rewrite(data);
repeat
person.name:=''; person.year:=0;person.speciality:='';
writeln('---------------------------------------');
write(' Укажите ФИО работника: '); readln(person.name);
if person.name='' then break;
write(' Укажите год приема на работу: ');readln(person.year);
write(' Укажите специальность: ');readln(person.speciality);
if (person.name<>'') and (person.speciality<>'') then
begin
write(data,person);
i:=i+1;
end;{/if}
until (person.name = '') or (person.speciality = '');
writeln('В файл сохранено ',i,' записей о сотрудниках.');
close(data);
end;{/case-1}
2:begin
reset(data);
write('Укажите специальность:');readln(speciality);
write('Укажите минимальный стаж работы:');readln(stage);
while not eof(data) do
begin
read(data, person);
if (person.speciality = speciality) and ((2015-person.year) > stage) then
begin
i:=i+1;
writeln(i,'. ', person.name);
end;
end;{while}
if (i = 0) then writeln('Данные, подходящие под указанные критерии, не найдены.');
close(data);
end;{/case-2}
end;{/case}
end.
8. Сформировать отдельный модуль, содержащий описание функции Quarter(x,y) целого типа, определяющей номер координатной четверти, в которой находится точка с ненулевыми координатами. Подключить данный модуль, с помощью его функции Quarter определить четверти для пяти точек
Код
program p14_08;
uses u14_08;
var
i:byte;
x,y:integer;
begin
for i:=1 to 5 do
begin
writeln('Укажите координаты ',i,'и точки (x,y): ');readln(x,y);
if quarter(x,y)>0 then writeln('Указанная точка расположена в ',quarter(x,y),'и координат четверти.')
else writeln('ТОчка расположена НА КООРДИНАТАХ ОСИ.');
end;
end.
Блок-схема
Код
unit u14_08;
interface
function quarter(x,y: integer):byte;
implementation
function quarter(x,y: integer):byte;
begin
if (x=0) or (y=0) then
begin
{частный случай точка на координатной оси}
quarter:=0;
exit;
end;
if x > 0 then
begin
if y > 0 then quarter:=1
else quarter:=4;
end
else
begin
if y > 0 then quarter:=2
else quarter:=3;
end;
end;{function}
end.
Блок-схема
Размещено на Allbest.ru
Подобные документы
Одномерные числовые массивы, образование элементами целочисленного массива невозрастающей последовательности. Программное нахождение суммы элементов каждой возможной строки матрицы и формирование массива из найденных сумм, вывод массива-результата.
лабораторная работа [12,8 K], добавлен 09.01.2011Расчет корня нелинейного уравнения методом касательных, методом простой итерации, с использованием циклических ссылок, с помощью средств подбора параметра. Формирование на экране произвольного массива (матрицы) чисел и вычисление его элементов по строкам.
контрольная работа [329,3 K], добавлен 25.02.2011Заполнение массива из целых чисел с присвоением элементам разных значений. Варианты программы с использованием различных операторов организации циклов. Определение квадрата максимального из четных элементов массива и общего числа нулевых элементов.
лабораторная работа [259,3 K], добавлен 14.05.2011Вычисление суммы положительных элементов массива. Упорядочивание элементов массива по убыванию. Решение задачи с помощью алгоритма, реализованного в среде Microsoft Visual 2008 Express. Реализация и тестирование программы. Выполнение трассировки функций.
практическая работа [146,3 K], добавлен 23.01.2015Разработка и реализация типовых алгоритмов обработки одномерных массивов на языке Delphi. Максимальный и минимальный элемент массива. Значение и расположение элементов массива. Элементы массива, находящиеся перед максимальным или минимальным элементом.
лабораторная работа [12,8 K], добавлен 02.12.2014Суммирование элементов столбцов заданной матрицы и получение результатов в одномерных массивах с помощью задания формулы и создания макросов. Нормирование вектора и нахождение его длины, объявление массива, указание его размерности, вывод формы.
контрольная работа [460,5 K], добавлен 18.01.2011Подсчет количества отрицательных элементов массива. Изменение исходного массива перемещением всех его положительных элементов в начало с исходным порядком их следования. Вывод на дисплей количества перемещенных элементов. Алгоритм и код программы.
лабораторная работа [946,5 K], добавлен 23.11.2014Составление программы разветвляющейся структуры для вычисления заданной функции. Нахождение произведения чётных и нечётных первых чисел натурального ряда. Приёмы программирования обработки одномерных массивов. Расчет суммы положительных элементов массива.
контрольная работа [1,3 M], добавлен 20.12.2012Выведение значения элементов массива, которые удовлетворяют неравенству. Подсчет количества отрицательных элементов массива. Изменение исходного массива. Тестирование программы. Проверка её работоспособности. Реакция программы на сообщение об ошибке.
лабораторная работа [1,3 M], добавлен 23.11.2014Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.
курсовая работа [115,5 K], добавлен 22.05.2010