Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2011, 17:47   #1
ITdocer
 
Регистрация: 19.10.2011
Сообщений: 3
Сообщение правильно ли работает программа?

Код:
program les;
uses crt;
var a,b,x,y:Integer;
const tr=30000;
begin
  textcolor (white);
  clrscr;
  Write('Vvedite X=');
  Readln(x);
  Write('Vvedite Y=');
  Readln(y);
    for a:=0 to tr do
      for b:=0 to tr do
    begin
      if (a+b=x)and(a*b=y) then
      begin
        WriteLn('a=',a);
        Writeln('b=',b);
      end;
    end;
  Readln;
end.
задание программы находит все возможные пары чисел А и В за входящими данными Х и У, такие,как А + В=Х,А* В= У,А,В,Х,У - целые числа,не больше по модулю 30000.

Последний раз редактировалось Stilet; 04.11.2011 в 09:10.
ITdocer вне форума Ответить с цитированием
Старый 04.11.2011, 01:46   #2
Костя КС
Пользователь
 
Аватар для Костя КС
 
Регистрация: 22.01.2008
Сообщений: 78
По умолчанию

правильно, если считать, что A,В,Х,У - целые положительные числа.
Я бы сделал так:

Код:
program les;
uses crt;
var a,b,x,y,tr:Integer;
begin
textcolor (white);
clrscr;
Write('Vvedite X=');
Readln(x);
Write('Vvedite Y=');
Readln(y);

if abs(x*y)>30000 then tr := 30000
                   else tr := abs(x*y);

for a:=-tr to tr do
for b:=-tr to tr do
begin
if (a+b=x)and(a*b=y) then
begin
WriteLn('a=',a);
Writeln('b=',b);
end;
end;
readln;
end.

Последний раз редактировалось Костя КС; 04.11.2011 в 02:01.
Костя КС вне форума Ответить с цитированием
Старый 04.11.2011, 09:37   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

господа, а зачем здесь ДВА цикла?!
Неужели неочевидно, что в данной задаче одного цикла вполне достаточно?!
ведь для любой корректной пары, если дано X и Y, берём очередное A. тогда B := X-A; без всяких циклов. Осталось проверить A*B=Y и выдать пару, если условие выполнилось!

грубо (не учитывая абсолютно корректное замечание Костя КС насчёт отрицательных чисел) можно это выразить так:
Код:
for a:=0 to tr do begin
     b = X - a;
     if (a*b=y) then
      begin
        WriteLn('a=',a);
        Writeln('b=',b);
      end;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не правильно работает программа sergik-2504 Помощь студентам 1 22.12.2010 09:17
Программа работает не правильно artem611 Паскаль, Turbo Pascal, PascalABC.NET 2 22.09.2010 07:49
не пойму правильно ли работает программа серг Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 13.05.2010 14:58
программа работает. правильно ли? getUp Общие вопросы C/C++ 10 26.03.2010 07:07
Не правильно работает программа Virus_L Помощь студентам 0 28.12.2009 22:52