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

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

Войти
Регистрация
Восстановить пароль
 
sashadereh
3 / 3 / 1
Регистрация: 30.09.2012
Сообщений: 63
#1

Найти НОД только циклами и if - C++

30.09.2012, 14:29. Просмотров 778. Ответов 11
Метки нет (Все метки)

Нужно найти НОД двух чисел, используя только циклы и оператор if. Помогите пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2012, 14:29     Найти НОД только циклами и if
Посмотрите здесь:

Найти все пятизначные числа, в которых ровно две одинаковые цифры (только циклами !) - C++
Помогите пожалуйста. Никак не получается решить задачу. Необходимо вывести на экран все пятизначные числа, в которых ровно две одинаковые...

Определить в последовательности число соседств двух чисел с разным знаком (только с циклами, без массивов) - C++
Здраствуйте! Дано натуральное число n, действительные числа q1,q2,..,qn . В последовательности q1,q2,..,qn определить число соседств двух...

Найти НОД - C++
Заданные натуральные числа n и m. Найти НОД (n, m) (наибольший общий делитель). Составить программу, которая будет содержать рекурсивную...

Найти НОД - C++
Помогите решить задачу. Вводятся два целых числа.Найти найбольший общий делитель

Найти НОД 6-и чисел - C++
Начали проходить тему процедуры и функции, и вот дали такую задачу: Найти НОД 6-и чисел (НОД 3-х чисел(НОД 2-х чисел)). Не могу разобраться...

Найти НОД двух чисел - C++
Необходимо составить программу которая определяет для двух вводимых натуральных чисел M и N их наибольший общий делитель

Даны числа, найти НОД - C++
Даны натуральные числа n,m; найти НОД(n,m). Использовать программу, включающую рекурсивную процедуру вычисления НОД, основанную на...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cmath
Модератор
2432 / 1651 / 133
Регистрация: 11.08.2012
Сообщений: 3,278
Завершенные тесты: 5
30.09.2012, 14:40     Найти НОД только циклами и if #2
C++
1
2
3
4
5
6
7
8
9
10
11
int EVCLID(int a, int b)
{
    while ((a != 0) && (b != 0))
    {
        (a > b) ? (a %= b) : (b %= a);
    }
    if (a != 0)
        return a;
    else
        return b;
}
P.S. из моей программы. Код сов. рабочий. Программу тестил много раз.
sashadereh
3 / 3 / 1
Регистрация: 30.09.2012
Сообщений: 63
30.09.2012, 16:35  [ТС]     Найти НОД только циклами и if #3
A иначе никак? Без return'a?
makShot
15 / 15 / 1
Регистрация: 07.07.2011
Сообщений: 38
30.09.2012, 16:44     Найти НОД только циклами и if #4
Если без функций, то можно так:

C++
1
2
3
for (int GCD = (x < y) ? x : y; GCD > 0; GCD--)  //greatest common divisor
if ((x % GCD == 0) && (y % GCD == 0))
{printf("\nGreatest Common Divisor of %d and %d is %d\n",x,y,GCD); break;
cmath
Модератор
2432 / 1651 / 133
Регистрация: 11.08.2012
Сообщений: 3,278
Завершенные тесты: 5
30.09.2012, 17:39     Найти НОД только циклами и if #5
Цитата Сообщение от sashadereh Посмотреть сообщение
A иначе никак? Без return'a?
ё-моё... А вы не можете код проанализировать, или это за вас сделать? Там модифицировать-то не много надо.
C++
1
2
3
4
5
6
7
8
9
10
int a, b;
int NOD;
while ((a != 0) && (b != 0))
{
        (a > b) ? (a %= b) : (b %= a);
}
    if (a != 0)
        NOD=a;    
    else
        NOD=b;
sashadereh
3 / 3 / 1
Регистрация: 30.09.2012
Сообщений: 63
30.09.2012, 18:22  [ТС]     Найти НОД только циклами и if #6
Спасибо большое, я понял Ваше решение. А как думаете, такое решение пройдет?
C++
1
2
3
4
int a, b, NOD;
NOD=(a>b)?b:a;
while ( (a%NOD!=0) && (b%NOD!=0) )
NOD--;
makShot
15 / 15 / 1
Регистрация: 07.07.2011
Сообщений: 38
30.09.2012, 18:36     Найти НОД только циклами и if #7
Решение пройдет, но считать правильно не будет.
cmath
Модератор
2432 / 1651 / 133
Регистрация: 11.08.2012
Сообщений: 3,278
Завершенные тесты: 5
30.09.2012, 18:36     Найти НОД только циклами и if #8
Цитата Сообщение от sashadereh Посмотреть сообщение
А как думаете, такое решение пройдет?
Нет. У вас в цикле происходит только понижение NOD на единицу, а параметры цикла не меняются. Программа зациклится у вас. Можете сами проверить.
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
30.09.2012, 18:47     Найти НОД только циклами и if #9
программа не зациклится и при a>0, b>0 будет правильной, если && на || заменить. По крайней мере, на 1 всегда остановится при взаимно простых a и b.

Hydrogen, если минимум из a и b не равен нулю, то в том варианте цикл сразу остановится, так как одно из условий (a%NOD != 0) и (b%NOD != 0) не будет верным, а при нулевом минимуме программа просто вылетит
Catstail
Модератор
22432 / 10837 / 1765
Регистрация: 12.02.2012
Сообщений: 17,951
30.09.2012, 18:54     Найти НОД только циклами и if #10
Цитата Сообщение от sashadereh Посмотреть сообщение
используя только циклы и оператор if
- очень сильное ограничение...
Kotte318
Сообщений: n/a
13.03.2013, 16:42     Найти НОД только циклами и if #11
Цитата Сообщение от cmath Посмотреть сообщение
ё-моё... А вы не можете код проанализировать, или это за вас сделать? Там модифицировать-то не много надо.
C++
1
2
3
4
5
6
7
8
9
10
int a, b;
int NOD;
while ((a != 0) && (b != 0))
{
        (a > b) ? (a %= b) : (b %= a);
}
    if (a != 0)
        NOD=a;    
    else
        NOD=b;
а что обозначает %=?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2013, 19:36     Найти НОД только циклами и if
Еще ссылки по теме:

Найти НОД заданной последовательности - C++
Вводим количество элементов в последовательности. Вводим элементы. Программа находит НОД всех введенных элементов. Пример : 5 ...

Найти НОД по Эвклиду 2 чисел - C++
Вот пишу...но ошибки..помогите исправить, спасибо) #include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;cmath&gt; using namespace...

Найти НОД трех чисел - C++
заданы 3 числа . нужно найти их наибольший общий делитель

Для целых чисел N и M найти НОД - C++
Составить программу, которая бы для целых чисел N и M (|N|, |M| &lt;=2000000) находила их НОД (наибольший общий делитель). Указания к...

Найти НОД с переменным числом аргумента - C++
Есть функция с переменным числом параметров, найти их максимальный общий делитель. #include &lt;iostream&gt; #include &lt;conio.h&gt; using...


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

Или воспользуйтесь поиском по форуму:
Quantity
12 / 12 / 1
Регистрация: 06.06.2012
Сообщений: 136
13.03.2013, 19:36     Найти НОД только циклами и if #12
Цитата Сообщение от Kotte318 Посмотреть сообщение
а что обозначает %=?
Это означает присвоить делимому остаток от деления. допустим в коде :
C++
1
2
int a = 5; int b = 7;
b %= a;
b получится равным двум.
Yandex
Объявления
13.03.2013, 19:36     Найти НОД только циклами и if
Ответ Создать тему
Опции темы

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