Member
Статус: Не в сети Регистрация: 10.04.2006 Откуда: Таганкаааа Фото: 11
Есть,казалось бы простое задание:написать на языке Си(досовском) функцию,возвращающую несколько значений,применимо к заданию: для двух натуральных чисел найти нод и нок.Си(дос) только начал изучать,но решить не могу.
Вот что я накатал:
#include <stdio.h>
int vichisl(int a,int b)
{
while (a!=b)
{
if (a>b)
a-=b;
else
b-=a;
};
b=a*b/a;
return a,b;
}
main()
{ int a,b;
printf("\n‚Введите первое натуральное число:");
scanf("%d",&a);
printf("\n‚Введите второе натуральное число:");
scanf("%d",&b);
vichisl(a,b)
printf("\nHOD=%d,HOK=%d\n",a,b);
return 0;
}
только вот после верхней функции(где вычисления происходят верно) выдаётся совсем не тот ответ(не передаются переменные a и b)
в чём косяк?всю голову сломал уже,но решить так и не смог.
P.S числа берём натуральные,без всякой проверки ввода,фиг с ними.
P.P.S решать надо именно в дос варианте
_________________ Оставь надежду всяк сюда входящий...
Пля, я уже не помню, можно так сделать или нет, но объяви просто переменные а и б для функции vichisl в общем пространстве имен. И просто внутри функции сделай a := значение и б := значение, а в return пиши 0. Сразу скажу - на сейчас и на будущее - всегда делай return и никогда не пользуй void. (Функция ДОЛЖНА возвращать значение.)
Добавлено спустя 3 минуты, 20 секунд Кароче, если не понятно:
Код:
#include <stdio.h>
int ext_a := 0; int ext_b := 0;
int vichisl(int a,int b) { while (a!=b) { if (a>b) a-=b; else b-=a; }; b=a*b/a;
ext_a := a; ext_b := b;
return 0; }
int main() { printf("\n‚Введите первое натуральное число:"); scanf("%d",&ext_a); printf("\n‚Введите второе натуральное число:"); scanf("%d",&ext_b); vichisl( ext_a, ext_b );
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения