Блок схема
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.