![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Помогите пожалуйста убрать последний знак в ответе.
Пишу на Delphi 7, программа должна разлаживать заданное число на простые множители. На скрине видно, нужно * убрать в ответе. Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
x,z,e: integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.text:=Edit1.Text+'=';
z:=StrToInt (Edit1.text);
repeat
for e:=2 to z do
begin
x:=z mod e;
if x=0 then begin
z:=z div e;
Edit2.Text:=Edit2.Text+inttostr(e)+'*';
break;
end;
end;
until z=1;
end;
end. |
|
#2
|
||||
|
||||
|
замените
Код:
Edit2.Text:=Edit2.Text+inttostr(e)+'*'; Код:
if z=1 Edit2.Text:=Edit2.Text+inttostr(e) else Edit2.Text:=Edit2.Text+inttostr(e)+'*'; а еще можно) Код:
until z=1; Delete(Edit2.text, length(Edit2.text),1); end; |
|
#3
|
|||
|
|||
|
Цитата:
Лучше так Код:
procedure TForm1.Button1Click(Sender: TObject);
var
x,z,e,k: integer;
S:string;
begin
Val(Edit1.Text,z,e); // а вдруг ввели непойми чего
if e<>0 then
begin
Edit2.Text:=Edit1.Text+' - не целое';
Exit;
end;
if z=1 then // тривиальный случай
begin
Edit2.Text:='1=1';
Exit;
end;
e:=2;
k:=0;
repeat
x:=z mod e;
if x=0 then
begin
z:=z div e;
if k = 0 then
begin
if S='' then
S:=inttostr(e)
else
S:=S+' * '+inttostr(e);
end;
k:=k+1;
end
else
begin
if k > 1 then
S:=S+'^'+inttostr(k);
e:=e+1;
k:=0;
end;
until e>z ;
if k > 1 then
S:=S+'^'+inttostr(k);
Edit2.Text:=Edit1.Text+'='+S;
end;
. |