PDA

نسخه کامل مشاهده نسخه کامل : كجاش غلطه ؟ (دلفي)



ALI Kheradmand
20-12-2005, 21:39
من این برنامه رو برای پیدا کردن عدد اول در محدوده که کاربر مشخص می کنه نوشتم . اما کار نمی کنه . کجاش غلطه ؟
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
ListBox1: TListBox;
Label3: TLabel;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c,d,i : integer ;
begin
d:=0;
a := StrToInt(edit1.Text);
b := StrToInt(edit2.Text);
for i:=a+1 to b-1 do
begin
for c:=1 to b do
begin
if (i mod c)=0 then d:=d+1;
end;
if d=2 then
begin
listbox1.Items.Add(inttostr(i));
end;
end;

end;



procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;

end.

ALI Kheradmand
22-12-2005, 16:46
بابا جون تو رو خدا یه اظهار نظری بکنید . حتی اگر نمی دانید هم بنویسید . چون می خوام بفهمم مشکل از برنامه نویسی منه یا جای دیگه .

batri
22-12-2005, 17:48
سلام.
من فکر کنم که اینجاش مشگل داره
if d=2 thenbeginlistbox1.Items.Add(inttostr(i));

mojybox
09-02-2006, 05:53
دوست من علي آقا
من تو گشتن بين صفحه ها به اين تاپيك برخوردم.
اين جواب رو كه به نظر من رسيده براي اين عليرغم اين مدت دير مينويسم تا اگه دوستان ديگه اي هم مثل من برخوردن به اين تاپيك بتونن روش كار كنن.
ببين علي آقا
شما از يه متغير كمكي براي شمارش تعداد تقسيمات داراي باقيمانده صفر استفاده كردين ولي نيومدين اون رو براي هر عدد جديدي كه مورد بررسي قرار ميگيره صفر كنين تا مقدار محاسبه شده براي اعداد قبلي را به حساب نياره.
يعني بايد يه جابجايي تو اون خط برنامه بدي كه ميشه اين

....
a,b,c,d,i : integer ;
begin
از اينجا حذف d:=0;
a := StrToInt(edit1.Text);
b := StrToInt(edit2.Text);
for i:=a+1 to b-1 do
begin
به اينجا منتقلd:=0;
for c:=1 to b do
....
.كه با اين كار با هر بار اجراي حلقه اصلي مقدار اين متغير هم صفر ميشه و برنامه كار ميكنه

كد كامل رو هم برات ميذارم تا راحت به فرمت انتقال بدي.


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
ListBox1: TListBox;
Label3: TLabel;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c,d,i : integer ;
begin
a := StrToInt(edit1.Text);
b := StrToInt(edit2.Text);
for i:=a+1 to b-1 do
begin
d:=0;
for c:=1 to b do
begin
if (i mod c)=0 then d:=d+1;
end;
if d=2 then
begin
listbox1.Items.Add(inttostr(i));
end;
end;

end;



procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;

end.
پيروز باشين.

ALI Kheradmand
30-06-2006, 20:20
ممنون . فقط یه مقدار خیلی دیره ! من این رو برای یه قسمت از نرم افزارم برای یه مسابقه می خواستم که البته یه 4-5 ماه دیر شد .