
Санкт-Петербургский Государственный Политехнический Университет
Факультет технической кибернетики
Кафедра информационных и управляющих систем
Отчет по курсовой работе
по дисциплине «Программирование»
Вариант 13.
Выполнил студент группы 1084/24
Кочубей И.С.
Преподаватель: Вишневская Т.А.
Санкт Петербург
2012
СОДЕРЖАНИЕ
ЗАДАНИЕ К КУРСОВОЙ РАБОТЕ 3
ОПИСАНИЕ ВХОДНЫХ ДАННЫХ 4
ПРОГРАММНАЯ РЕАЛИЗАЦИЯ ЗАДАЧИ 4
Текст программы для задания 1.1 4
Текст программы для задания 1.2 5
Текст программы для задания 1.3 6
Текст программы для задания 1.4 8
Текст программы для задания 1.5 9
Текст программы для задания 1.6 11
РЕЗУЛЬТАТЫ ВЫПОЛНЕНИЯ ПРОГРАММЫ 12
СПИСОК ЛИТЕРАТУРЫ 13
ЗАДАНИЕ К КУРСОВОЙ РАБОТЕ
Условия выполнения задания:
1.Все исходные данные вводятся из входного текстового файла.
2.В выходной текстовый файл выводится как вся введенная информация , так и полученный результат.
3.Задание выполняется в виде 6 различных программ , и только первая программа выполняется без процедур.
4.Одна и та же информация во входном файле рассматривается как различная структура данных и вводится по-разному в оперативную память., с целью освоения работы с различными структурами данных. Кроме того, необходимо использовать процедуры с соблюдением требования наибольшей независимости по данным этих процедур друг от друга. Поэтому использование глобальных переменных недопустимо.
Таким образом эти 6 вариантов одного и того же задания предстоит выполнить с использованием:
1.Двумерных символьных массивов, текстовых файлов и без процедур;
2.С массивами STRING, процедурами и текстовыми файлами;
3.С массивами RECORD, процедурами, текстовыми и типизированными файлами и процедурами.
Типизированный файл формируется в этой же программе из текстового , а затем из него происходит чтение .
4.С модулями (варианты 2или 3 переделываются на модульный);
5.С однонаправленными линейными списками (каждая строка исходного текстового файла рассматривается как элемент списка),
процедурами и текстовыми файлами;
6.С рекурсией (любой из вариантов 2-4 переделывается на рекурсивный, поскольку везде в них есть циклы ,
которые можно всегда выполнить как рекурсивные процедуры).
Вариант:13
Дан список группы в 10 человек в виде
ФАМИЛИЯ ИМЯ ОТЧЕСТВО
20 символов 10 симв. 15 симв.
Данные в одной строке отделяются друг от друга пробелами.
Определить число встречающихся имен и напечатать в виде:
Сергей - 2
Петр - 1
и т.д.
ОПИСАНИЕ ВХОДНЫХ ДАННЫХ
file1:
pupkin vasilii ignatovich
pupkin vasilii ignatovich
pupkin vasilii ignatovich
pupkin basilii ignatovich
pupkin gasilii ignatovich
pupkin vasilii ignatovich
pupkin vasilii ignatovich
pupkin vasilii ignatovich
pupkin basilii ignatovich
pupkin vasilii ignatovich
ПРОГРАММНАЯ РЕАЛИЗАЦИЯ ЗАДАЧИ
Текст программы для задания 1.1
program zadanie1_v2_var13;
uses crt;
type
spisok_input=array[1..10,1..41] of char;
var
list:spisok_input;
i,j,k,c:integer;
file_one:text;
buffer:string[48];
procedure readf(var list1:spisok_input);
begin
assign(file_one,'lab1-6/file1.txt');
reset(file_one);
for i:=1 to 10 do
begin
for j:=1 to 41 do
begin
read(file_one,list1[i,j]);
end;
readln(file_one);
end;
close(file_one);
end;
procedure show(var list1:spisok_input);
var i,j:integer;
begin
for i:=1 to 10 do begin
for j:=22 to 31 do
write(list1[i,j]);
writeln('');
end;
writeln;
end;
procedure Sravn(var list1:spisok_input);
var l:integer;
begin
assign(file_one,'file2.txt');
rewrite(file_one);
for i:=1 to 10 do begin
if(list1[i,1]<>'*') then
begin
c:=1;
for k:=i+1 to 10 do
begin
l:=22;
while((list1[k,l]=list1[i,l]) and (l<=31)) do l:=l+1;
if (l>=32) then
begin
c:=c+1;
list1[k,1]:='*';
end;
end;
for l:=22 to 31 do
write(file_one,list1[i,l]);
writeln(file_one,' ',c);
for l:=22 to 31 do
write(list1[i,l]);
writeln(' ',c);
end;
end;
close(file_one);
end;
begin
clrscr;
readf(list);
show(list);
Sravn(list);
readkey;
end.
Текст программы для задания 1.2
program zadanie1_v2_var13;
uses crt;
type
spisok_input=array[1..10] of string;
var
list:spisok_input;
i,j,k,c:integer;
file_one:text;
buffer:string[48];
procedure readf(var list1:spisok_input);
begin
assign(file_one,'lab1-6\file1.txt');
reset(file_one);
for i:=1 to 10 do
begin
readln(file_one,list1[i]);
end;
close(file_one);
end;
procedure show(var list1:spisok_input);
begin
for i:=1 to 10 do
writeln(list1[i]);
writeln('');
writeln;
end;
procedure Sravn(var list1:spisok_input);
begin
assign(file_one,'file2.txt');
rewrite(file_one);
for i:=1 to 10 do
if(list1[i]<>'*') then
begin
c:=1;
for k:=i+1 to 10 do
begin
while(list1[k]=list1[i]) do
begin
c:=c+1;
list1[k]:='*';
end;
end;
write(file_one,list1[i]);
writeln(file_one,' ',c);
writeln(list1[i],' ',c);
end;
close(file_one);
end;
begin
clrscr;
readf(list);
show(list);
Sravn(list);
readkey;
end.
Текст программы для задания 1.3
program zadanie1_v3_var13;
uses crt;
type
spi=record
fam:string[20];
p1:string[1];
name:string[10];
p2:string[1];
ot4:string[15];
end;
spisok_input=array[1..10] of spi;
var
list:spisok_input;
i,j,k,c:integer;
file_one,file_two:text;
buffer:string[48];
procedure readf(var list1:spisok_input);
begin
assign(file_one,'lab1-6/file1.txt');
reset(file_one);
assign(file_two,'lab1-6/filetwo.txt');
rewrite(file_two);
for i:=1 to 10 do
begin
readln(file_one,list1[i].fam,list1[i].p1,list1[i].name);
writeln(file_two,list1[i].name);
end;
close(file_one);
close(file_two);
end;
procedure show(var list1:spisok_input);
begin
for i:=1 to 10 do
writeln(list1[i].name);
writeln('');
writeln;
end;
procedure Sravn(var list1:spisok_input);
begin
assign(file_two,'lab1-6/file3.txt');
rewrite(file_two);
for i:=1 to 10 do
if(list1[i].name<>'*') then
begin
c:=1;
for k:=i+1 to 10 do
begin
while(list1[k].name=list1[i].name) do
begin
c:=c+1;
list1[k].name:='*';
end;
end;
write(file_two,list1[i].name);
writeln(file_two,' ',c);
writeln(list1[i].name,' ',c);
end;
close(file_two);
end;
begin
clrscr;
readf(list);
show(list);
Sravn(list);
readkey;
end.