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

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

Форум «Всё о Паскале» _ Задачи _ Помогите пожайлусто с Паскалем

Автор: ovosch 24.05.2011 2:07

Проверьте пожалуйсто задачу . Где-то ошибка б но я не знаю как исправить

Найти все трехзначные числа, которые можно представить разностью между квадратом числа, образованного первыми двумя цифрами и квадратом третьей цифры. (Например, 100, 147).

program ovosch;
var
a,b,e,d,i,n:integer;
begin
for i:=1 to 999 do
begin
a:=random(900)+100;
b:=a mod 100;
d:=b mod 10;
e:=a div 10;
if a=sqr(e)-sqr(d) then writeln(a)
end;
end.


По сути прога должна выдавать только 2 числа (100, 147).Заранее спасибо.

Автор: DarkWishmaster 24.05.2011 2:32

Цитата(ovosch @ 23.05.2011 22:07) *

Проверьте пожалуйсто задачу . Где-то ошибка б но я не знаю как исправить

Найти все трехзначные числа, которые можно представить разностью между квадратом числа, образованного первыми двумя цифрами и квадратом третьей цифры. (Например, 100, 147).

program ovosch;
var
a,b,e,d,i,n:integer;
begin
for i:=1 to 999 do
begin
a:=random(900)+100;
b:=a mod 100;
d:=b mod 10;
e:=a div 10;
if a=sqr(e)-sqr(d) then writeln(a)
end;
end.

По сути прога должна выдавать только 2 числа (100, 147).Заранее спасибо.

дело в том что у тебя a:=random(900)+100; так как число 100 или 147 могут не попадать в ряд случайно сгенерированых чисел, то ничего тебе на экран выводить не будет.
Напиши a:=i;
и цикл начинай с 100, тебе же нужно 3 значные числа.

Автор: ovosch 24.05.2011 2:37

Цитата(DarkWishmaster @ 23.05.2011 22:32) *

дело в том что у тебя a:=random(900)+100; так как число 100 или 147 могут не попадать в ряд случайно сгенерированых чисел, то ничего тебе на экран выводить не будет.
Напиши a:=i;
и цикл начинай с 100, тебе же нужно 3 значные числа.

Спасибо, помог,работает!!!!

Автор: Lapp 24.05.2011 3:20

+1 от ovosch

Но я бы сделал как-то вот так..

for i:=10 to 99 do begin
a:= i*i;
b:= i*10;
for j:=0 to 9 do
if a-j*j=b+j then writeln(i,j);
end;