посмотрите пожалуйста....у меня не выводятся Х и У, программу сам писал....
Вот задание:...Для заданных натуральных чисел А и В найти такие целые числа Х и У, что А*Х+В*У=С, где С равно наибольшему общему делителю чисел А и В.
Program LR_2; Uses Crt;
var A, B, X, Y, C, r : Longint;
Function NOD (Var a, b : longint) : longint;
Var X, Y, C : integer;
Begin
if (a = 0) or (b = 0)then
if a = 0 then
nod := b else
nod := a
else
If a >= b then begin
a := a mod b;
nod := nod (a,b);
end
else
Begin
b := b mod a;
nod := nod(a, b);
end;
end;
Begin Clrscr;
Writeln ('Vvedite dva celih shisla');
Readln (a); Readln (b);
Writeln ('C = ', nod(a, b));
r := nod(a,b);
readln;
end.
А ты ведь не задал что будишь с Х и У делать и они просто напросто равны нулю. Ты только считаешь NOD наибольший общий делитель А и В. Вот и все а другие нечего не использовал.
вот смотри
Program LR_2;
var A, B: Longint;
Function NOD (Var a, b : longint) : longint;
Begin
if (a = 0) or (b = 0)then
if a = 0 then
nod := b else
nod := a
else
If a >= b then begin
a := a mod b;
nod := nod (a,b);
end
else
Begin
b := b mod a;
nod := nod(a, b);
end;
end;
Begin
Writeln ('Vvedite dva celih shisla');
Readln (a); Readln (b);
Writeln ('C = ', nod(a, b));
readln;
end.
maksimla меня опередил, я хотел сказать то же самое (хотя уточню: x и y не равны нулю; они вообще ничему не равны - их просто нет..). И еще, я сомневаюсь вот в этом:
огромнейшее спасибо за помощь
Добавлено через 2 мин.
там надо дописать где-то вывод Х и У....там ведь формула А*Х+В*У=С, и нужно чтобы выводились целые числа Х и У
Добавлено через 1 мин.
а программа номально работает..это я знаю, но когда х и у хочешь вывести ошибка переполнения стека возникает
вроде бы так, но если не так подправьте пожалуйста
Program LR_2; Uses Crt;
var A, B, X, Y, C, r : Longint;
Function NOD (Var a, b : longint) : longint;
Var X, Y, C : integer;
Begin
if (a = 0) or (b = 0)then
if a = 0 then
nod := b else
nod := a
else
If a >= b then begin
a := a mod b;
nod := nod (a,b);
end;
c := Nod(a,b)
c := A*X+B*Y
else
Begin
b := b mod a;
nod := nod(a, b);
end;
c := Nod(a,b)
c := A*X+B*Y;
end;
Begin Clrscr;
Writeln ('Vvedite dva celih shisla');
Readln (a); Readln (b);
Writeln ('C = ', nod(a, b));
writeln (X, Y);
end.
М | ставь тэги, пожалуйста |
это я просто наугод записал здесь....там ошибка переполнения стека вылетает...я не лгу честно
c := Nod(a,b);у тебя из за этого переполнение стека ты просто обращаешься к функции Nod заново а если хочещь значение Nod дать с то надо делать так
c := Nod;
c := A*X+B*Y;
мне преподаватель сказал чтобы я ещё написал вторую рекурсивную функцию для вывода Хи У используя перебор с возвратом...помогите если можете!!!!!