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

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

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

Наибольший общий делитель!Нужно исправить ошибочку - C++

21.01.2010, 00:35. Просмотров 318. Ответов 5
Метки нет (Все метки)

Наибольший общий делитель (НОД) двух целых чисел является самым большим числом, на которое делится каждое из двух чисел. Напишите функцию gcd, которая возвращает наибольший общий делитель двух целых чисел.



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 <math.h>
using namespace std;
int FNOD ( int x, y, i ) 
{
if ((X%i == 0) && ( Y%i ==0 ) )
return 1 ;
else
{
return 0;
}
} 
int main ()
{ 
int a,b,d,ost; 
cout << " vvedite a i b" << endl;
cin>> a >> b;
if (a>b)
{
k=b;
}
else 
{
k=a;
}
for (i=1 ; i<k ; i++ )
if (FNOD(a,b,i)==1)
NOD=i;
 
cout << " NOD = " << NOD << endl;
 
return 0 ;
}}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2010, 00:35     Наибольший общий делитель!Нужно исправить ошибочку
Посмотрите здесь:

Наибольший общий делитель C++
C++ наибольший общий делитель
Наибольший общий делитель на С++ C++
C++ Наибольший общий делитель
Наибольший общий делитель (НОД) C++
C++ Наибольший общий делитель целочисленного списка
Найдите наибольший общий делитель C++
C++ Наибольший общий делитель
Наибольший общий делитель C++
C++ Найти наибольший общий делитель чисел M и N, используя метод Эйлера (исправить ошибки)
C++ Найти наибольший общий делитель
Наибольший общий делитель C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OVERPOWER8
 Аватар для OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
21.01.2010, 00:42     Наибольший общий делитель!Нужно исправить ошибочку #2
Вот: Функцию FNOD можешь назвать как угодно.

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
#include <iostream>
using namespace std;
 
int FNOD(int x, int y)
{
    int max;
    
    if(x>y)
        max = y;
    else
        max = x;
    
    int res=1;
    
    for(int i=2; i<=max; i++)
        if( !(x%i) && !(y%i))
            res=i;
            
    return res;
}
 
int main()
{
    cout << FNOD(8, 12) << endl;
                                
        return 0;
        
}
Jereme
1 / 1 / 0
Регистрация: 19.12.2008
Сообщений: 27
21.01.2010, 00:51  [ТС]     Наибольший общий делитель!Нужно исправить ошибочку #3
а как сделать чтоб с клавиатуры вводить числа!
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
21.01.2010, 01:03     Наибольший общий делитель!Нужно исправить ошибочку #4
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
#include <stdio.h>
 
#ifndef min
#define min(a, b) (((a) > (b)) ? (b) : (a))
#endif
    
int maxDiv(int a, int b){
    int div;
    if ( a < 0 )
        a *= -1;
    if ( b < 0 )
        b *= -1;
    div = min(a, b);
    while ( div > 0 && ( ( a % div ) || ( b % div ) ) )
        --div;
    return div;
}
 
int main(void){
    int a, b, div;
    
    printf("Enter two values...\na: ");
    scanf("%d", &a);
    printf("b: ");
    scanf("%d", &b);
    if ( div = maxDiv(a, b) )
        printf("The greatest common divider is %d\n", div);
    else
        printf("Can't find some common divider.\n");
    
    return 0;
}
Jereme
1 / 1 / 0
Регистрация: 19.12.2008
Сообщений: 27
21.01.2010, 01:07  [ТС]     Наибольший общий делитель!Нужно исправить ошибочку #5
Спасибо огромное)
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
21.01.2010, 01:16     Наибольший общий делитель!Нужно исправить ошибочку #6
OVERPOWER8, попробуйте вот с такой main() запустить:
C++
1
2
3
4
5
6
7
8
int main()
{
    cout << 8 << ' ' << 12 << ' ' << FNOD(8, 12) << endl;
    cout << -8 << ' ' << 12 << ' ' << FNOD(-8, 12) << endl;
                                
        return 0;
        
}
Yandex
Объявления
21.01.2010, 01:16     Наибольший общий делитель!Нужно исправить ошибочку
Ответ Создать тему
Опции темы

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