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

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

Восстановить пароль Регистрация
 
Jereme
1 / 1 / 0
Регистрация: 19.12.2008
Сообщений: 27
21.01.2010, 00:35     Наибольший общий делитель!Нужно исправить ошибочку #1
Наибольший общий делитель (НОД) двух целых чисел является самым большим числом, на которое делится каждое из двух чисел. Напишите функцию 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++ Наибольший общий делитель
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
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
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
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     Наибольший общий делитель!Нужно исправить ошибочку
Ответ Создать тему
Опции темы

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