Основы программирования и алгоритмизации

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ОРЛОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

















Курсовая работа

Основы программирования и алгоритмизации





Вариант – 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.

Решение:







20



2