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

Поиск наибольшего общего делителя - C++

Восстановить пароль Регистрация
 
bogdanSAU
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 19
06.10.2012, 13:08     Поиск наибольшего общего делителя #1
Всем привет. Мне нужна ваша помощь. Не могу разобраться даже в элементарных циклических алгоритмах. Задавали д.з возведение в степень число, так я, над ним умирал. И все равно не смог до конца написать сам. Вот такой вот элементарный был:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# include <iostream>
using namespace std;
void main ()
{ float a, i=0, y=1, x;
 cout<<"vvedite chislo=";
 cin>>a;
 cout<<"vvedite stepen=";
 cin>>x;
 while(x>i)
 {
 y=y*a;
 i=i+1;
 }
 while (x<i)
 {
 y=y/a;
 i=i-1;
 }
 cout<<"chislo="<<y;
 system ("pause");
}
Теперь задали написать алгоритм Евклида, смотрел на форуме у вас, но там много таких (тегов или как они там) которые нам еще не преподавали. Хочу все таки разобрать в С++. Кто сможет мне объяснить ( как для тупенького=)) как написать это алгоритм Евклида, если нам еще кроме while, do while, for ничего не объясняли.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2012, 13:08     Поиск наибольшего общего делителя
Посмотрите здесь:

Составить программу для нахождения наибольшего и наименьшего общего делителя и наименьшего общего кратного двух натуральных чисел C++
C++ нахождение наибольшего общего делителя для 6-и чисел
Написать рекурсивную функцию вычисления Наибольшего общего делителя C++
C++ Написать подпрограмму нахождения наибольшего общего делителя двух чисел
Напишите программу с использованием функции для вычисления наибольшего общего делителя C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
user_p01
19 / 19 / 2
Регистрация: 03.11.2011
Сообщений: 80
06.10.2012, 13:22     Поиск наибольшего общего делителя #2
Т. е. нужно найти НОД двух чисел?
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
06.10.2012, 13:23     Поиск наибольшего общего делителя #3
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
#include <iostream> 
 
int nod( int a, int b) 
{ 
    while(a!=0 && b!=0) 
    { 
        if( a >= b) 
            a %= b; // то же самое что a = a % b
        else 
             b %= a; 
    } 
    return a+b; 
}
 
int main() 
{ 
    int a, b; 
 
    std::cout << "Inter a first number " << std::endl; 
    std::cin >> a; 
    std::cout << "Inter second number " << std::endl;  
    std::cin >> b;
    std::cout << std::endl; 
    std::cout << nod(a, b) << std::endl;
}
user_p01
19 / 19 / 2
Регистрация: 03.11.2011
Сообщений: 80
06.10.2012, 13:28     Поиск наибольшего общего делителя #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "rus");
    int a, b;
    cout << "Введите 2 числа:\n";
    cin >> a >> b;
    do
    {
        if (a>=b)
            a%=b;
        else
            b%=a;
    }
    while (a*b>0);
    cout << "НОД: " << a+b << endl;
    system("pause");
    return 0;
}
bogdanSAU
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 19
06.10.2012, 13:36  [ТС]     Поиск наибольшего общего делителя #5
David Sylva, a почему после iostream ты ничего не писал (объясни пожалуйста). Почему std:: стоит перед cout и cin

Добавлено через 4 минуты
user_p01, setlocale(LC_ALL, "rus"); - с помощью это, выбираем русский язык. Правильно я понял? Извини, но как понят a%=b, то есть если a=4, то b есть % от 4?
user_p01
19 / 19 / 2
Регистрация: 03.11.2011
Сообщений: 80
06.10.2012, 13:40     Поиск наибольшего общего делителя #6
Цитата Сообщение от bogdanSAU Посмотреть сообщение
setlocale(LC_ALL, "rus"); - с помощью это, выбираем русский язык. Правильно я понял?
Да. Подключаем кириллицу.

Цитата Сообщение от bogdanSAU Посмотреть сообщение
Извини, но как понят a%=b, то есть если a=4, то b есть % от 4?
a%=b это то же самое, что a=a%b, т. е. a присваивается остаток от деления a на b.
% - это операция остатка от целочисленного деления
bogdanSAU
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 19
06.10.2012, 13:46  [ТС]     Поиск наибольшего общего делителя #7
Спасибо user_p01, а можно a%=b как то по другому записать? Или только так

Добавлено через 54 секунды
return 0 - кстати, а что это за команда?
user_p01
19 / 19 / 2
Регистрация: 03.11.2011
Сообщений: 80
06.10.2012, 13:49     Поиск наибольшего общего делителя #8
Либо a%=b, либо a=a%b.
% - это стандартная операция в С++, также как и сложение, вычитание, умножение и т. д.

Добавлено через 2 минуты
Цитата Сообщение от bogdanSAU Посмотреть сообщение
return 0 - кстати, а что это за команда?
Оператор return возвращает значение функции main, т. е. 0
bogdanSAU
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 19
06.10.2012, 13:52  [ТС]     Поиск наибольшего общего делителя #9
Цитата Сообщение от bogdanSAU Посмотреть сообщение
user_p01
спасибо тебе большое, но сам бы я до такого не додумался, не знаю почему. Чего мне не хватает. С матем на ты, а с алгоритмами вообще никак. Что ты мне можешь посоветовать?
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
06.10.2012, 13:53     Поиск наибольшего общего делителя #10
потому что cout и сin, объявлены в пространстве имён std. Хочешь пиши в начале using namespace std, хочешь так как в программе это без разницы.
user_p01
19 / 19 / 2
Регистрация: 03.11.2011
Сообщений: 80
06.10.2012, 13:56     Поиск наибольшего общего делителя #11
Цитата Сообщение от bogdanSAU Посмотреть сообщение
Что ты мне можешь посоветовать?
Тренироваться, решать задачи, начиная с простых. Можно вообще начать с линейных программ, потом ветвления, затем циклы, массивы, матрицы и т. д.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2012, 17:13     Поиск наибольшего общего делителя
Еще ссылки по теме:

C++ Нахождение наибольшего общего делителя
Рекурсивный алгоритм Евклида нахождения наибольшего общего делителя C++
C++ Нахождение наибольшего общего делителя - почему выводит неверный итог?

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

Или воспользуйтесь поиском по форуму:
bogdanSAU
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 19
10.10.2012, 17:13  [ТС]     Поиск наибольшего общего делителя #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# include <iostream>
using namespace std;
void main ()
{ int m,n;
setlocale(LC_ALL, "rus");
cout<<"введите число=";
cin>>m;
cout<<"введите число=";
cin>>n;
while (m>n)
{m=m-n;}
while (m<n)
{n=n-m;}
while (n>m)
{n=n-m;}
while (n<m)
{m=m-n;}
cout<<"NOD="<<n;
system ("pause");
}
Yandex
Объявления
10.10.2012, 17:13     Поиск наибольшего общего делителя
Ответ Создать тему
Опции темы

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