Программирование в Turbo Pascal

2



Московский Государственный Индустриальный  Университет

Институт Дистанционного Образования

















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

по дисциплине: «ИНФОРМАТИКА»

по теме: «Выполнение задания по программированию в TURBO PASCAL»









                                                       Выполнила: студентка группы 01М22

                                                       Белоусова Екатерина

                                                       Преподаватель: Суворов С.В.









Москва, 2002



Содержание:

                                                                                                          Стр.

1. Формулировка задания                                                                        3

	2. Описание переменных	             4

	3. Блок-схема	    5

	4. Программа	    6

	5. Результаты проверки правильности программы	          9

	6. Результат подстановки данных в программу	          10

	7. Список используемой литературы                                                     10

	

	

	

	

	

	

	

	

	

	

	

	

	

	

	

	

	Формулировка задания:

На телефонном узле в конце каждого квартала составляется на каждого абонента ведомость оплаты междугородных телефонных разговоров (с 7-ю городами) в течение квартала (3 месяца).

	Написать программу, которая вводит исходные данные, выполняет расчеты и выводит на экран:

	Исходные данные в виде таблицы, где указаны коды городов, с которыми велись разговоры, общее время разговора с каждым городом за один месяц, стоимость одной минуты разговора (меняется каждый месяц);

	Общая продолжительность разговоров с каждым городом за квартал;

	Плата за каждый месяц;

	Общая плата за 3 месяца;

	Город с наибольшей платой.

	Требование к вводу информации: 

	Исходные данные вводятся с клавиатуры.

	Требования к выводу результатов:

	Результаты выводятся на экран.

	Требования к структуре программы.

	Программа должна состоять из следующих частей:

	Вывод заставки с информацией о студенте и задании;

	Ввод данных (выполняется в диалоговом режиме);

	Вывод исходных данных и результатов (на один экран).

	Требования к размещению исходных данных внутри программы.

Исходные данные располагаются в файле, компонентами которого являются записи. Структура каждой записи и типы ее полей выбираются в зависимости от задания.

	Используемые цвета:

	Черный (0)                Светло-зеленый (10)

	Красный (4)               Желтый (14)

	

	Описание переменных:

	Описание типов:

Тип: telef=record

           kod:integer;

           tpm1,tpm2,tpm3,price1,price2,price3:integer;

	     end;

	Тип записи telef является представлением информации о городе, а именно: kod - код города, который является целым числом.

	tpm1,tpm2,tpm3 - время разговора абонента с городом за 1-ый, 2-ой и 3-ий месяц соответственно, целые числа.

	price1,price2,price3 - стоимость 1-ой минуты разговора за 1-ый, 2-ой и 3-ий месяц соответственно, также целые числа.

Тип: telef1=record

           kod,tpm,ob:integer;

           pr1,pr2,pr3:integer;

	     end;

	Тип записи telef1 также является представлением информации о городе.

	кod - код города,  tpm - общее время разговора с городом за квартал (3 месяца).

	pr1,pr2,pr3 - стоимость разговора с городом за 1-ий, 2-ой и 3-ий месяцы соответственно.

	оb- общая стоимость разговора с городом за квартал.

	Все поля типа записи telef1- целые числа.

	

	Описание переменных:

	а:file of telef; 

	Типизированный файл «а» содержит записи типа telef, т.е. содержит исходную информацию о каждом городе, времени разговора с каждым городом помесячно и стоимость минуты разговора за каждый месяц квартала.

	tel:telef; 

	tel-запись типа telef, содержащая информацию о городе.

	tel-запись, которой по мере выполнения программы, присваиваются значения записей, находящихся в типизированном файле «а».

	res: array[1..7] of telef1;

	res - одномерный массив, содержащий 7 элементов типа telef1, т.е. этот массив содержит информацию о 7-ми городах, полученную в результате расчетов, произведенных в программе.

	i,j,aa,max: integer;

	i - целое число, которое используется в цикле ввода исходных данных, переменная «i» в этом случае принимает значения кода городов, также эта переменная используется в цикле вывода результатов на экран, где выступает в роли значения номера города, т.е. в роли номера элемента массива res.

	max,j- целые числа, переменные, используемые для определения кода города с наибольшей оплатой за квартал. Переменной max присваиваются значения общей стоимости разговоров с городом за квартал, по мере выполнения программы переменной max  присваивается наибольшее значение. 

	Переменной j присваивается значение номера элемента массива res и при определении города с наибольшей оплатой j присваивается номер этого города в массиве res. 

	s - целое число, используемое в цикле расчета результатов. Переменной s присваиваются значения от 1 до 7, т.е. значения номеров элементов массива res.













Начало



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

Вызов модуля  CRT







Вывод заставки на экран

Описание переменных







i := i+1

i := 0









Ввод кода города, общего времени разговора за каждый месяц, стоимости одной минуты разговора с городом за каждый месяц. Запись записи в файл.







	

i = 7	Нет 





		Да 



Расчет общей продолжительности разговоров с каждым городом за квартал, платы за каждый месяц, общей платы за 3 месяца.









Вывод на экран таблицы исходных данных

			

Конец файла записи	Нет 	Да 



		 



Вывод на экран таблицы результата расчетов

		 



i = 7

res[1+1].ob>max

i := i+1

i := 0

max:= res[1].ob

		







		Да 



max:= res[1+1].ob



		

			

i = 7                                 Нет                                                        Нет	

				Нет 		                                     Да

 



Да 

	

Конец 	Да 

	

Вывод города с наибольшей платой

	

	





program kursovik;

uses crt;



type

 telef=record

        kod:integer;

        tpm1,tpm2,tpm3,price1,price2,price3:integer;

       end;

 telef1=record

         kod,tpm,ob:integer;

         pr1,pr2,pr3:integer;

        end;

var

 a:file of telef;


 tel:telef;

 res:array[1..7] of telef1;

 i,j,s,aa,max:integer;

begin;

 textbackground(10);

 clrscr;

 textcolor(0);

 gotoxy(15,2);

 writeln('Курсовая работа студента группы 01М22 Белоусовой Е.В.');

 gotoxy(27,3);

 writeln('Задание на курсовую работу:');

 textcolor(4);

 writeln;

 writeln('   На телефонном узле в конце каждого квартала составляется на каждого абонента');

 writeln('ведомость оплаты междугородных телефонных разговоров (с 7-ю городами) в течение');

 writeln('квартала (3 месяца).');

 writeln('   Написать программу, которая вводит исходные данные, выполняет расчеты и ');

 writeln('выводит на экран:');

 writeln(' - исходные данные в виде таблицы, где указаны коды городов, с которыми велись');

 writeln('   разговоры, общее время разговора с каждым городом за один месяц, стоимость');

 writeln('   одной минуты разговора (меняется каждый месяц);');

 writeln(' - общая продолжительность разговоров с каждым городом за квартал;');

 writeln('плата за каждый месяц;');

 writeln('общая плата за 3 месяца;');

 writeln('город с наибльшей платой.');

 gotoxy(27,18);

 textcolor(0);

 writeln('Требование к вводу информации');

 textcolor(4);

 writeln(' - исходные данные вводятся с клавиатуры.');

 textcolor(0);

 writeln;

 writeln('                         Требование к выводу результатов');

 textcolor(4);

 writeln(' - результат выводятся на экран.');

 textcolor(14);

 writeln;

 writeln('                 Для продолжения работы программы нажмите ENTER');

 readln;

 clrscr;

 textcolor(0);

 writeln('                        Требования к структуре программы ');

 textcolor(4);

 writeln('     Программа должна состоять из следующих частей:');

 writeln(' - вывод заставки с информацией о студенте и задании;');

 writeln(' - ввод данных (выполняется в диалоговом режиме);');

 writeln(' - вывод исходных данных и результатов (на один экран).');

 textcolor(0);

 writeln('             Требования к размещению исходных данных внутри программы ');

 textcolor(4);

 writeln(' Исходные данные располагаются в файле, компонентами которого являются записи.');

 writeln('Структура каждой записи и типы ее полей выбираются в зависимости от задания.');

 textcolor(0);

 writeln('                             Используемые цвета ');

 textcolor(4);

 writeln(' - черный(0),красный(4), светло-зеленый(10), желтый(14)');

 textcolor(14);

 gotoxy(18,24);

 writeln('Для продолжения работы программы нажмите ENTER');

 readln;

 clrscr;

 assign(a,'kurs.dat');

 rewrite(a);

 textcolor(0);

 for i:=1 to 7 do

  begin

   write('Введите код ',i,'-го города: ');

   readln(tel.kod);

   write('Введите общее время разговора с городом ',tel.kod,' за 1-й месяц: ');

   readln(tel.tpm1);

   write('Введите стоимость одной минуты разговора с городом ',tel.kod,' в 1-м месяце: ');

   readln(tel.price1);

   write('Введите общее время разговора с городом ',tel.kod,' за 2-й месяц: ');

   readln(tel.tpm2);

   write('Введите стоимость одной минуты разговора с городом ',tel.kod,' в 2-м месяце: ');

   readln(tel.price2);

   write('Введите общее время разговора с городом ',tel.kod,' за 3-й месяц: ');

   readln(tel.tpm3);

   write('Введите стоимость одной минуты разговора с городом ',tel.kod,' в 3-м месяце: ');

   readln(tel.price3);

   write(a,tel);

  end;

 close(a);reset(a);

 s:=1;

 while not eof(a) do begin

                      read(a,tel);

                      res[s].kod:=tel.kod;

                      res[s].tpm:=tel.tpm1+tel.tpm2+tel.tpm3;

                      res[s].pr1:=tel.tpm1*tel.price1;

                      res[s].pr2:=tel.tpm2*tel.price2;

                      res[s].pr3:=tel.tpm3*tel.price3;

                      res[s].ob:=res[s].pr1+res[s].pr2+res[s].pr3;

                      s:=s+1;

                     end;close(a);

 clrscr;

 writeln('Код города   Общее время разговора за каждый месяц    Стоимость минуты разговора');

 reset(a);

 while not eof(a) do

  begin

   read(a,tel);

   writeln('                        ',tel.tpm1,'                                    ',tel.price1);

   writeln(' ',tel.kod,'                      ',tel.tpm2,'                                    ',tel.price2);

   writeln('                        ',tel.tpm3,'                                    ',tel.price3);

  end;

 textcolor(14);

 gotoxy(18,24);

 writeln('Для продолжения работы программы нажмите ENTER');

 readln;

 clrscr;

 textcolor(0);

 writeln('Код города   Общее время разговора за квартал    Плата за месяц    Общая плата');

 for i:=1 to 7 do

  begin

  aa:=res[i].kod;

  writeln('                                                        ',res[i].pr1);

  writeln('  ',aa,'                        ',res[i].tpm,'                            ',res[i].pr2,'               ',res[i].ob);

  writeln('                                                        ',res[i].pr3);

  end;

  max:=res[1].ob;

  for i:=1 to 6 do begin

                    if res[i+1].ob>max then

                                        begin

                                         max:=res[i+1].ob;

                                         j:=i+1;

                                        end;



                   end;

 writeln('Город с наибольшей платой: ',res[j].kod);

 textcolor(14);

 gotoxy(18,24);

 writeln('Для завершения работы программы нажмите ENTER');

readln;

end.













	

Таблица исходных данных



Таблица результатов

Код города

Общее время разговора за каждый месяц

Стоимость минуты разговора



Код города

Общая продолжительность разговоров за квартал

Плата за каждый месяц

Общая плата

0

0

0



0

0

0

0



0

0







0





0

0







0



0

0

0



0

0

0

0



0

0







0





0

0







0



0

0

0



0

0

0

0



0

0







0





0

0







0



0

0

0



0

0

0

0



0

0







0





0

0







0



0

0

0



0

0

0

0



0

0







0





0

0







0



0

0

0



0

0

0

0



0

0







0





0

0







0



0

0

0



0

0

0

0



0

0







0





0

0







0











Город с наибольшей платой - 1



Таблица исходных данных



Таблица результатов

Код города

Общее время разговора за каждый месяц

Стоимость минуты разговора



Код города

Общая продолжительность разговоров за квартал

Плата за каждый месяц

Общая плата

1

1

1



1

3

1

3



1

1







1





1

1







1



1

1

1



1

3

1

3



1

1







1





1

1







1



1

1

1



1

3

1

3



1

1







1





1

1







1



1

1

1



1

3

1

3



1

1







1





1

1







1



1

1

1



1

3

1

3



1

1







1





1

1







1



1

1

1



1

3

1

3



1

1







1





1

1







1



1

1

1



1

3

1

3



1

1







1





1

1







1











Город с наибольшей платой - 1

Результат.



   Результатом выполнения программы является вывод на экран информации о студенте и о задании, ввод исходных данных с клавиатуры в диалоговом режиме,  вывод исходных и расчетных данных в виде таблицы. Программа выполнена с учетом всех требований, указанных в задании.

Таблица исходных данных

Код города

Общее время разговора за каждый месяц

Стоимость минуты разговора

1

7

10



8

10



9

15

2

1

5



2

5



3

5

3

4

6



5

6



6

7

4

2

10



4

20



8

10

5

3

7



2

7



1

7

6

4

9



6

10



7

11

7

8

13



9

10



10

14

Таблица результатов

Код города

Общая продолжительность разговоров за квартал

Плата за каждый месяц

Общая плата

1

24

70

285





80







135



2

6

5

30





10







15



3

15

24

96





30







42



4

14

20

180





80







80



5

6

21

42





14







7



6

17

36

173





60







77



7

27

104

334





90







140











Город с наибольшей платой - 7

		








Список использованной литературы:

Фигурнов В.Э. IBM PC для пользователя. Изд. 6-е, М., 1995 г.

Фаронов В. В., Турбо Паскаль 7.0., Учебное пособие. – М.: «Нолидж», 1999 г.

Острейковский В.А. Информатика. –М.: «Высшая школа», 2000 г.