Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет2 курсач.doc
Скачиваний:
2
Добавлен:
16.09.2019
Размер:
459.26 Кб
Скачать

Блок схема

stringgrid1.Cells[0,i+1] := inttostr(i)

stringgrid1.Cells[1,i+1] := inttostr(x[i])

stringgrid2.RowCount := kounty+1

stringgrid2.Cells[1,0] := 'Y'

stringgrid2.Cells[1,0] := 'Y'

stringgrid2.Cells[0,i+1] := inttostr(i)

stringgrid2.Cells[1,i+1] := inttostr(y[i])

otr(kountx,x,sumx);

otr(kounty,y,sumy);

Progr 2

unit progr2;

interface

procedure formir(rand,kol:integer; var mas:array of integer);

procedure otr(kol1:integer; var mas1:array of integer; var sum:integer);

implementation

procedure formir(rand,kol:integer; var mas:array of integer);

var i:integer;

begin

for i:=0 to kol-1 do

mas[i]:=random(rand+1)-random(rand+1);

end;

procedure otr(kol1:integer; var mas1:array of integer; var sum:integer);

var i:integer;

begin

sum:=0;

for i:=0 to kol1-1 do

if mas1[i]<0 then

sum:=sum+mas1[i];

end;

end.

Блок схема

да нет

цикл

да нет

нет

да

возврат цикла

Задача №3

(Вариант 1)

Условие задачи: Дана строка символов. Преобразовать данную строку, удалив из нее каждую пару символов >> и повторив (вставив еще раз) каждую пару символов «. После преобразования полученную строку вывести на печать.

program Project2;

PROCEDURE OBRSLOV2(S:STRING);

VAR I,K:INTEGER;

T:STRING; TEX:boolean;

BEGIN

TEX:=FALSE;

FOR I:=1 TO Length(S) DO

BEGIN

IF (S[I]='>') AND (S[I-1]='>')

THEN

BEGIN

FOR K:=1 TO I-2 DO

BEGIN

T:=T+S[K];

END;

T:=T+' '; TEX:=TRUE;

END

ELSE IF TEX=TRUE THEN T:=T+S[I];

END;

IF TEX=TRUE THEN WRITELN(T) ELSE WRITELN(S);

END;

PROCEDURE OBRSLOV1(S:STRING);

VAR I,K:INTEGER; T,R:STRING; TEX:boolean ;

BEGIN

TEX:=FALSE;

FOR I:=1 TO Length(S) DO

BEGIN

IF (S[I]='<') AND (S[I-1]='<')

THEN

BEGIN

FOR K:=1 TO I DO

BEGIN

T:=T+S[K];

END;

T:=T+'<<'; TEX:=TRUE;

END

ELSE IF TEX=TRUE THEN T:=T+S[I];

R:=R+S[I];

END;

IF TEX=TRUE THEN

OBRSLOV2(T) ELSE OBRSLOV2(R);

END;

VAR S:STRING;

Begin

WRITE('VVEDITE SLOVO:');

READLN(S);

OBRSLOV1(S);

READLN;

end.

Блок схема

нет

Да

Нет

да

T:=T+S[K]

T:=T+'<<'; TEX:=TRUE

возврат цикла

Задача №4

(Вариант 1)

Условие задачи: Написать программу для создания базы данных с помощью языка Турбо Паскаль. В качестве ответа на поставленную задачу должна быть распечатка файла базы в виде таблицы с фиксированными длинами полей.

1.Создать файл, содержащий сведения о личной коллекции книголюба. Структура записи: шифр книги, автор, название, год издания, месторасположение (номер стеллажа, шкафа и т.п.). Количество записей

произвольное.

unit Unit1;

………

end;

const

filename='d:\Library.txt';

var

Form1: TForm1;

f:textfile;

s,str:string;

i,ind:integer;

type

rc=record

s1:string[10];

s2:string[20];

s3:string[30];

s4:string[4];

s5:string[3];

s6:string[2];

end;

var rec:rc;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);

begin

button3.enabled:=true; //делаем доступной для нажатия кнопку button3

edit1.Visible:=true; //делаем видимыми компоненты edit1-edit6 и label1-label6

edit2.Visible:=true;

edit3.Visible:=true;

edit4.Visible:=true;

edit5.Visible:=true;

edit6.Visible:=true;

label1.Visible:=true;

label2.Visible:=true;

label3.Visible:=true;

label4.Visible:=true;

label5.Visible:=true;

label6.Visible:=true;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

assignfile(f,filename); //связываем файловую переменную f с физическим файлом на диске

try

append(f); //пробуем открыть файл для дозаписи

except

rewrite(f); //в случае ошибки открываем файл для перезаписи

end;

with rec do //считываем введенные с клавиатуры данные из текстовых полей edit1-edit6 в переменные rec.s1-rec.s6

begin

s1:=edit1.text;

s2:=edit2.text;

s3:=edit3.text;

s4:=edit4.text;

