Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Ввести число и определить его автооморфность

Автор: Анастасия 30.11.2006 22:12

Задача такая. Дано натуральное число с. Определить, является ли оно автооморфным. Например : 6 в квадрате 36, 25 в квадрате 625. 6 и 25 автооморфные , потому что после возведения в квадрат числа совпадают с последнимим разрядами числа.
В паскале решить эту задачу я могу и решила. Но как это сделать на делфи. Я уже 2-й день сижу на том, что просто не могу ввести число через форму.

Код

program kkk;
uses crt;
var k,i,f,n,u:integer; s: array[1..15] of string[15];
n1,f1:string;
begin
clrscr;
u:=0;k:=0;
writeln('vvedite n');
readln(n);
f:=n*n;
writeln('n v kvadratre = ',f);
str(n,n1);
for i:=1 to length(n1) do
begin
u:=u+1; end; {u - kolichestvo chisel v n}
str(f,f1);
for i:=1 to length(f1) do
begin
s[i]:=f1[length(f1)-i+1]
end;
for i:=1 to u do begin   {proverayem s conza}
if n1[length(n1)-i+1]=s[i] then
begin
k:=k+1;
end;end;
if k=u then begin  {sravnivaem kolichestvo}
write('da');end else  {odinakovyh  chisel v f i n}
begin
write('net');
end;end.

На Делфи получается вот такая ерунда в самом начале.
Код

unit Unit121;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
  type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  var
  Form1: TForm1;
m,code,k,i,f,n,u:integer; s: array[1..15] of string[15];
a,n1,f1:string;
implementation
begin
u:=0;k:=0;
n:=strtoint(Edit1.Text)выдает ошибку на этой строке ...
f:=n*n;
procedure TForm1.Button1Click(Sender: TObject);
begin
label2.caption:=inttostr(f);
end;

Ошибка could not comiled used unit121.pas. Я по-всякому меняла представление n, чтобы его посчитать, но не получается. Для опытных пользователей делфи эта ошибка возможно покажется смешной. Но я не могу ничего сделать. Я на делфи почти не писала.
Прикрепленный файл  121.rar ( 2.09 килобайт ) Кол-во скачиваний: 391

Автор: мисс_граффити 30.11.2006 22:37

если ты работаешь с формой, то все действия надо проводить в обработчиках событий или описывать обычными подпрограммами.
то есть для того, чтобы работало, просто засунь написанное на паскале внутрь procedure TForm1.Button1Click(Sender: TObject); (ну и замени readln и writeln)

unit Unit121;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
m,code,k,i,f,n,u:integer; s: array[1..15] of string[15];
a,n1,f1:string;
implementation
procedure TForm1.Button1Click(Sender: TObject);
begin
u:=0;k:=0;
n:=strtoint(Edit1.Text);
{n:=strtoint(a);}
f:=n*n;
label2.caption:=inttostr(f);
end;


вот так работает.
и еще один совет - по возможности не объявляй такую кучу глобальных переменных. лучше в каждой процедурке свой раздел var

Автор: Анастасия 1.12.2006 3:02

Ой, спасибо. Все работает.