Автор: Пользователь скрыл имя, 07 Апреля 2012 в 19:41, курсовая работа
Создать текстовый файл из строк (предложений).
Каждое предложение стоит из слов, которые отделяются друг от друга пробелами, в слове могут быть любые символы, кроме пробелов
Прочитать текстовый файл, в каждом предложении выделить слова и занести их в одномерный массив, состоящий из слов, предварительно поменяв местами первый и последний символы каждого слова. Алгоритм выделения слов оформить в виде подпрограммы.
Отсортировать полученный массив в алфавитном порядке по в
Описание работы с программой 4
Последовательность выполнения заданий: 4
Программный код 5
Для задания 1 5
Для задания 2 5
Для задания 3 6
Для задания 4 6
Для задания 5 и 6 7
Для задания 7 8
Процедура выделения слов из предложения и процедура замены первого и последнего символа слова 8
Код модуля Unit1 9
Блок-схема выделения массива слов из строки 17
Московский государственный университет экономики, статистики и информатики
Курсовая работа
Дисциплина: Информатика и программирование
Тема: «Разработка Windows-приложения для демонстрации алгоритмов по работе с числовой и текстовой информацией»
Группа ПИЭ-13
Выполнил:
Студент:.
Проверил:
Преподаватель Маевский В.К.
Ярославль 2011г.
Содержание
Задание 3
Описание работы с программой 4
Последовательность выполнения заданий: 4
Программный код 5
Для задания 1 5
Для задания 2 5
Для задания 3 6
Для задания 4 6
Для задания 5 и 6 7
Для задания 7 8
Процедура выделения слов из предложения и процедура замены первого и последнего символа слова 8
Код модуля Unit1 9
Блок-схема выделения массива слов из строки 17
Рис. 1. Главная форма
procedure TForm1.Button3Click(Sender: TObject);//Chtenie iz Memo i zapis v FILe
var
i,n:integer;
s:string;
begin
filN:=edit1.text;
assignfile(f,FilN);
rewrite(f);
n:=memo1.Lines.Count;
for i:=1 to n do
begin
s:=memo1.Lines.Strings[i-1];
writeln(f,s);
end;
closefile(f);
end;
procedure TForm1.Button4Click(Sender: TObject);// Massiv slov iz FILE
var
i,j,k:integer;
s:string;
f:textfile;
z:masslov;
sl:slovo;
begin
Assignfile(f,filN);
{$i-}
reset(f);
{$i+}
if ioresult=0 then
begin
label7.Caption:='Файл открыт';
n:=0;
while not(eof(f)) do
begin
readln(f,s);
Sslova(s,k,z);
for i:=1 to k do
begin
n:=n+1;
d[n]:=z[i];
end;
end;
closefile(f);
StringGrid1.RowCount:=n;
StringGrid2.RowCount:=n;
StringGrid5.RowCount:=n;
for i:=1 to n do
StringGrid1.Cells[0,i-1]:=d[i]
edit7.Text:=inttostr(n);
end
else
label7.Caption:='Файл не открыт';
end;
procedure TForm1.Button7Click(Sender: TObject); // Upor Massiva Slov
VAR
i,k,c:INTEGER;
b:array[1..nm] of integer;
bs:masslov;
cs:slovo;
cc:char;
begin
for i:=1 to n do
bs[i]:=stringgrid1.cells[0,i-
for i:=1 to n do
begin
cs:=bs[i];
cc:=cs[1];
b[i]:=ord(cc);
end;
for k:=1 to n-1 do
for i:=n downto k+1 do
if b[i] < b[i-1] then
begin
c:=b[i]; cs:=bs[i];
b[i]:=b[i-1]; bs[i]:=bs[i-1];
b[i-1]:=c; bs[i-1]:=cs;
end;
d:=bs;
for i:=1 to n do
stringgrid2.cells[0,i-1]:=d[i]
end;
procedure TForm1.Button8Click(Sender: TObject);//POISK ELEM Massiva slov
var
i,j,k,x:integer;
bs:masslov;
xs:slovo;
begin
xs:=edit2.Text;
for i:=1 to n do
bs[i]:=stringgrid2.cells[0,i-
k:=0;
for i:=1 to n do
if bs[i]=xs then k:=i;
if k=0 then edit3.Text:='Нет значения'
else edit3.Text:='Найден элемент с номером '+inttostr(k);
end;
procedure TForm1.Button9Click(Sender: TObject);
var
value,i : integer;
p: tptr;
procedure addel (val: slovo);
begin
new(p);
p^.inf:=val;
p^.link:=nil;
if endq=nil {если создается первый элемент очереди}
then begq:=p
else endq^.link:=p; {если создается очередной элемент очереди}
endq:=p;
end;
begin {основная программа}
{Начальная установка указателей}
begq:=nil;
endq:=nil;
{Создание очереди}
for i:=1 to n do
addel(stringgrid2.cells[0,i-1]
{Поиск элементов в очереди}
p:=begq;
while p<>nil do
if p^.inf=edit4.text then
begin
edit5.Text:='Найден искомый элемент' ;
{корректировка найденного элемента}
p^.inf:=edit6.Text;
exit
end
else
begin
edit5.Text:='Поиск неудачный';
p:=p^.link;
end;
end;
procedure TForm1.Button10Click(Sender: TObject);
var
i : integer;
value:slovo;
procedure getdelel(var val : slovo);
var
P : tptr;
b:array[1..nm] of integer;
begin
val:=begq^.inf;
p:=begq;
begq:=p^.link;
if begq = nil {если удаляется последний элемент очереди}
then endq:=nil;
dispose(p)
end;
begin
{Удаление очереди с распечаткой значений ее элементов}
i:=1;
while begq<>nil do
begin
getdelel (value);
stringgrid5.cells[0,i-1]:=
i:=i+1;
end;
end;
Procedure Revers(var s:string);
var
c:char;
n:integer;
begin
n:=length(s);
c:=s[n];
s[n]:=s[1];
s[1]:=c;
end;
Procedure SSlova(s:string;var k:integer; var d:masslov);
var
i,n:integer;
ss:string;
c:char;
flag:boolean;
begin
s:=s+' ';
n:=length(s);
k:=0;
flag:=true;
ss:='';
for i:=1 to n do
if flag then
if s[i]=' ' then
begin
flag:=false;
k:=k+1;
d[k]:=ss;
ss:='';
end
else ss:=ss+s[i]
else
if s[i]<>' ' then
begin
flag:=true;
ss:=s[i];
end;
for i:=1 to k do
begin
ss:=d[i];
revers(ss);
d[i]:=ss;
end;
end;
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, Menus;
type
TForm1 = class(TForm)
Button2: TButton;
Label4: TLabel;
Label5: TLabel;
Edit1: TEdit;
Button3: TButton;
Button4: TButton;
Label6: TLabel;
Label7: TLabel;
Label2: TLabel;
Button7: TButton;
StringGrid5: TStringGrid;
Label9: TLabel;
Label10: TLabel;
Edit2: TEdit;
Button8: TButton;
Label11: TLabel;
Edit3: TEdit;
Button9: TButton;
Label12: TLabel;
Label13: TLabel;
Edit4: TEdit;
Label14: TLabel;
Edit5: TEdit;
Button10: TButton;
Label15: TLabel;
Edit6: TEdit;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Memo1: TMemo;
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
Label1: TLabel;
Edit7: TEdit;
Label3: TLabel;
procedure Button2Click(Sender: TObject); //*
procedure Button3Click(Sender: TObject); //*
procedure Button4Click(Sender: TObject); //*
procedure Button7Click(Sender: TObject); //*
procedure Button8Click(Sender: TObject); //*
procedure Button9Click(Sender: TObject); //*
procedure Button10Click(Sender: TObject); //*
procedure FormCreate(Sender: TObject); //*
private
{ Private declarations }
public
{ Public declarations }
end;
const nm=200; // nm -максимальное количество слов в массиве
type
slovo=string[12];
masslov=array[1..nm] of slovo;
tptr=^telem;
telem=record
inf: slovo;
link : tptr;
end;
var
Form1: TForm1;
f:textfile;
d:masslov;
n:integer;//Chislo slov po FAKTU
filN:string;//Stroka imeni FILE
var
begq,endq : tptr;
implementation
{$R *.dfm}
Procedure Revers(var s:string);
var
c:char;
n:integer;
begin
n:=length(s);
c:=s[n];
s[n]:=s[1];
s[1]:=c;
end;
Procedure SSlova(s:string;var k:integer; var d:masslov);
var
i,n:integer;
ss:string;
c:char;
flag:boolean;
begin
s:=s+' ';
n:=length(s);
k:=0;
flag:=true;
ss:='';
for i:=1 to n do
if flag then
if s[i]=' ' then
begin
flag:=false;
k:=k+1;
d[k]:=ss;
ss:='';
end
else ss:=ss+s[i]
else
if s[i]<>' ' then
begin
flag:=true;
ss:=s[i];
end;
for i:=1 to k do
begin
ss:=d[i];
revers(ss);
d[i]:=ss;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Close
end;
procedure TForm1.Button3Click(Sender: TObject);//Chtenie iz Memo i zapis v FILe
var
i,n:integer;
s:string;
begin
filN:=edit1.text;
assignfile(f,FilN);
rewrite(f);
n:=memo1.Lines.Count;
for i:=1 to n do
begin
s:=memo1.Lines.Strings[i-1];
writeln(f,s);
end;
closefile(f);
end;
procedure TForm1.Button4Click(Sender: TObject);// Massiv slov iz FILE
var
i,j,k:integer;
s:string;
f:textfile;
z:masslov;
sl:slovo;
begin
Assignfile(f,filN);
{$i-}
reset(f);
{$i+}
if ioresult=0 then
begin
label7.Caption:='Файл открыт';
n:=0;
while not(eof(f)) do
begin
readln(f,s);
Sslova(s,k,z);
for i:=1 to k do
begin
n:=n+1;
d[n]:=z[i];
end;
end;
closefile(f);
StringGrid1.RowCount:=n;
StringGrid2.RowCount:=n;
StringGrid5.RowCount:=n;
for i:=1 to n do
StringGrid1.Cells[0,i-1]:=d[i]
edit7.Text:=inttostr(n);
end
else
label7.Caption:='Файл не открыт';
end;
procedure TForm1.Button7Click(Sender: TObject); // Upor Massiva Slov
VAR
i,k,c:INTEGER;
b:array[1..nm] of integer;
bs:masslov;
cs:slovo;
cc:char;
begin
for i:=1 to n do
bs[i]:=stringgrid1.cells[0,i-
for i:=1 to n do
begin
cs:=bs[i];
cc:=cs[1];
b[i]:=ord(cc);
end;
for k:=1 to n-1 do
for i:=n downto k+1 do
if b[i] < b[i-1] then
begin
c:=b[i]; cs:=bs[i];
b[i]:=b[i-1]; bs[i]:=bs[i-1];
b[i-1]:=c; bs[i-1]:=cs;
end;
d:=bs;
for i:=1 to n do
stringgrid2.cells[0,i-1]:=d[i]
end;
procedure TForm1.Button8Click(Sender: TObject);//POISK ELEM Massiva slov
var
i,j,k,x:integer;
bs:masslov;
xs:slovo;
begin
xs:=edit2.Text;
for i:=1 to n do
bs[i]:=stringgrid2.cells[0,i-
k:=0;
for i:=1 to n do
if bs[i]=xs then k:=i;
if k=0 then edit3.Text:='Нет значения'
else edit3.Text:='Найден элемент с номером '+inttostr(k);
end;
procedure TForm1.Button9Click(Sender: TObject);
var
value,i : integer;
p: tptr;
procedure addel (val: slovo);
begin
new(p);
p^.inf:=val;
p^.link:=nil;
if endq=nil {если создается первый элемент очереди}
then begq:=p
else endq^.link:=p; {если создается очередной элемент очереди}
endq:=p;
end;
begin {основная программа}
{Начальная установка указателей}
begq:=nil;
endq:=nil;
{Создание очереди}
for i:=1 to n do
addel(stringgrid2.cells[0,i-1]
{Поиск элементов в очереди}
p:=begq;
while p<>nil do
if p^.inf=edit4.text then
begin
edit5.Text:='Найден искомый элемент' ;
{корректировка найденного элемента}
p^.inf:=edit6.Text;
exit
end
else
begin
edit5.Text:='Поиск неудачный';
p:=p^.link;
end;
end;
procedure TForm1.Button10Click(Sender: TObject);
var
i : integer;
value:slovo;
procedure getdelel(var val : slovo);
var
P : tptr;
b:array[1..nm] of integer;
begin
val:=begq^.inf;
p:=begq;
begq:=p^.link;
if begq = nil {если удаляется последний элемент очереди}
then endq:=nil;
dispose(p)
end;
begin
{Удаление очереди с распечаткой значений ее элементов}
i:=1;
while begq<>nil do
begin
getdelel (value);
stringgrid5.cells[0,i-1]:=
i:=i+1;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Text:='';
stringgrid1.Rowcount:=6;
stringgrid2.Rowcount:=6;
stringgrid5.rowCount:=6;
end;
end.
Пример реализации приложения.