Смекни!
smekni.com

Программирование 3 (стр. 3 из 5)

Button21.Enabled:=True;

Button20.SetFocus;

Edit1.Enabled:=True;

Label63.Enabled:=True;

Button19.Enabled:=False;

Memo2.Visible:=True;

Memo1.Visible:=False;

{=== Заполнения массива гласными буквами ============================}

Glas[1]:='A'; Glas[2]:='a'; Glas[3]:='E'; Glas[4]:='e'; Glas[5]:='I'; Glas[6]:='i'; Glas[7]:='Y'; Glas[8]:='y'; Glas[9]:='U'; Glas[10]:='u';

Glas[11]:='А'; Glas[12]:='Е'; Glas[13]:='е'; Glas[14]:='Ё'; Glas[15]:='ё'; Glas[16]:='И'; Glas[17]:='и'; Glas[18]:='О'; Glas[19]:='о'; Glas[20]:='У';

Glas[21]:='Ы'; Glas[22]:='ы'; Glas[23]:='Э'; Glas[24]:='э'; Glas[25]:='Ю'; Glas[26]:='ю'; Glas[27]:='Я'; Glas[28]:='я'; Glas[29]:='O'; Glas[30]:='o';

Glas[31]:='а'; Glas[32]:='у';

{--------------------------------------------------------------------}

Edit2.Text:=inttostr(Memo1.Lines.Count); // Выводкол-вастроквтексте

Y:=StrToInt(Edit2.Text); // Кол-во строк в тексте - для алгоритма

Ks:=StrToInt(Edit2.Text); // Кол-во строк в тексте - глобальная для сброса

{=== Заполнение массива буквами текста ============================}

for i:=1 to Y dobegin // Цикл по строкам

S:=Memo1.Lines[i-1]; // Копируем в переменную i-1 строку из текста

for j:=1 to 91 do // Цикл по символам строки

Mas[i,j]:=Copy(S,j,1); // Копируем в [i,j] из S j-ый элемент строки

end;

{=== Удаление глассных из массива =================================}

for i:=1 to Y do // Циклпострокам

for j:=1 to 91 do // Цикл по символам строки

foriGlas:=1 to 32 do // Цикл по проверке гласных

if (Mas[i,j]=Glas[iGlas]) then begin

Mas[i,j]:=' '; // Если символ гласный, то заменяем его пробелом

KSim:=KSim+1; // Если символ гласный, то накручиваем счетчик

end;

{=== Выводтестовойинформации =====================================}

Edit5.Text:=Mas[1,1]; Edit9.Text:=Mas[2,1]; Edit13.Text:=Mas[3,1];

Edit6.Text:=Mas[1,2]; Edit10.Text:=Mas[2,2]; Edit16.Text:=Mas[3,2];

Edit7.Text:=Mas[1,3]; Edit11.Text:=Mas[2,3]; Edit17.Text:=Mas[3,3];

Edit8.Text:=Mas[1,4]; Edit12.Text:=Mas[2,4]; Edit18.Text:=Mas[3,4];

{=== Заполнение текста из массива ==================================}

DLinX:=0; // Обнуление длины строки из переменной LinesX

LinesX:=''; // Обнуление строковой переменной

for i:=1 to Y dobegin // Цикл по строкам

LinesX:=''; // Обнуление строковой переменной

for j:=1 to 91 dobegin // Цикл по символам строки

insert(Mas[i,j],LinesX,j); // Собираем Mas[1,j] встроку

end;

if i<>Y then// Если i<>Y то вводит в RichEdit строку и переводит переход на следующую строку

Memo2.Lines[i-1]:=LinesX+#13+#10// Вводит в RichEdit готовую строку и переводит курсор ниже

Else // иначе вводит в RichEdit строку без перехода на следующую строку

Memo2.Lines[i-1]:=LinesX; // Вводит в RichEdit готовую строку

Edit4.Text:=LinesX; // Вывод собранной строки в тестовое окно

DLinX:=Length(S); // Подсчет длины готовой строки

Edit3.Text:=inttostr(DLinX); // Вывод длины собранной строки

end;

{=====================================================================}

Edit1.Text:=inttostr(KSim); // Вывод кол-ва гласных

end;

procedure TForm1.N8Click(Sender: TObject);

