Консультация № 167307
14.05.2009, 18:13
0.00 руб.
0 8 2
Написать программу которая будет выводить числа, у квадратов которых на конце буква равная етому числу(пример. 6^2=36,
5^2=25 и тд.)

Знаю ,что уже задавал етот вопрос , но мой препод не поверить , что я так решил, потому что мы в 10 кл. не проходили:

size := trunc(log10(i))+1;
и
dec(size);
Сделайте пожалуйста попроще. заранее спс

Обсуждение

Неизвестный
14.05.2009, 19:36
общий
17.05.2009, 19:51
это ответ
Здравствуйте, Rainheart74!
Вот Вам попроще (господа коллеги, простите за изврат)!
Так как квадрат 1 = 1 то получается что единица подпадает. Если по условию не должна - заремарте где написано в комментариях.
И поменяйте придел на нужный вам (в цикле). Где именно - написано в комментариях.
И еще, уберите комментарии...
С уважением, hacpaka



Приложение:
for zx := 0 to 100 do {здесь поставь придел до которого искать}
begin
zxsqr:=sqr(zx);
res := zxsqr mod 10;
if ((zxsqr)<10) then continue;{если единица должна выводится - заремарь}
if (res=zx) then
memo.Lines.Add(inttostr(zx)+' : '+inttostr(zxsqr));
end;
1
Неизвестный
14.05.2009, 21:32
общий
Вы бы хоть ссылку, или хотя бы номер вашего прошлого вопроса привели, чтобы было от чего отталкиваться.
Неизвестный
15.05.2009, 07:54
общий
Это я писал "ту" программу - http://rusfaq.ru/info/question/166984
Неизвестный
15.05.2009, 07:56
общий
И, мужики, не могу не сказать: И ЭТО (не проходили "trunc") ПРЕПОДАВАНИЕ DELPHI - ... нет слов, кроме матерных
давно
Профессионал
153662
1070
16.05.2009, 17:32
общий
это ответ
Здравствуйте, Rainheart74!
Предлагаю свой вариант решения Вашей задачи:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
x, i: integer;
y: string;
begin
x:= StrToInt(Edit1.Text);
Memo1.Clear;
for i := 1 to x do
begin
y:= IntToStr(sqr(i));
If Length(y) <> 1 then
delete(y, 1, Length(IntToStr(i)));
If StrToInt(y) = i then
Memo1.Lines.Add(IntToStr(i) + ' * ' + IntToStr(i)+ ' = ' + IntToStr(sqr(i)));
end;
end;
в edit вводится конечное число для поиска.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

давно
Мастер-Эксперт
680
2811
17.05.2009, 16:33
общий
Boris, спокойнее. Они действительно не проходили логарифмы. Логарифмы в 11 классе по программе, если это только не какая-нибудь гимназия.
Да и если Delphi у них, то наверняка на примитивном уровне.
Неизвестный
17.05.2009, 19:52
общий
вот простой вариант, кстати, просто откорректированный ответ hаcpaka
Код:
procedure TForm1.Button2Click(Sender: TObject);
var zx,zxsqr,x:integer;
s1,s2,s3:String;
begin
Memo1.Clear;
x:= StrToInt(Edit1.Text);
for zx := 0 to x do {здесь поставь придел до которого искать}
begin
zxsqr:=sqr(zx);
s1 := IntToStr(zxsqr);
s2 := IntToStr(zx);
s3 := Copy(s1, length(s1)-length(s2)+1, length(s2));
if s2 = s3 then
memo1.Lines.Add(s3+' : '+s1);
end;
end;
Неизвестный
18.05.2009, 17:04
общий
по просьбе hacpaka
Цитата: hacpaka
Вот корректный код:

Код:
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
zx:integer;
res:integer;
zxsqr:longint;
modvalue:integer;
modzx:integer;
begin
for zx := 0 to 100 do {здесь поставь придел до которого искать}
begin
zxsqr:=sqr(zx);
if ((zxsqr)<10) then continue;{если единица должна выводится - заремарь}
modvalue :=10;
for modzx := 2 to length(inttostr(zx)) do
modvalue:=modvalue*10;
res := zxsqr mod modvalue;
if (res=zx) then
memo.Lines.Add(inttostr(zx)+' --> '+inttostr(zxsqr));
end;
end;

----------------------------
Форма ответа