![]() |
|
|
|
|
#1
|
|||
|
|||
|
У меня написана программа с while а мне надо с repeat until... подскажите как сделать?
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Label1: TLabel;
LabeledEdit1: TLabeledEdit;
procedure FormClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormClick(Sender: TObject);
const m=3; n=3;
type klop=array[1..m,1..n] of byte;
var x,y:klop;i,j,k:byte;
begin
i:=1;
while i<=stringgrid1.ColCount do
begin
j:=1;
while j<=stringgrid1.RowCount do
begin
k:=strtoint(labelededit1.Text);
x[i,j]:=strtoint(stringgrid1.Cells[i-1,j-1]);
if x[i,j]<0 then y[i,j]:=x[i,j]*k else
y[i,j]:=x[i,j];
label1.Caption:=label1.Caption+#9+floattostr(y[j,i]);
i:=i+1;
end;
j:=j+1;
label1.Caption:=label1.Caption+#13;
end;
end;
end. |
|
#2
|
||||
|
||||
|
Если в этом алгоритме все работало как надо, то вот так:
Код:
procedure TForm1.FormClick(Sender: TObject); const m=3; n=3; type klop=array[1..m,1..n] of byte; var x,y:klop;i,j,k:byte; begin i:=0; repeat j:=0; j:=j+1; repeat i:=i+1; k:=strtoint(labelededit1.Text); x[i,j]:=strtoint(stringgrid1.Cells[i-1,j-1]); if x[i,j]<0 then y[i,j]:=x[i,j]*k else y[i,j]:=x[i,j]; label1.Caption:=label1.Caption+#9+floattostr(y[j,i]); until j<=stringgrid1.RowCount; label1.Caption:=label1.Caption+#13; until i<=stringgrid1.ColCount; end; end. |
|
#3
|
|||
|
|||
|
Цитата:
а можно поподробнее о том что у меня тут нарушено...а то программа как-то не правильно работает... мне дана матрица 3х3 и если элемент отрицательный, то надо его умножить на заданный коэффициент. |
|
#4
|
||||
|
||||
|
Код:
Задача: Посчитать сумму чисел от 1 до 100 Код:
Решение с помощью While: ... i := 1; s := 0; while i >= 100 do begin s := s + i; Inc(i); end; ... Код:
Решение с помощью Repeat-Until: i := 1; s := 0; repeat s := s + i; Inc(i); until i > 100; |