Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
matador333
0 / 0 / 0
Регистрация: 21.09.2012
Сообщений: 11
#1

ошибка.должена выйти из функции, но что-то не то - C++

21.09.2012, 21:11. Просмотров 797. Ответов 20
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <conio.h>
using namespace std;
int nod(int a,int b)
{
    int tmp;
    if(a!=b)
        { 
            if(a>b)
            {
                a=a-b;
                b=b;
            }
            else
            {
                tmp=a;
                a=b;
                b=tmp;
                a=a-b;
                b=b;
            }
 
            nod(a,b);
    }
    
    return a;
}
void main()
{
    int z,x=45,y=25;
    z=nod(x,y);
    cout<<z;
    getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2012, 21:11     ошибка.должена выйти из функции, но что-то не то
Посмотрите здесь:

Как выйти из функции - C++
Прошу прощения. Произошел сбой при записи. Напишите еще раз суть задачи. То получилось что-то вроде рекурсии, постоянно вызывается этот...

ошибка с полиморфизмом: программа не понимает, что нужно обращаться к наследуемой функции - C++
Нужно организовать класс стек посредством связной очереди соответственно, абстрактный базовый класс и два производных: для int и double ...

Динамическое выделение памяти внутри функции (что вернуть из функции, если не удалось выделить память?) - C++
такое дело, есть функция, которая выполняет некоторую операцию, функция при успешном выполнении должна вернуть 0, при ниудачном код...

Выйти из goto. - C++
Работаю в С++. Было задание написать программу с использованием goto. Вот код: ...

Как выйти из условия if? - C++
Пользователю предлагается выбор, он должен ввести 1 или 2. Я хочу учесть и ситуацию, когда пользователь ошибся, и,чтобы не перезапускать...

Не могу выйти из цикла - C++
Подскажите, пожалуйста, почему не выходит из цикла при вводе Y: do { cout &lt;&lt; &quot;Do you want to calculate again? (Y/N)&quot;; ...

do while - как выйти из цикла? - C++
Подскажите пожалуйста, а то я уже всю голову &quot;сломал&quot;, почему при вводе &quot;А&quot; цикл не прерывается??? #include &lt;iostream&gt; #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
veverix
39 / 39 / 2
Регистрация: 14.09.2012
Сообщений: 85
21.09.2012, 21:45     ошибка.должена выйти из функции, но что-то не то #2
У меня прекрасно пошло без изменений. Какая ошибка?
matador333
0 / 0 / 0
Регистрация: 21.09.2012
Сообщений: 11
21.09.2012, 21:49  [ТС]     ошибка.должена выйти из функции, но что-то не то #3
ответ должен быть 5..а у меня 20 выводит(
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
21.09.2012, 21:55     ошибка.должена выйти из функции, но что-то не то #4
5 правильный ответ после 1 итерации числа 20 25 после второй 5 20 а потом уменьшение 20 до 5
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
21.09.2012, 21:55     ошибка.должена выйти из функции, но что-то не то #5
Пишите НОД как белый человек, а то он у вас не рекурсивный (строка 24, где сохранение/возврат значения?)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int gcd(int a, int b)
{
  // я знаю про return a | b;
  if (a == 0) {
    return b;
  }
  else if (b == 0) {
    return a;
  }
  else if (a < b) {
    return gcd(a, b - a);
  }
  else {
    return gcd(a - b, b);
  }
}
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
21.09.2012, 22:01     ошибка.должена выйти из функции, но что-то не то #6
добавлю еще по коду пару замечаний
1
C++
1
b=b;
зачем так делать не понятно , вы не меняете значение переменной ,не трогайте ее, без этой строки все прекрасно будет работать
2
C++
1
a=a-b;
на будущее так как вы используете язык с++ ,то стоит пользоватся всеми его преимуществами, в данном случае эта строка кода идентична
C++
1
a-=b;
так короче, грамотнее и в любой книге такой пример есть

Добавлено через 2 минуты
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Пишите НОД как белый человек, а то он у вас не рекурсивный (строка 24, где сохранение/возврат значения?)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int gcd(int a, int b)
{
  // я знаю про return a | b;
  if (a == 0) {
    return b;
  }
  else if (b == 0) {
    return a;
  }
  else if (a < b) {
    return gcd(a, b - a);
  }
  else {
    return gcd(a - b, b);
  }
}
не сишком ли круто для новичка будет? )
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
21.09.2012, 22:07     ошибка.должена выйти из функции, но что-то не то #7
Как вариант.
C++
1
2
3
4
5
6
7
8
9
10
11
12
int gcd(int a, int b)
{
  while (a != 0 && b != 0) {
    if (a < b) {
      b = b - a;
    }
    else {
      a = a - b;
    }
  }
  return (a == 0) ? b : a; // или return a | b; чтоб быть воще крутым
}
Лучше, конечно, через остатки от деления. У вычитания плохо получается считать НОД(131232132131231, 3).
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.09.2012, 22:10     ошибка.должена выйти из функции, но что-то не то #8
C++
1
else return a;
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
21.09.2012, 22:12     ошибка.должена выйти из функции, но что-то не то #9
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Как вариант.
C++
1
// или return a | b; чтоб быть воще крутым
а можете прокоментировать коменнтарий как там работает он, я правильно понимаю ,что если ,что то не 0 то его и вернет?
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
21.09.2012, 22:14     ошибка.должена выйти из функции, но что-то не то #10
Фишка в том, что если a или b равно нулю, то a | b вернёт то, что не равно нулю. Если оба равны нулю, то НОД не определён вернёт ноль. Побитовое ИЛИ с нулём не изменяет число, вот и используется эта особенность.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.09.2012, 09:14     ошибка.должена выйти из функции, но что-то не то #11
Такой код неправильно работает?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
using namespace std;
 
int nod(int a, int b)
{
    int tmp;
    if(a != b)
    { 
        if(a > b)
        {
           a = a - b;
           b = b;
        }
        else
        {
            tmp = a;
            a = b;
            b = tmp;
            a = a - b;
            b = b;
         }
 
         nod(a, b);
     }
     else return a;
}
 
int main()
{
    int z, x = 45, y = 25;
    z = nod(x, y);
    cout << z;
  
system ("pause");
return 0;
}
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
22.09.2012, 11:06     ошибка.должена выйти из функции, но что-то не то #12
Цитата Сообщение от alsav22 Посмотреть сообщение
Такой код неправильно работает?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
using namespace std;
 
int nod(int a, int b)
{
    int tmp;
    if(a != b)
    { 
        if(a > b)
        {
           a = a - b;
           b = b;
        }
        else
        {
            tmp = a;
            a = b;
            b = tmp;
            a = a - b;
            b = b;
         }
 
         nod(a, b);
     }
     else return a;
}
 
int main()
{
    int z, x = 45, y = 25;
    z = nod(x, y);
    cout << z;
  
system ("pause");
return 0;
}
ты же просто скопировал код ТСа который четко дал понять , что он не рабочий в следствии того , что в нем нет рекурсии. Пролистай тему там есть замечания и методы решения
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.09.2012, 11:10     ошибка.должена выйти из функции, но что-то не то #13
Цитата Сообщение от Nixy Посмотреть сообщение
ты же просто скопировал код ТСа
Пержде чем писать, внимательно посмотри. Этот код выдаёт 5, а не 20 как у ТС.
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
22.09.2012, 11:20     ошибка.должена выйти из функции, но что-то не то #14
Цитата Сообщение от alsav22 Посмотреть сообщение
Пержде чем писать, внимательно посмотри. Этот код выдаёт 5, а не 20 как у ТС.
я его не тестил , но раз уж код как то отличается , покажи ту строку где есть отличие , я хоть убей не вижу ее, два идентичных кода
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2012, 11:28     ошибка.должена выйти из функции, но что-то не то
Еще ссылки по теме:

Выйти из нескольких функций - C++
Необходимо при определенном условии выскочить из косвенной рекурсии. Конечно, можно сделать это монструозно, но, полагаю, есть возможность...

Как выйти из цикла while(); - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;cctype&gt; #include &lt;string&gt; #include &lt;vector&gt; using namespace std; int main()...

как выйти из программы - C++
при выполнении программы - выполняется выбранная операция, после чего при нажатии любой кнопки цикл повторяется... вопрос: Что нужно...

Как выйти из оператора if - C++
Пишу ИИ для крестиков-ноликов и вопрос в том, если исполниться одино условие как сделать так что бы другие не проверялись? break чето в...

Не получается выйти из программы - C++
Всю голову сломала ! Почему while (str != NULL) не реагирует на (str != NULL) и не терминирует - что делать? Кто нибудь! #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.09.2012, 11:28     ошибка.должена выйти из функции, но что-то не то #15
Цитата Сообщение от Nixy Посмотреть сообщение
я его не тестил , но раз уж код как то отличается , покажи ту строку где есть отличие , я хоть убей не вижу ее, два идентичных кода
8 пост. ошибка.должена выйти из функции, но что-то не то
Yandex
Объявления
22.09.2012, 11:28     ошибка.должена выйти из функции, но что-то не то
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru