![]() |
|
|
Регистрация | << Правила форума >> | 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; . |