Консультация № 189470
22.05.2016, 18:25
0.00 руб.
0 4 1
Здравствуйте! У меня возникли сложности с таким вопросом:
Помогите найти ошибку. В консольном режиме всё получалось, а когда я сделал с интерфейсом, то он не учитывает то, что я ввожу в edit1 .

Код:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
n:integer;

implementation

{$R *.dfm}

function prost(n: integer): boolean;
var i,j: integer;
x: boolean;
begin
x:=true; i:=2;
j:=round(sqrt(n)); // îêðóãëÿåì êîðåíü ÷èñëà
repeat // ïîâòîðÿòü
if (n mod i)=0 then
begin
x:=false;
break; // êîíåö öèêëà
end;
i:=i+1;
until i>j; // äî
prost:=x;
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Edit1.Text:=Inttostr(n);
n:=n+1;
while not prost(n) do n:=n+1;
ShowMessage('áëèæàéøåå ïðîñòîå ÷èñëî: '+InttoStr(n));
end;
end.

Обсуждение

давно
Посетитель
400259
21
22.05.2016, 18:27
общий
Должно это считать:
Дано некоторое натуральное число СН. Вывести на печать ближайшее к нему простое число

(Простые числа - 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199)
давно
Посетитель
400259
21
22.05.2016, 18:28
общий
В консоли с этим кодом работает
Код:
Program qwer;
function prost(var n: integer): boolean;
var i,j: integer;
x: boolean;
begin
x:=true; i:=2;
j:=round(sqrt(n)); // округляем корень числа
repeat // повторять
if (n mod i)=0 then
begin
x:=false;
break; // конец цикла
end;
i:=i+1;
until i>j; // до
prost:=x;
end;
{ основная программа }
var n: integer;
begin
write('CH = '); readln(n);
n:=n+1;
while not prost(n) do n:=n+1;
writeln('ближайшее простое число: ',n); readln;
end.
давно
Старший Модератор
31795
6196
24.05.2016, 11:17
общий
Цитата: almazmr
Form1.Edit1.Text:=Inttostr(n);

Вы не вводите N.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
24.05.2016, 11:32
общий
это ответ
Здравствуйте, almazmr!

Вот слегка переделал:
[code lang=pascal h=200]unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, math, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
n:integer;
implementation
{$R *.dfm}
function prost(a: integer): boolean;
var
b:integer;
begin
b:=round(sqrt(a));
while((a mod b)>0)and(b>1)do
dec(b);
prost:=b=1;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
n:=StrToInt(Form1.Edit1.Text);{ : ) =Inttostr(n);}
repeat
inc(n);
until prost(n);
ShowMessage('ближайшее простое число: '+InttoStr(n));
end;
end.[/code]
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа