Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 07.11.2009
Сообщений: 52
1

Программа для нахождения......

07.11.2009, 02:28. Просмотров 841. Ответов 7
Метки нет (Все метки)

Нужна программа на языке Cи для нахождения наибольшего общего делителя для двух натуральных числел, никак не могу сообразить как это сделать, помогите ,пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.11.2009, 02:28
Ответы с готовыми решениями:

Программа для нахождения растояния
Здравствуйте, можете помочь написать программу: Определить координаты точки наиболее удаленной от...

Программа для нахождения числа
Дана последовательность целых чисел.Известно,что все числа в ней встречаются четное количество раз,...

Программа для нахождения определенного интеграла
Помогите, написать программу для нахождения определенного интеграла с точностью Е = 10-3 для...

Программа для нахождения сопротивления соединения
При сопротевлении R1,R2,R3 соединены параллельно. Найти сопротивление соединения. Вот сам код...

7
8 / 8 / 5
Регистрация: 30.05.2009
Сообщений: 47
07.11.2009, 02:34 2
http://ru.wikipedia.org/wiki/%... 0%9E%D0%94
0
0 / 0 / 0
Регистрация: 07.11.2009
Сообщений: 52
07.11.2009, 02:35  [ТС] 3
Я это читал, как это сделать , весь алгаритм понял, НО как записать это в программном коде?
я не понимаю, помогите,пожалуйста, я совсем уже замучался, а то что ниже, мне не понятно, мы еще этого не проходили( я про shift и т.д)
0
365 / 68 / 2
Регистрация: 25.09.2008
Сообщений: 401
07.11.2009, 06:05 4
там же прямо и написано реализация на С
давай подробней, что именно тебе непонятно (коментировать весь код мне лень )

shift - это переменная типа инт
Код
int shift;
вот они в самом начале её объявили

ничего сложного, чего можно было бы "не проходить" или не найти мигом в инете я там не увидел...
ифы, циклы, стандартные операции... собственно того, чего могло быть не рассказано на первых двух лекциях, или не написано в любой книге по С, я там вижу только >>= и <<
на что та же википедия нам сразу может дать ответ например >>= - относится к операторам присваивания

З.Ы. собственно помнить только стоит чем логические операции от побитовых отличаются, и чем
++shift будет отличаться от shift++
0
4310 / 1478 / 101
Регистрация: 12.04.2009
Сообщений: 2,346
07.11.2009, 10:25 5
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <stdio.h>
unsigned int gcd(unsigned int u, unsigned int v)
{
    int shift;
    /* GCD(0,x) := x */
    if (u == 0 || v == 0)
    {
        return u | v;
    }
    /* Let shift := lg K, where K is the greatest power of 2
    dividing both u and v. */
    for (shift = 0; ((u | v) & 1) == 0; ++shift)
    {
        u >>= 1;
        v >>= 1;
    }
    while ((u & 1) == 0)
    {
        u >>= 1;
    }
    /* From here on, u is always odd. */
    do
    {
        while ((v & 1) == 0)  /* Loop X */
            v >>= 1;
 
        /* Now u and v are both odd, so diff(u, v) is even.
        Let u = min(u, v), v = diff(u, v)/2. */
        if (u < v)
        {
            v -= u;
        }
        else
        {
            unsigned int diff = u - v;
            u = v;
            v = diff;
        }
        v >>= 1;
    } while (v != 0);
    return u << shift;
}
int main()
{
    unsigned int u, v;
    printf("Vvedite pervoe 4islo: ");
    scanf("%u",&u); 
    printf("Vvedite vtoroe 4islo: ");
    scanf("%u",&v); 
    printf("NOD: %u",gcd(u,v));
    return 0;
}
0
0 / 0 / 0
Регистрация: 07.11.2009
Сообщений: 52
07.11.2009, 19:34  [ТС] 6
Просто мне надо без использования Shift ) Unsigned и только в конце 1 Return 0;
а не в середине где то еще..
с помощью цикла for или while (do...while).
Эта прога работает, но препод меня не поймет)
0
8 / 8 / 5
Регистрация: 30.05.2009
Сообщений: 47
07.11.2009, 19:38 7
C++
1
2
3
4
5
6
7
8
9
int NOD(int a,int b)
 {
    while(a!=0 && b!=0)
    {
       if(a>=b) a=a%b;
           else b=b%a;
    }
 return a+b; // Одно - ноль
 }
0
Эксперт С++
4709 / 2534 / 753
Регистрация: 18.08.2009
Сообщений: 4,550
07.11.2009, 22:00 8
https://www.cyberforum.ru/cpp-... 61972.html
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.11.2009, 22:00

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Программа для нахождения автоморфных чисел.
Задача такая: Напечатать N автоморфных чисел (автоморфным называется число, совпадающее с младшими...

Программа для нахождения определителя матрицы
#include&lt;iostream&gt; #include&lt;iomanip&gt; #include&lt;stdio.h&gt; #include&lt;math.h&gt; using namespace std;...

Программа для нахождения минимального положительного числа
Здравствуйте, подскажите, как написать программу для нахождения минимального положительного числа...

Программа для нахождения простых чисел от 1 до 100
Здравствуйте, в задании требуется написать программу для нахождения простых чисел от 1 до 100. В...

программа для нахождения минимального положительного значения
программа считывает последовательность из целых положительных чисел.потом выдает минимальное среди...

Программа для нахождения всех совершенных чисел до 5000
Мне нужно написать программу 1)которая найдет все числа до числа a, например если a=5 то...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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