Контрольная работа по «Основам алгоритмизации и программирования»

Автор: Пользователь скрыл имя, 20 Января 2013 в 14:36, контрольная работа

Описание работы

Цель контрольной работы (КР) - проверка способности студентов реализовать полученные знания и умения при разработке программ, решающих реальную производственно-техническую или математическую задачу. Кроме собственно разработки правильно работающей программы, необходимо продемонстрировать умение правильно организовывать интерфейс с пользователем, находить наиболее оптимальное решение задачи.

Работа содержит 1 файл

Отчет.doc

— 911.50 Кб (Скачать)

МИНИСТЕРСТВО ОБРАЗОВАНИЯ

РЕСПУБЛИКИ БЕЛАРУСЬ

 

Учреждение  образования

«Полоцкий государственный университет»

 

 

 

 

 

Кафедра Технологий программирования

 

 

 

 

 

 

КОНТРОЛЬНАЯ работа

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

 

 

Студента заочного отделения

факультета информационных технологий 

Группы      12-ВСз-2   

Курс            1   

Ф.И.О.         Замжицкий Валентин Юрьевич

Шифр   1210639   

Вариант № 39  

 

 

                                       

 

Рецензент           

Подпись рецензента    

Дата приема     

 

 

 

 

Новополоцк 2012

Содержание

 

Введение

Цель контрольной работы (КР) - проверка способности студентов реализовать полученные знания и умения при разработке программ, решающих реальную производственно-техническую или математическую задачу. Кроме собственно разработки правильно работающей программы, необходимо продемонстрировать умение правильно организовывать интерфейс с пользователем, находить наиболее оптимальное решение задачи. Кроме этого, при выполнении КР развиваются собственно навыки программирования и отладки программ, а также проверяется умение оформления документации на свои разработки в соответствии со стандартами и навыки публичных выступлений при защите КР.

 

  1. Решение задачи №1.

1.1 Анализ задания и постановка  задачи

Найти все трехзначные числа, представимые в виде сумм факториалов своих  цифр.  (Например,  145).

1.2 Блок-схема работы программы

1.3 Описание блок-схемы работы программы

1 – Начало цикла по i от 1 до 9;

2 – Начало цикла по  j от 0 до 9;

3 – Начало цикла по  k от 0 до 9;

4 – Составление числа  100i+10j+k;

5 – Проверка: число равно сумме факториалов чисел?;

6 – Вывод числа на экран;

7 – Конец цикла по i;

8 – Конец цикла по j;

9 – Конец цикла по k;

1.4 Описание входных переменных

Входные данные отсутствуют. Выходными данными является список искомых чисел.

1.5 Листинг программы

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.

1.6 Результаты работы программы

  1.  
  2. Решение задачи №2.

2.1 Анализ задания и постановка  задачи

Вычислить сумму ряда с точностью e=10–6

2.2 Блок-схема работы программы

2.3 Описание блок-схемы работы  программы

1 – Ввод точности вычислений и значения x с клавиатуры;

2 – Инициализация переменных;

3 – Проверка: достигнута ли указанная точность?;

4 – Вычисление значения текущего члена и вычисление суммы

5 – Вывод результата;

2.4 Описание входных переменных

Входными данными являются точность вычислений и значение x. Выходными данными является значение суммы.

2.5 Листинг программы

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.

2.6 Результаты работы программы

  1. Решение задачи №3.

3.1 Анализ задания и постановка задачи

Определить число инверсий  в одномерном массиве произвольных чисел. Инверсия – пара элементов, в которой большее число расположено слева от меньшего.

3.2 Блок-схема работы программы

3.3 Описание блок-схемы работы программы

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 – Вывод результата;

3.4 Описание входных переменных

Входными данными является размерность и элементы массива. Выходными данными является количество найденных инверсий.

3.5 Листинг программы

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.

3.6 Результаты работы программы

  1.  
  2. Решение задачи №4.

4.1 Анализ задания и постановка  задачи

Дана  вещественная матрица  размерности  n×m. Найти  общую  сумму  элементов  только  тех  столбцов, которые имеют хотя бы один нулевой элемент.

4.2 Блок-схема работы программы

4.3 Описание блок-схемы работы  программы

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 – Вывод результата;

4.4 Описание входных переменных

Входными данными является размерность и элементы массива. Выходными данными являются найденное значение суммы.

4.5 Листинг программы

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..

4.6 Результаты работы программы

  1.  
  2. Решение задачи №5.

5.1 Анализ задания и постановка  задачи

Дан  текст.  Между  соседними  словами –  не  менее  одного  пробела,  за  последним  словом -  точка. Напечатать  все  слова,  отличные  от  первого слова,  предварительно  преобразовав  каждое  из  них по следующему правилу: если слово нечетной длины, то удалить его среднюю букву. Результат вывести на экран.

5.2 Блок-схема работы программы

5.3 Описание блок-схемы работы программы

1 – Обнуление количества слов;

2 – Ввод предложения с клавиатуры;

3 – Вставка пробела в конец предложения;

4 – Проверка: В предложении встречаются пробелы?;

5 – Увеличение числа слов;

5 – Копирование 1-го слова из предложения в массив str1[];

7 – Удаление слова из предложения;

8 – Проверка: Первый символ - пробел?

9 – Удаление начального пробела;

10 – Начало цикла по i от 2 до n;

11 – Проверка: Текущее слово отличается от первого и имеет нечетную длину?

12 – Удаление среднего символа;

13 – Вывод слова;

14 – Конец цикла по i;

5.4 Описание входных переменных

Входными данными является строка текста. Выходными данными является список слов.

5.5 Листинг программы

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.

5.6 Результаты работы программы

 

Заключение

В результате выполнения курсовой работы были рассмотрены особенности работы языка программирования Pascal c массивами, строками, файлами. Разработанные алгоритмы имеют высокую эффективность работы. Написанные на языке Pascal в данной контрольной работе программы выполняются корректно, полученные результаты достоверны.

 

Список литературы

    1. Н. Л. Тарануха, Л. С. Гринкруг, А. Д. Бурменский, С. В. Ильина, Обучение программированию. Язык Pascal, 2009
    2. Т. А. Андреева, Программирование на языке Pascal, 2009
    3. В. В. Фаронов, Turbo Pascal, 2009
    4. А. И. Гусева, Учимся программировать: Pascal 7.0, 2005

Информация о работе Контрольная работа по «Основам алгоритмизации и программирования»