Edit31.Text:='';
end
else begin
m:=strtoint(Edit31.Text);
Edit35.Text:=inttostr(m);
end;
Val(Edit32.Text,A,code);
if (code<>0) then begin
Edit32.Text:='';
end
else begin
A:=strtoint(Edit32.Text);
Edit36.Text:=inttostr(A);
end;
Val(Edit33.Text,B,code);
if (code<>0) then begin
Edit33.Text:='';
end
else begin
B:=strtoint(Edit33.Text);
Edit37.Text:=inttostr(B);
end;
{=== Проверка ввода значений и заполнение массива ====================}
if (Edit34.Text<>'') and (Edit35.Text<>'') and (Edit36.Text<>'') and (Edit37.Text<>'')and
(StrToInt(Edit37.Text)>=StrToInt(Edit36.Text)) and (StrToInt(Edit34.Text)>0) and (StrToInt(Edit35.Text)>0)then begin
for i:=1 to n do
for j:=1 to m do M2[i,j]:=A+Random((B+1)-A);
Button37.Click;
end
else begin
Edit30.Text:=''; Edit31.Text:=''; Edit34.Text:=''; Edit36.Text:='';
Edit32.Text:=''; Edit33.Text:=''; Edit35.Text:=''; Edit37.Text:='';
for i:=1 to 4 do
for j:=1 to 4 do
Edit54.Text:=''; Edit55.Text:=''; Edit56.Text:='';
Label102.Visible:=true;
Timer2.Enabled:=True;
end;
if (Edit34.Text<>'') then begin
Button37.Click;
Button31.Enabled:=False;
Button32.Enabled:=False;
end;
end;
procedure TForm1.Button37Click(Sender: TObject);
Var i,j,A,B,n,m,M2i,M2j:integer;
sum:longint;
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;
StringGrid1.Cells[j,0]:=IntToStr(sum);
end;
{=== Нахождение кол-ва отрицательных элементов столбцов ==============}
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;
StringGrid1.Cells[j,1]:=IntToStr(sum);
end;
{=== Нахождение суммы положительных элементов столбцов ==============}
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;
StringGrid1.Cells[j,2]:=IntToStr(sum);
end;
{=== Нахождение кол-ва положительных элементов столбцов ==============}
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;
StringGrid1.Cells[j,3]:=IntToStr(sum);
end;
{=== Заполнение заглавных ячеек таблицы =============================}
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:=n+5;
StringGrid1.ColCount:=m+1;
{=== Нумерация колонок и строк ======================================}
for i:=1 to m+1 do StringGrid1.Cells[i,4]:=IntToStr(i);
for i:=1 to n+5 do StringGrid1.Cells[0,i+4]:=' '+IntToStr(i);
{=== Заполнение таблицы массивом ====================================}
M2i:=0;
M2j:=0;
For i:=5 to n+5 do begin
M2i:=M2i+1;
m2j:=1;
for j:=1 to m+1 do begin
StringGrid1.Cells[j,i]:=IntToStr(M2[M2i,M2j]);
M2j:=M2j+1;
end;
end;
{====================================================================}
end;
procedure TForm1.Button34Click(Sender: TObject);
begin
Panel1.Visible:=true; Panel6.Visible:=False;
Panel2.Visible:=false; Panel5.Visible:=False;
Panel3.Visible:=False; Panel4.Visible:=false;
PageControl1.Visible:=False;
end;
procedure TForm1.Button35Click(Sender: TObject);
vark,n,code:integer;
A,E,S:Extended;
begin
if (copy(Edit38.Text,1,1)='0') and (StrToInt(copy(Edit38.Text,3,1))<6) then begin
E:=StrToFloat(Edit38.Text);
k:=1;
A:=1/2;
s:=0;
{-->}while (abs(A)>=E) do begin
A:=1/((2*k-1)*(2*k+1));
k:=k+1;
s:=s+A;
memo3.Lines[k-2]:=IntToStr(k-1)+' '+FloatToStr(A)+#13+#10;
memo5.Lines[k-2]:=IntToStr(k-1)+' '+FloatToStr(s)+#13+#10;
{-->}end;
Edit39.Text:=IntToStr(k-1);
end else
Edit38.Text:='';
end;
procedure TForm1.Button36Click(Sender: TObject);
begin
memo3.Text:='';
memo5.Text:='';
memo3.Lines[0]:='Шаг / Значение А на шаге i';
memo5.Lines[0]:='Шаг / Значение S на шаге i';
Edit39.Text:='';
Edit38.Text:='0,0001';
end;
procedure TForm1.Button38Click(Sender: TObject);
var s:string;
n:double;
begin
{--- Проверка ввода в окно "Введите E" -------------------------------}
s:=Edit38.Text;
ifTryStrToFloat(s, n) then
begin
if (StrToFloat(s)>0) and (StrToFloat(s)<0.6) then button35.Click
else Edit38.Text:='';
end
else Edit38.Text:='';
{------------------------------------------------------------------}
end;
procedure TForm1.Button39Click(Sender: TObject);
begin
Panel1.Visible:=false; Panel6.Visible:=true;
Panel2.Visible:=false; Panel5.Visible:=False;
Panel3.Visible:=False; Panel4.Visible:=False;
PageControl1.Visible:=False;
end;
procedure TForm1.Button40Click(Sender: TObject);
Vari,j,n,k:integer;
s:string;
begin
k:=0;
for i:=0 to 7 do begin
for j:=1 to 8 do begin
k:=0;
k:=length(StringGrid2.Cells[i,j]);
if (k>15) then begin
Label107.Visible:=true;
Edit41.Text:=IntToStr(i+1);
Edit42.Text:=IntToStr(j);
end;
end;
end;
if (Label107.Visible=False) then
button43.Click;
end;
procedure TForm1.Button42Click(Sender: TObject);
begin
Label107.Visible:=False;
Edit40.Text:='';
Edit41.Text:='';
Edit42.Text:='';
end;
procedure TForm1.Button43Click(Sender: TObject);
vark,i,j,d:integer;
s:string;
begin
Edit40.Text:='Всевведеноверно';
// Сохраняем по выбранному пути
ifsavedialog1.Executethen
SaveStringGrid(StringGrid2, savedialog1.FileName);
end;
procedure TForm1.StringGrid2Click(Sender: TObject);
begin
Label107.Visible:=False;
Edit40.Text:='';
Edit41.Text:='';
Edit42.Text:='';
end;
procedure TForm1.Button41Click(Sender: TObject);
begin
// Открываем по выбранному пути
if opendialog1.Execute then
LoadStringGrid(StringGrid2, opendialog1.FileName);
end;
procedure TForm1.Button44Click(Sender: TObject);
begin
Panel1.Visible:=false; Panel6.Visible:=False;
Panel2.Visible:=false; Panel5.Visible:=true;
Panel3.Visible:=False; Panel4.Visible:=false;
PageControl1.Visible:=False;
end;
procedure TForm1.Button45Click(Sender: TObject);
var t0,t0code,tn,tncode,a,acode,M:integer;
s:string;
h:double;
begin
M:=0; // Накапливаемая метка - правильно ли введены данные
Val(Edit43.Text,t0,t0code);
if (t0code<>0) then Edit43.Text:='' else
if (t0<0) then Edit43.Text:='' else M:=M+1;
Val(Edit44.Text,tn,tncode);
if (tncode<>0) then Edit44.Text:='' else
if (tn<0) then Edit44.Text:='' else M:=M+1;
if (t0 >= tn) then Edit43.Text:='' else M:=M+1;
Val(Edit46.Text,a,acode);
if (a<=0) then Edit46.Text:='' else M:=M+1;
{--- Проверка ввода в окно "Шаг (h)" -------------------------------}
s:=Edit45.Text;
ifTryStrToFloat(s, h) then
begin
Edit48.Text:='Введеноверно';
if (StrToFloat(s)>0) then M:=M+1;
end
else Edit48.Text:='Ошибкаввода';
{------------------------------------------------------------------}
Edit47.Text:=inttostr(M);
if (M=5) then button47.Click;
end;
procedure TForm1.Button46Click(Sender: TObject);
vari,j:integer;
begin
Edit43.Text:='0';
Edit44.Text:='50';
Edit45.Text:='0,007';
Edit46.Text:='4';
Edit47.Text:='';
Edit48.Text:='';
Edit49.Text:='';
Button48.Enabled:=False;
PaintBox1.Visible:=False;
StringGrid3.Visible:=True;
{=== Очисткатаблицы ================================================}
with StringGRid3 do
for i:=0 to RowCount do
for j:=0 to ColCount do
Cells[j, i]:='';
StringGRid3.RowCount:=7;
{=== Задание таблице начального вида =================================}
StringGrid3.Cells[0,0]:=' t';
StringGrid3.Cells[1,0]:=' X=R*Cos(t)';
StringGrid3.Cells[2,0]:=' Y=R*Sin(t)';
end;
procedure TForm1.Button47Click(Sender: TObject);
vari,ks,a:integer;
h,tn,R,x,y:real;
tnE:string;
begin
a:=StrToInt(Edit46.Text); // a - значениедлявычислениярадиуса
h:=StrToFloat(Edit45.Text); // h - шаг
tnE:=Edit43.Text; // t начальная Edit (т.е. не число)
tn:=StrToFloat(Edit43.Text); // t на n-омшаге - число
i:=1; // для записывания в i-ую строку таблицы
ks:=2; // для приращивания кол-ва строк таблицы
// крутить пока не достигнет tk (tk - см. условие задачи)
while (tn<=StrToInt(Edit44.Text)) do begin
StringGrid3.Cells[0,i]:=tnE; // в i-уюстрокузаписатьtnE
R:=a*StrToFloat(tnE)/2; // находим R - по формуле задания
x:=R*Cos(StrToFloat(tnE)); // находим x - по формуле задания
y:=R*Sin(StrToFloat(tnE)); // находим y - по формуле задания
StringGrid3.Cells[1,i]:=FloatToStr(x); // в i-уюстрокузаписать x
StringGrid3.Cells[2,i]:=FloatToStr(y); // в i-уюстрокузаписать y
i:=i+1; // увеличиваем i на 1
tnE:=FloatToStr(StrToFloat(tnE)+h); // Изменяем tnE с учетом шага
StringGrid3.RowCount:=ks; // задаем кол-во строк в таблице
ks:=ks+1; // увеличиваем переменную кол-ва строк
tn:=tn+h; // изменяем t n-ое на заданный шаг
end;
Button48.Enabled:=True;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
paintbox1.refresh;
OSI;
end;
procedure TForm1.Button48Click(Sender: TObject);
begin
if (Button48.Caption='Показатьграфик') then
begin
StringGrid3.Visible:=false;
PaintBox1.Visible:=true;
Button48.Caption:='Показатьтаблицу';
paintbox1.refresh;
OSI;
Button49.Click;
end else
begin
StringGrid3.Visible:=true;
PaintBox1.Visible:=false;
Button48.Caption:='Показатьграфик';
end;
end;
procedure TForm1.Button49Click(Sender: TObject);
varks,i:integer;
Xt,Yt:real;
begin
RazX:=PaintBox1.Width;
RazY:=PaintBox1.Height;
Xmin:=0-(PaintBox1.Width div 2);
Xmax:=PaintBox1.Width div 2;
Ymin:=0-(PaintBox1.Height div 2);
Ymax:=PaintBox1.Height div 2;
ks:=0;
ks:=StringGrid3.RowCount-1;
Edit49.Text:=IntToStr(ks);
with form1.PaintBox1,canvas do begin
for i:=1 to ks do begin
Xt:=StrToFloat(StringGrid3.Cells[1,i]);
Yt:=StrToFloat(StringGrid3.Cells[2,i]);
Canvas.Pixels[Xs(Xt), Ys(Yt)]:=clRed;
end;
PaintBox1.Canvas.TextOut(10, 10, 'Функция "Спираль"');
PaintBox1.Canvas.TextOut(Xs(0),Ys(0),'0'); // подписываемначалокоординат
PaintBox1.Canvas.TextOut(PaintBox1.Width-10,Ys(-1),'x'); // подписываем y
PaintBox1.Canvas.TextOut((PaintBox1.Width div 2)-10, 5,'y'); // подписываем x
// рисуем стрелку вправо
MoveTo(PaintBox1.Width, PaintBox1.Height div 2);
PaintBox1.Canvas.LineTo(PaintBox1.Width-10, (PaintBox1.Height div 2)-4);
MoveTo(PaintBox1.Width, PaintBox1.Height div 2);
PaintBox1.Canvas.LineTo(PaintBox1.Width-10, (PaintBox1.Height div 2)+4);
// рисуем стрелку вверх
MoveTo(PaintBox1.Width div 2, 0);
PaintBox1.Canvas.LineTo((PaintBox1.Width div 2)-4, 10);
MoveTo(PaintBox1.Width div 2, 0);
PaintBox1.Canvas.LineTo((PaintBox1.Width div 2)+4, 10);
end;
end;
procedure TForm1.PageControl1Change(Sender: TObject);
begin
if PageControl1.ActivePage=TabSheet1 then
begin
Form1.Height:=484;
N8.Visible:=False;
N9.Visible:=False;
end;
if PageControl1.ActivePage=TabSheet2 then
begin
PageControl2.ActivePage:=TabSheet8;
N8.Visible:=true;
N9.Visible:=true;
end;
if PageControl1.ActivePage=TabSheet3 then
begin
PageControl2.ActivePage:=TabSheet9;
N8.Visible:=true;
N9.Visible:=true;
end;
if PageControl1.ActivePage=TabSheet4 then
begin
PageControl2.ActivePage:=TabSheet10;
N8.Visible:=true;
N9.Visible:=true;
end;
if PageControl1.ActivePage=TabSheet5 then
begin
PageControl2.ActivePage:=TabSheet11;
N8.Visible:=true;
N9.Visible:=true;
end;
if PageControl1.ActivePage=TabSheet6 then
begin
PageControl2.ActivePage:=TabSheet12;
N8.Visible:=true;
N9.Visible:=true;
end;
if PageControl1.ActivePage=TabSheet7 then
begin
PageControl2.ActivePage:=TabSheet13;
N8.Visible:=true;
N9.Visible:=true;
end;
end;
procedure TForm1.PageControl2Change(Sender: TObject);
begin
if PageControl2.ActivePage=TabSheet8 then
PageControl1.ActivePage:=TabSheet2;
if PageControl2.ActivePage=TabSheet9 then
PageControl1.ActivePage:=TabSheet3;
if PageControl2.ActivePage=TabSheet10 then
PageControl1.ActivePage:=TabSheet4;
if PageControl2.ActivePage=TabSheet11 then
PageControl1.ActivePage:=TabSheet5;
if PageControl2.ActivePage=TabSheet12 then
PageControl1.ActivePage:=TabSheet6;
if PageControl2.ActivePage=TabSheet13 then
PageControl1.ActivePage:=TabSheet7;
end;
procedure TForm1.Button51Click(Sender: TObject);
begin
n8.Visible:=false;
n9.Visible:=false;
end;
end.
Задача 1.
В программу вводится число Е.
После нажатия на кнопку «вычислить»
программа выводит все члены ряда
и количество итераций.
В разделе программы
«техническая информация…»
отслеживается сумма на
соответствующем шаге.
Задача 2.
Ввод данных можно осуществить как автоматически, так и вручную.Предусмотрена проверка на правильность введенных данных вручную.После заполнения программа подсчитывает, чему равно значение выражения.В «технической информации» можно отследить отдельно сумму квадратов и квадрат суммы. Также можно увидеть последнее число в массиве, или увидеть любой элемент массива по запросу. |
Задача 3.