begin

Form1.Height:=690;

end;

procedure TForm1.N9Click(Sender: TObject);

begin

Form1.Height:=484;

end;

procedure TForm1.Button22Click(Sender: TObject);

begin

Edit2.Text:=inttostr(Memo1.Lines.Count); // Считаетколичествостроквполе Memo1

end;

procedure TForm1.Button20Click(Sender: TObject);

begin

if Button20.Caption='Показатьтекстсгласными' then begin

Memo1.Visible:=True;

Memo2.Visible:=False;

Button20.Caption:='Показать текст без гласных';

end

else begin

Memo1.Visible:=False;

Memo2.Visible:=True;

Button20.Caption:='Показатьтекстсгласными';

end;

end;

procedure TForm1.Button23Click(Sender: TObject);

begin

Panel1.Visible:=False; Panel6.Visible:=False;

Panel2.Visible:=true; Panel5.Visible:=False;

Panel3.Visible:=False; Panel4.Visible:=false;

PageControl1.Visible:=False;

end;

procedure TForm1.Button24Click(Sender: TObject);

VarN,A,B:integer;

Code,Si:integer;

Ss:string;

begin

if (Edit14.Text='') or (Edit15.Text='') or (Edit19.Text='') then begin

Label75.Font.Color:=clRed;

Timer1.Enabled:=true;

end;

{== Проверка ввода значений ==========================================}

Val(Edit14.Text,N,code);

if (code<>0) then begin

Edit14.Text:='';

Timer2.Enabled:=true;

Label77.Visible:=true;

end

else begin

N:=strtoint(Edit14.Text);

Edit20.Text:=inttostr(N);

end;

Val(Edit15.Text,A,code);

if (code<>0) then begin

Edit15.Text:='';

Timer2.Enabled:=true;

Label77.Visible:=true;

end

else begin

A:=strtoint(Edit15.Text);

Edit21.Text:=inttostr(A);

end;

Val(Edit19.Text,B,code);

if (code<>0) then begin

Edit19.Text:='';

Timer2.Enabled:=true;

Label77.Visible:=true;

end

else begin

B:=strtoint(Edit19.Text);

Edit22.Text:=inttostr(B);

end;

{=====================================================================}

if (Edit20.Text<>'') and (Edit21.Text<>'') and (Edit22.Text<>'') and (B>A) and (StrToInt(Edit14.Text)>0) then

Button27.Click;

end;

procedure TForm1.Button25Click(Sender: TObject);

VarN,A,B:integer;

begin

Randomize;

N:=Random(9998)+1;

A:=Random(9999)-9999;

B:=Random(9999);

Edit14.Text:=IntToStr(N); Edit20.Text:=inttostr(N);

Edit15.Text:=IntToStr(A); Edit21.Text:=inttostr(A);

Edit19.Text:=IntToStr(B); Edit22.Text:=inttostr(B);

Button27.Click;

Button24.Enabled:=False;

Button25.Enabled:=False;

end;

procedure TForm1.Button26Click(Sender: TObject);

var i:integer;

begin

Edit14.Text:=''; Edit20.Text:=''; Edit23.Text:=''; Edit26.Text:='';

Edit15.Text:=''; Edit21.Text:=''; Edit24.Text:=''; Edit27.Text:='';

Edit19.Text:=''; Edit22.Text:=''; Edit25.Text:=''; Edit28.Text:='';

Edit29.Text:='';

Label86.Caption:='';

Button24.Enabled:=True; ScrollBar1.Position:=0;

Button25.Enabled:=True; ScrollBar1.Max:=100;

for i:=1 to 9999 do

MasEx2[i]:=0;

end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin

Timer1.Enabled:=false;

Label75.Font.Color:=clBlack;

Label83.Font.Color:=clBlack;

end;

procedure TForm1.Timer2Timer(Sender: TObject);

begin

Label77.Visible:=false;

Label102.Visible:=false;

Timer2.Enabled:=false;

end;

procedure TForm1.Button27Click(Sender: TObject);

var i:integer;

A,B,N:integer;

EvenNumber:longint; // Четноечисло

OddNumber: longint; // Нечетноечисло

begin

Randomize;

N:=StrToInt(Edit20.Text);

A:=StrToInt(Edit21.Text);

B:=StrToInt(Edit22.Text);

Button24.Enabled:=False;

Button25.Enabled:=False;

{== Заполнение массива случайными числами из заданного диапазона ====}

for i:=1 to N do begin

MasEx2[i]:=A+Random((B+1)-A);

Edit23.Text:=IntToStr(MasEx2[i]);

end;

{=== Собирание массива в строку и вывод этой строки =================}

for i:=1 to N do

Edit25.Text:=Edit25.Text+IntToStr(MasEx2[i])+' ';

{=== Определение длины прокрутки для полосы прокрутки ===============}

Edit24.Text:=IntToStr(Length(Edit25.Text));

ScrollBar1.Max:=StrToInt(Edit24.Text);

{====================================================================}

EvenNumber:=0;

for i:=1 to N do

if (MasEx2[i] mod 2 = 0) then

EvenNumber:=EvenNumber+sqr(MasEx2[i]);

Edit28.Text:=IntToStr(EvenNumber);

OddNumber:=0;

for i:=1 to N do

if (MasEx2[i] mod 2 <> 0) then

OddNumber:=OddNumber+MasEx2[i];

OddNumber:=sqr(OddNumber);

Edit29.Text:=IntToStr(OddNumber);

Label86.Caption:=IntToStr(EvenNumber-OddNumber);

end;

procedure TForm1.ScrollBar1Change(Sender: TObject);

begin

{=== Связывание полосы прокрутки и окна с массивом ==================}

Edit25.SelStart:=ScrollBar1.Position;

end;

procedure TForm1.Button28Click(Sender: TObject);

varNi,i:integer;

Code:integer;

begin

{== Проверка ввода значений окна выбора элемента массива =============}

if (Edit26.Text='') then begin

Label83.Font.Color:=clRed;

Timer1.Enabled:=true;

end;

{== Проверка ввода истинности значений ==========================================}

Val(Edit26.Text,Ni,code);

if (code<>0) or (StrToInt(Edit26.Text)<1) or (Edit20.Text='') or

(StrToInt(Edit26.Text)>9999) or (StrToInt(Edit26.Text)<-9999) then begin

Edit26.Text:='';

Edit27.Text:='';

Label83.Font.Color:=clRed;

Timer1.Enabled:=true;

end

else begin

Ni:=strtoint(Edit26.Text);

Edit27.Text:=inttostr(MasEx2[Ni]);

end;

end;

procedure TForm1.Button29Click(Sender: TObject);

begin

Panel1.Visible:=False; Panel6.Visible:=False;

Panel2.Visible:=False; Panel5.Visible:=False;

Panel3.Visible:=True; Panel4.Visible:=false;

PageControl1.Visible:=False;

end;

procedure TForm1.Button30Click(Sender: TObject);

vari,j:integer;

begin

Edit30.Text:=''; Edit56.Text:=''; Edit37.Text:='';

Edit31.Text:=''; Edit54.Text:=''; Edit36.Text:='';

Edit32.Text:=''; Edit55.Text:=''; Edit35.Text:='';

Edit33.Text:=''; Edit34.Text:='';

Button31.Enabled:=True;

Button32.Enabled:=True;

for i:=1 to 999 do // Обнуление двумерного массива

for j:=1 to 999 do

M2[i,j]:=0;

{=== Очистка таблицы ================================================}

with StringGRid1 do

for i:=1 to 4 do

for j:=1 to ColCount do

Cells[j, i-1]:='';

with StringGRid1 do

for i:=5 to RowCount do

for j:=1 to ColCount do

Cells[j, i]:='';

{=== Задание таблице начального вида =================================}

StringGrid1.Font.Size:=8;

StringGrid1.Cells[0,0]:='Сумма "-"';

StringGrid1.Cells[0,1]:='Кол-во. "-"';

StringGrid1.Cells[0,2]:='Сумма "+"';

StringGrid1.Cells[0,3]:='Кол-во. "+"';

StringGrid1.Cells[0,4]:=' №';

StringGrid1.ColWidths[0]:=65;

StringGrid1.RowCount:=11;

StringGrid1.ColCount:=11;

for i:=1 to 11 do StringGrid1.Cells[i,4]:=IntToStr(i);

for i:=1 to 11 do StringGrid1.Cells[0,i+4]:=' '+IntToStr(i);

{====================================================================}

end;

procedure TForm1.BitBtn5Click(Sender: TObject);

vari,j,n,m:integer;

sum:longint;

begin

if (button32.Enabled=False) then begin

n:=StrToInt(Edit34.Text);

m:=StrToInt(Edit35.Text);

{=== Нахождение суммы отрицательных элементов столбцов ===========}

for j:=1 to m do begin

sum:=0;

for i:=1 to n do begin

if (M2[i,j]<0) then sum:=sum+M2[i,j];

end;

end;

{================================================================}

end;

end;

procedure TForm1.BitBtn6Click(Sender: TObject);

vari,j,n,m:integer;

sum:longint;

begin

if (button32.Enabled=False) then begin

n:=StrToInt(Edit34.Text);

m:=StrToInt(Edit35.Text);

{=== Нахождение количества отрицательных элементов столбцов =======}

for j:=1 to m do begin

sum:=0;

for i:=1 to n do begin

if (M2[i,j]<0) then sum:=sum+1;

end;

end;

{===================================================================}

end;

end;

procedure TForm1.BitBtn7Click(Sender: TObject);

vari,j,n,m:integer;

sum:longint;

begin

if (button32.Enabled=False) then begin

n:=StrToInt(Edit34.Text);

m:=StrToInt(Edit35.Text);

{=== Нахождение суммы положительных элементов столбцов ============}

for j:=1 to m do begin

sum:=0;

for i:=1 to n do begin

if (M2[i,j]>0) then sum:=sum+M2[i,j];

end;

end;

{===================================================================}

end;

end;

procedure TForm1.BitBtn8Click(Sender: TObject);

vari,j,n,m:integer;

sum:longint;

begin

if (button32.Enabled=False) then begin

n:=StrToInt(Edit34.Text);

m:=StrToInt(Edit35.Text);

{=== Нахождение количества положительных элементов столбцов =======}

for j:=1 to m do begin

sum:=0;

for i:=1 to n do begin

if (M2[i,j]>0) then sum:=sum+1;

end;

end;

{==================================================================}

end;

end;

procedure TForm1.Button32Click(Sender: TObject);

Vari,j,A,B,n,m:integer;

begin

Randomize;

A:=Random(999)-999; n:=Random(998)+1;

B:=Random(999); m:=Random(998)+1;

Edit32.Text:=IntToStr(A); Edit30.Text:=IntToStr(n);

Edit33.Text:=IntToStr(B); Edit31.Text:=IntToStr(m);

Edit36.Text:=IntToStr(A); Edit34.Text:=IntToStr(n);

Edit37.Text:=IntToStr(B); Edit35.Text:=IntToStr(m);

for i:=1 to n do

for j:=1 to m do

M2[i,j]:=A+Random((B+1)-A);

Button37.Click;

Button31.Enabled:=False;

Button32.Enabled:=False;

end;

procedure TForm1.Button33Click(Sender: TObject);

varn,m,i,j:integer;

begin

n:=0;

m:=0;

{=== Если массив заполнен и задан элемент, который нужно показать ===}

if (edit32.Text<>'') and (edit54.Text<>'') and (edit55.Text<>'') then begin

n:=StrToInt(Edit54.Text);

m:=StrToInt(Edit55.Text);

end;

{=== Если запрашивается элемент > 0 и < границ массива ==============}

if (n>0) and (n<StrToInt(Edit34.Text)+1) and (m>0) and (m<StrToInt(Edit35.Text)+1) then begin

Edit56.Text:=IntToStr(M2[n,m]);

j:=StrToInt(Edit55.Text);

i:=StrToInt(Edit54.Text)+4;

SetGridFocus(StringGrid1, i, j );

end else

Edit56.Text:='';

{====================================================================}

end;

procedure TForm1.Button31Click(Sender: TObject);

vari,j,A,B,n,m:integer;

Code:integer;

begin

Randomize;

{== Проверка ввода значений ==========================================}

Val(Edit30.Text,n,code);

if (code<>0) then begin

Edit30.Text:='';

end

else begin

n:=strtoint(Edit30.Text);

Edit34.Text:=inttostr(N);

end;

Val(Edit31.Text,m,code);

if (code<>0) then begin