Форум «Всё о Паскале» _ Делфи _ Ввести число и определить его автооморфность
Автор: Анастасия 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