Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 05.10.2019, 21:45   #1
Foksen
Новичок
 
Регистрация: 05.10.2019
Сообщений: 3
Репутация: 10
По умолчанию Проблемы с калькулятором НОД

Привет, славяне.
Нажмите на изображение для увеличения
Название: 777511517.jpg
Просмотров: 23
Размер:	53.6 Кб
ID:	97867

Делаю калькулятор дробей, застрял на штучке, которая будет считать НОД. Пока написал такой код:

Код:
    int x, y, x1, y1, nod;   
    cin >> x;
    cin >> y;

    if (x>=0) x1=x;   // Это делаем, чтобы найти модуль числа. НОД будем вычислять у модулей.
    if (x<0) x1=-x;
    if (y>=0) y1=y;
    if (y<0) y1=-y;

    cout << x1 << "  " << y1 << "\n\n";    // Это мы проверяем, правильно ли прошла предыдущая операция

    if (x1<y1) nod=x1;
    if (x1>=y1) nod=y1;

    while (x1%nod!=0 && y1%nod!=0)
    {
        nod--;
    }

// Находим, модуль какого числа меньше, потом делаем НОД равным этому числу. Дальше декрементим, пока оба числа не будут делится нацело. Есть скорее всего какие-нибудь более рациональные варианты нахождения НОДа, но мне как-то похуй

    if (x>=0) x=x1/nod;
    if (x<0) x=-x1/nod;
    if (y>=0) y=y1/nod;
    if (y<0) y=-y1/nod;

    cout << x << "   " << y << "          nod" << nod;
Не понимаю почему он не работает. Помогите, плез.
Foksen вне форума   Ответить с цитированием
Старый 05.10.2019, 21:54   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,853
Репутация: 2668
По умолчанию

Код:
    while (x1%nod!=0 && y1%nod!=0)
    {
        nod--;
    }
Условие неправильное, нет проверки на уход nod за 0.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 05.10.2019, 22:00   #3
Foksen
Новичок
 
Регистрация: 05.10.2019
Сообщений: 3
Репутация: 10
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Код:
    while (x1%nod!=0 && y1%nod!=0)
    {
        nod--;
    }
Условие неправильное, нет проверки на уход nod за 0.
По логике, когда nod становится равным одному, то цикл останавливается... Ну типо, при делении любого целого числа на 1, остаток будет равным 0.

Я попробовал в условие цикла while добавить "&& nod>0", но это не помогло
Foksen вне форума   Ответить с цитированием
Старый 05.10.2019, 22:04   #4
Foksen
Новичок
 
Регистрация: 05.10.2019
Сообщений: 3
Репутация: 10
По умолчанию

Нажмите на изображение для увеличения
Название: Desktop Screenshot 2019.10.05 - 21.03.51.97.jpg
Просмотров: 9
Размер:	76.4 Кб
ID:	97869
Foksen вне форума   Ответить с цитированием
Старый 05.10.2019, 22:17   #5
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,853
Репутация: 2668
По умолчанию

Вы пропустили первую часть моего предложения. Берем 3%2 != 0 && 2%2 != 0 -> false цикл не выполняется.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка с калькулятором 8 с/с Strannik_kz Общие вопросы C/C++ 0 28.04.2011 01:54
проблема с калькулятором neprogrammist Общие вопросы Delphi 7 21.06.2010 19:17
Проблема з калькулятором carbon383 Помощь студентам 22 02.11.2008 12:49
Помогите с калькулятором. Sanch Помощь студентам 1 24.09.2008 06:42
Проблемы с калькулятором MAKEDON Помощь студентам 18 02.08.2008 14:30


03:09.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.