ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ОРЛОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Курсовая работа
Основы программирования и алгоритмизации
Вариант – 10
Работу выполнил студент
Группа Факультет ФНТиАП
Специальность Автоматизация технологических процессов и производств
Курсовая работа защищена с оценкой
Орел 2009
Задание на курсовую работу
Студент
Группа Факультет ФНТиАП
Специальность Автоматизация технологических процессов и производств
Вариант – 10
Задания
1. В ЭВМ поступают результаты соревнований по плаванию для трех спортсменов. Составьте программу, которая выбирает лучшей результат и выводит его на экран с сообщением, что это лучшей результат.
2. Дано натуральное число n. Составить программу, определяющую, есть ли среди чисел n, n+1,...,2n близнецы, т.е. простые числа, разность между которыми равна 2. (Использовать процедуру распознавания простых чисел).
3. Найдите сумму элементов массива ниже главной диагонали, произведение не равных нулю элементов выше главной диагонали и количество элементов в главной диагонали, попадающих в интервал [-1;1].
4. Опишите множества М1 (1, 2,3) и M2 (1, 4, 2, 5). Получите результирующие множество M3=M1*M2. Определите, имеются ли в M3 элементы 1 и 2.
5. Создайте файл, компоненты которого являются целыми числами. Напишите программу, переписывающую компоненты файла в обратном порядке.(Новый файл не заводить).
Руководитель
Задание принял к исполнению «__» ____________ 2009 г.
Подпись студента
Содержание
Задание № 1
Задание № 2
Задание № 3
Задание № 4
Задание № 5
Приложение 1
Приложение 2
Приложение 3
Приложение 4
Приложение 5
Задание №1
Название программы введено после program, в данном задание это – Zadanie1. Далее с помощью var выделены ячейки памяти под переменные X1, X2, X3, res вещественного типа данных. После begin написан ход работы программы из последовательности операторов.
С помощью операторов writeln и readln описывается, что нужно ввести и записывается введенный результат в память, соответственно. Таким образом, вводим результаты спортсменов X1, X2, X3.
Далее с помощью условных операторов if определяем наименьший результат, который присваивается переменной res: if X1<X2 then res:=X1 else res:=X2; if res>X3 then res:=X3;. С помощью оператора writeln на экран выдается сообщение с результатом победителя заплыва.
Закрытие программы – end.
Алгоритм к Заданию №1:
Задание №2
Название программы введено после program, в данном задание это – Zadanie2. Далее с помощью var выделены ячейки памяти под переменные j, B, N типа данных word и массива а логического типа данных. После begin написан ход работы программы из последовательности операторов.
С помощью процедуры Pch определяем все простые числа, используемые в программе. Далее оператором writeln выводим сообщение о том, что ниже будут выдаваться числа близнецы.
Создаем цикл: for j:=N to 2*N do, где будет проверяться условие, что разность между числами равна 2. Если условие верно, то выдаются на экран сравнивающиеся числа, которые и будут близнецы.
Закрытие программы – end.
Процедура Pch.
Кроме общих переменных заданных в программе в процедуре используются внутренние переменные b, k типа данных word. Задаем диапазон, на котором будем выделять простые числа. Далее создаем цикл: for j:=2 to 2*N do, в котором всем значениям массива а присваиваем значение TRUE. С помощью нескольких циклов в цикле: while k<=b do, всем не простым числам в массиве а присваиваются значения FALSE.
Таким образом получаем массив а, где простые числа отмечены TRUE. Закрытие процедуры – end.
Алгоритм к Заданию №2:
Процедура
Простые числа:
Задание №3
Название программы введено после program, в данном задание это – Zadanie3. Далее с помощью var выделены ячейки памяти под переменные i, j, K, n, m типа данных byte, переменные S, Pr и массив a[1..255,1..255] вещественного типа данных. После begin написан ход работы программы из последовательности операторов.
Вводим размерность матрицы NxM, далее с помощью цикла: for j:=1 to m dо в цикле: for i:=1 to n do задаем все значения массива а.
Следующий этап – создаем цикл: for j:=1 to (i-1) do в цикле: for i:=2 to n do, где будут перебираться только элементы ниже главной диагонали и находим их сумму. Далее создаем цикл: for i:=1 to (j-1) do в цикле: for j:=2 to m do, где будут перебираться только элементы выше главной диагонали. Проверяем условие не равности нулю каждого элементы и находим их произведение: if a[i,j]<>0 then Pr:=Pr*a[i,j].
Далее в цикле: for i:=1 to n do, j присваиваем значение i, то есть перебираем только элементы главной диагонали, где проверяем принадлежность этих элементов диапазону [-1;1] и считаем это количество.
С помощью операторов writeln на экран выдаем результат. Закрытие программы – end.
Алгоритм к Заданию №3:
Задание №4
Название программы введено после program, в данном задание это – Zadanie4. Далее с помощью const заданы константы, множества M1=[1,2,3] и M2=[1,4,2,5], а с помощью var выделены ячейки памяти под множество M3 типа данных byte. После begin написан ход работы программы из последовательности операторов.
С помощью оператора writeln выводим сообщение о том, что даны множества М1и M2. Далее находим множество М3: М3:=M1*M2. С помощью условных операторов if проверяем наличие в множестве М3 элементов 1 и 2, после чего выдается соответствующее сообщение.
С помощью строки readln (); выполнение программы автоматически не закроется, что позволит посмотреть результат, а закрытие осуществляется после нажатия кнопки Enter. Закрытие программы – end.
Алгоритм к Заданию №4:
Задание №5
Название программы введено после program, в данном задание это – Zadanie5. Далее с помощью var выделены ячейки памяти под переменные i целого типа данных, k, j типа данных byte, массив а и f файл с целым типом данных. После begin написан ход работы программы из последовательности операторов.
Оператором assign устанавливаем связь между программой и файлом zadanie5.txt. Далее командой rewrite (f); открываем (создаем) файл для записи. Вводим количество вводимых чисел в файл. С помощью цикла: for j:=1 to k do, вводим поочередно k целых чисел, а с помощью команды write (f,i); записываем эти числа в файл.
Далее открываем файл, только в этот раз для чтения reset (f). И прочитываем все значения i и записываем их в массив a. Далее командой rewrite (f) опять открываем файл для записи и с помощью цикла: for j:=k downto 1 do, записываем значения массива а в файл f в обратном порядке.
Далее открываем файл для чтения reset (f). И прочитываем все значения. Затем с помощью цикла: for j:=1 to k do, командой read (f,a[j]) читаем числа и выводим их на экран через пробел: write (a[j],' ').
Далее закрываем файл и программу.
Алгоритм к Заданию №5:
Приложение 1
Текст программы к Заданию №1
program Zadanie1;
var
X1,X2,X3,res:real;
begin
writeln ('Введите результат 1 спортсмена: ');
readln (X1);
writeln ('Введите результат 2 спортсмена: ');
readln (X2);
writeln ('Введите результат 3 спортсмена: ');
readln (X3);
if X1<X2 then res:=X1 else res:=X2;
if res>X3 then res:=X3;
writeln ('Результат победителя заплыва: ', res:10:4);
end.
Решение:
Приложение 2
Текст программы к Заданию №2
program Zadanie2;
var
j,B,N: word;
a: array [2..1000] of boolean;
procedure Pch;
var
b,k:word;
begin
writeln ('Введите натуральное число N: ');
readln (N);
for j:=2 to 2*N do
a[j]:=true;
b:=trunc(sqrt(2*N));
while k<=b do
begin
repeat
inc(k);
until a[k];
j:=2*k;
while j<=2*N do
begin
a[j]:=false;
j:=j+k;
end;
end;
end;
begin
Pch;
writeln ('Числа близнецы на диапозоне ',N,'..',2*N,' :');
B:=1;
for j:=N to 2*N do
if a[j] then
begin
if j-B=2 then writeln (j,' | ',B);
B:=j;
end;
end.
Решение:
Приложение 3
Текст программы к Заданию №3
program Zadanie3;
var
i,j,K,n,m: byte;
S,Pr: real;
a: array [1..255,1..255] of real;
begin
writeln ('Введите размерность массива N x M:');
readln (n,m);
for i:=1 to n do
for j:=1 to m do
begin
writeln ('Введите a[',i,',',j,'] : ');
readln (a[i,j]);
end;
for i:=2 to n do
for j:=1 to (i-1) do
S:=S+a[i,j];
Pr:=1;
for j:=2 to m do
for i:=1 to (j-1) do
if a[i,j]<>0 then Pr:=Pr*a[i,j];
if n>m then n:=m;
for i:=1 to n do
begin
j:=i;
if abs(a[i,j])<=1 then K:=K+1;
end;
writeln ('Сумма элементов ниже главной диагонали:',S:7:2);
writeln ('Произведение элементов выше главной диагонали:',Pr:7:2);
writeln ('Количество элементов на главной диагонали в интервале [-1;1]',K);
readln();
end.
Решение:
Приложение 4
Текст программы к Заданию №4
program Zadanie4;
const
M1=[1,2,3];
M2=[1,4,2,5];
var
M3: set of byte;
begin
writeln ('Даны множества М1(1,2,3), M2(1,4,2,5) и М3=М1*М2');
M3:=M1*M2;
if 1 in M3 then writeln ('1 есть в множестве М3')
else writeln ('1 нет в множестве М3');
if 2 in M3 then writeln ('2 есть в множестве М3')
else writeln ('2 нет в множестве М3');
readln;
end.
Решение:
Приложение 5
Текст программы к Заданию №5
program Zadanie5;
var
f: file of integer;
i: integer;
k,j: byte;
a: array [1..255] of integer;
begin
assign (f,'zadanie5.txt');
rewrite (f);
writeln ('Введите количество вводимых чисел: ');
readln (k);
for j:=1 to k do
begin
write ('Введите ',j,' число: ');
read (i);
write (f,i);
end;
reset (f);
writeln ('Значения из созданного файла:');
for j:=1 to k do
begin
read (f,i);
write (i,' ');
a[j]:=i;
end;
rewrite (f);
for j:=k downto 1 do
write (f,a[j]);
writeln;
reset (f);
writeln ('Значения из файла:');
for j:=1 to k do
begin
read (f,a[j]);
write (a[j],' ');
end;
close (f);
writeln;
end.
Решение: