Автор: Пользователь скрыл имя, 20 Января 2013 в 14:36, контрольная работа
Цель контрольной работы (КР) - проверка способности студентов реализовать полученные знания и умения при разработке программ, решающих реальную производственно-техническую или математическую задачу. Кроме собственно разработки правильно работающей программы, необходимо продемонстрировать умение правильно организовывать интерфейс с пользователем, находить наиболее оптимальное решение задачи.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ
РЕСПУБЛИКИ БЕЛАРУСЬ
Учреждение образования
«Полоцкий государственный университет»
Кафедра Технологий программирования
КОНТРОЛЬНАЯ работа
по дисциплине «Основы алгоритмизации и программирования»
Студента заочного отделения
факультета информационных технологий
Группы 12-ВСз-2
Курс 1
Ф.И.О. Замжицкий Валентин Юрьевич
Шифр 1210639
Вариант № 39
Рецензент
Подпись рецензента
Дата приема
Новополоцк 2012
Цель контрольной работы (КР) - проверка способности студентов реализовать полученные знания и умения при разработке программ, решающих реальную производственно-техническую или математическую задачу. Кроме собственно разработки правильно работающей программы, необходимо продемонстрировать умение правильно организовывать интерфейс с пользователем, находить наиболее оптимальное решение задачи. Кроме этого, при выполнении КР развиваются собственно навыки программирования и отладки программ, а также проверяется умение оформления документации на свои разработки в соответствии со стандартами и навыки публичных выступлений при защите КР.
Найти все трехзначные числа, представимые в виде сумм факториалов своих цифр. (Например, 145).
1 – Начало цикла по i от 1 до 9;
2 – Начало цикла по j от 0 до 9;
3 – Начало цикла по k от 0 до 9;
4 – Составление числа 100i+10j+k;
5 – Проверка: число равно сумме факториалов чисел?;
6 – Вывод числа на экран;
7 – Конец цикла по i;
8 – Конец цикла по j;
9 – Конец цикла по k;
Входные данные отсутствуют. Выходными данными является список искомых чисел.
program prog1;
uses crt;
function fact(n:integer):longint;
var
f,i: longint;
begin
f:=1;
for i:=1 to n do
f:=f*i;
fact:=f;
end;
var
ch: integer;
i, j, k: integer;
begin
clrscr;
writeln ('Трёхзначные числа, представимые в виде сумм факториалов свойх цифр:');
for i:=1 to 9 do
for j:=0 to 9 do
for k:=0 to 9 do begin
ch:=100*i+10*j+k;
if fact(i)+fact(j)+fact(k)=ch then writeln(ch);
end;
readln;
end.
Вычислить сумму ряда с точностью e=10–6
1 – Ввод точности вычислений и значения x с клавиатуры;
2 – Инициализация переменных;
3 – Проверка: достигнута ли указанная точность?;
4 – Вычисление значения текущего члена и вычисление суммы
5 – Вывод результата;
Входными данными являются точность вычислений и значение x. Выходными данными является значение суммы.
program prog2;
uses crt;
var
i,n: integer; {счетчик}
x,e: real; {значение x и точность}
a,s: real; {значение текущего члена и суммы суммы}
begin
clrscr;
write('Введите значение x: ');
readln(x);
write('Введите точность e: ');
readln(e);
a:=1; s:=0; i:=0;
while abs(a)>e do begin
inc(i);
a:=-a*(4*i-3)/(4*i)*x;
writeln(a);
readln;
s:=s+a;
end;
writeln('Значение суммы = ',s:7:6);
readln;
end.
Определить число инверсий в одномерном массиве произвольных чисел. Инверсия – пара элементов, в которой большее число расположено слева от меньшего.
1 – Ввод размерности n с клавиатуры;
2 – Начало цикла по i от 1 до n;
3 – Ввод значения a[i] с клавиатуры;
4 – Конец цикла по i;
5 – Начало цикла по i от 1 до n;
6 – Вывод значения a[i] на экран;
7 – Конец цикла по i;
8 – Начальное значение kol;
9 – Начало цикла по i от 1 до n-1;
10 – Проверка: текущий элемент меньше следующего.
11 – Увеличиваем количество;
12 – Конец цикла по i;
13 – Вывод результата;
Входными данными является размерность и элементы массива. Выходными данными является количество найденных инверсий.
program prog3;
uses crt;
var
i, n, kol: integer; {Вспомогательные переменные}
a: array [1..100] of real; {Вводимый массив}
begin
clrscr;
write('Введите размерность массива: ');
readln(n);
for i:=1 to n do begin
write('Введите А[',i,']: ');
readln(a[i]);
end;
writeln('Введенный массив:');
for i:=1 to n do
write(a[i]:5:1);
writeln;
kol:=0;
for i:=1 to n-1 do
if a[i]<a[i+1] then inc(kol);
writeln('Количество инверсий в массиве = ', kol);
readln;
end.
Дана вещественная матрица размерности n×m. Найти общую сумму элементов только тех столбцов, которые имеют хотя бы один нулевой элемент.
1 – Ввод значения n и m с клавиатуры;
2 – Начало цикла по i от 1 до n;
3 – Начало цикла по j от 1 до m;
4 – Ввод значения a[i,j] с клавиатуры;
5 – Конец цикла по j;
6 – Конец цикла по i;
7 – Начало цикла по i от 1 до n;
8 – Начало цикла по j от 1 до m;
9 – Вывод значения a[i,j] на экран;
10 – Конец цикла по j;
11 – Конец цикла по i;
12 – Сброс значения общей суммы;
13 – Начало цикла по j от 1 до m;
14 – Сброс значения суммы
столбца и флажка наличия
15 – Начало цикла по i от 1 до n;
16 – Увеличение значения суммы столбца;
16 – Проверка: текущий элемент нулевой;
18 – Установка флажка;
19 – Конец цикла по i;
20 – Проверка: флажок установлен?;
21 – Увеличение значения общей суммы;
22 – Конец цикла по j;
23 – Вывод результата;
Входными данными является размерность и элементы массива. Выходными данными являются найденное значение суммы.
program prog3;
uses crt;
var
i, n, kol: integer; {Вспомогательные переменные}
a: array [1..100] of real; {Вводимый массив}
begin
clrscr;
write('Введите размерность массива: ');
readln(n);
for i:=1 to n do begin
write('Введите А[',i,']: ');
readln(a[i]);
end;
writeln('Введенный массив:');
for i:=1 to n do
write(a[i]:5:1);
writeln;
kol:=0;
for i:=1 to n-1 do
if a[i]<a[i+1] then inc(kol);
writeln('Количество инверсий в массиве = ', kol);
readln;
end..
Дан текст. Между соседними словами – не менее одного пробела, за последним словом - точка. Напечатать все слова, отличные от первого слова, предварительно преобразовав каждое из них по следующему правилу: если слово нечетной длины, то удалить его среднюю букву. Результат вывести на экран.
1 – Обнуление количества слов;
2 – Ввод предложения с клавиатуры;
3 – Вставка пробела в конец предложения;
4 – Проверка: В предложении встречаются пробелы?;
5 – Увеличение числа слов;
5 – Копирование 1-го слова из предложения в массив str1[];
7 – Удаление слова из предложения;
8 – Проверка: Первый символ - пробел?
9 – Удаление начального пробела;
10 – Начало цикла по i от 2 до n;
11 – Проверка: Текущее слово отличается от первого и имеет нечетную длину?
12 – Удаление среднего символа;
13 – Вывод слова;
14 – Конец цикла по i;
Входными данными является строка текста. Выходными данными является список слов.
program prog4;
uses crt;
var
i,n: integer; {Вспомогательные переменные}
str, tmpstr: string; {Исходная строка}
str1: array [1..20] of string; {массив слов}
begin
n:=0;
clrscr;
write('Введите предложение: ');
readln(str);
str[length(str)]:=' ';
while (pos(' ',str)>0) do begin
n:=n+1;
str1[n]:=copy(str, 1, pos(' ',str)-1);
delete(str,1,pos(' ',str));
while str[1]=' ' do delete(str,1,1);
end;
writeln('Преобразованные слова, отличные от первого: ');
for i:=2 to n do begin
if (str1[i]<>str1[1]) and (length(str1[i]) mod 2 > 0) then delete (str1[i],(length(str1[i]) div 2) + 1,1);
write(str1[i],' ');
end;
writeln;
readln;
end.
В результате выполнения курсовой работы были рассмотрены особенности работы языка программирования Pascal c массивами, строками, файлами. Разработанные алгоритмы имеют высокую эффективность работы. Написанные на языке Pascal в данной контрольной работе программы выполняются корректно, полученные результаты достоверны.
Информация о работе Контрольная работа по «Основам алгоритмизации и программирования»