s5:=edit5.text;

s6:=edit6.text;

if (s1='') or (s2='') or (s3='') or (s4='') or (s5='') or (s6='') then //если одна из переменных (rex.s1-rec.s6) оказалась пустой,

begin //то выводим соответствующее уведомление и выходим из этого обработчика

showmessage('Заполните все поля!');

closefile(f);

exit; end;

end;

stringgrid1.rowcount:=ind+1; //увеличиваем количество строк табдицы на форме на 1

stringgrid1.cells[0,ind]:=inttostr(ind); //выводим в последнюю строку таблицы на форме только что прочитанные данные

stringgrid1.cells[1,ind]:=rec.s1;

stringgrid1.cells[2,ind]:=rec.s2;

stringgrid1.cells[3,ind]:=rec.s3;

stringgrid1.cells[4,ind]:=rec.s4;

stringgrid1.cells[5,ind]:=rec.s5;

stringgrid1.cells[6,ind]:=rec.s6;

ind:=ind+1;

{записываем в файле считанные данные с применением форматирования: строки rec.s1-rec.s6 при записи в файл

будут иметь строго фиксированную длину, а также будут разделены между собой символом "|"}

writeln(f,format('%-10s|%-20s|%-30s|%-4s|%-3s|%-2s',[rec.s1,rec.s2,rec.s3,rec.s4,rec.s5,rec.s6]));

closefile(f); //закрываем файл

edit1.Text:=''; //очищаем текстовые поля edit1-edit6

edit2.Text:='';

edit3.Text:='';

edit4.Text:='';

edit5.Text:='';

edit6.Text:='';

edit1.Visible:=false; //делаем невидимыми компоненты edit1-edit6 и label1-label6

edit2.Visible:=false;

edit3.Visible:=false;

edit4.Visible:=false;

edit5.Visible:=false;

edit6.Visible:=false;

label1.Visible:=false;

label2.Visible:=false;

label3.Visible:=false;

label4.Visible:=false;

label5.Visible:=false;

label6.Visible:=false;

button3.Enabled:=false; //делаем недоступной для нажатия кнопку button3

end;

procedure TForm1.FormActivate(Sender: TObject);

var tmps:char; begin

{Вывод шапки таблицы на форме}

stringgrid1.Cells[0,0]:='№';

stringgrid1.Cells[1,0]:='Шифр';

stringgrid1.Cells[2,0]:='Автор';

stringgrid1.Cells[3,0]:='Название книги';

stringgrid1.Cells[4,0]:='Год';

stringgrid1.Cells[5,0]:='№ стелажа';

stringgrid1.Cells[6,0]:='№ полки';

{Установка ширины столбцов таблицы на форме}

stringgrid1.ColWidths[0]:=20;

stringgrid1.ColWidths[1]:=65;

stringgrid1.ColWidths[2]:=140;

stringgrid1.ColWidths[3]:=190;

stringgrid1.ColWidths[4]:=40;

stringgrid1.ColWidths[5]:=70;

stringgrid1.ColWidths[6]:=60;

assignfile(f,filename); //связываем файловую переменную f с физическим файлом на диске

try

reset(f); //пробуем открыть файл для чтения

except

rewrite(f); //в случае ошибки открываем файл для перезаписи

writeln(f,'Шифр |Автор |Название книги |Год |№ст|№п'); //выводим шапку в файл

writeln(f,'---------------------------------------------------------------------------');

closefile(f); //закрываем файл

showmessage('Файла базы данных не существует!'); //выводим уведомление

exit; //выходим из этого обработчика

end;

ind:=1; //если ошибки при открытии файла для чтения не произошло, то попадаем сюда

readln(f,tmps); //считываем две первые строки из файла они не нужны - это шапка

readln(f,tmps);

while not eof(f) do //цикл пока не достигнут конец файла

begin

{Далее читаем строку из файла в переменные rec.s1-rec.s6, в переменную tmps считываем символ "|",

который разделяет столбцы в файле}

read(f,rec.s1);

read(f,tmps);

read(f,rec.s2);

read(f,tmps);

read(f,rec.s3);

read(f,tmps);

read(f,rec.s4);

read(f,tmps);

read(f,rec.s5);

read(f,tmps);

readln(f,rec.s6);

stringgrid1.rowcount:=ind+1; //увеличиваем количество строк в таблице на форме на 1

stringgrid1.cells[0,ind]:=inttostr(ind); //выводим в таблицу на форме считанные данные

stringgrid1.cells[1,ind]:=rec.s1;

stringgrid1.cells[2,ind]:=rec.s2;

stringgrid1.cells[3,ind]:=rec.s3;

stringgrid1.cells[4,ind]:=rec.s4;

stringgrid1.cells[5,ind]:=rec.s5;

stringgrid1.cells[6,ind]:=rec.s6;

ind:=ind+1; //увеличиваем индекс на 1

end;

closefile(f); //закрываем файл

end;

end.