Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

06.10.2012, 13:08. Просмотров 1016. Ответов 11
Метки нет (Все метки)

Всем привет. Мне нужна ваша помощь. Не могу разобраться даже в элементарных циклических алгоритмах. Задавали д.з возведение в степень число, так я, над ним умирал. И все равно не смог до конца написать сам. Вот такой вот элементарный был:
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 ничего не объясняли.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2012, 13:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск наибольшего общего делителя (C++):

Нахождение наибольшего общего делителя и наименьшего общего кратного двух натуральных - C++
Составить программу для нахождения наибольшего общего делителя и наименьшего общего кратного двух натуральных чисел (НОК(А,В)= А*В/ НОД...

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

Нахождение наибольшего общего делителя - C++
Borland C++ Найти наибольший общий делитель двух натуральных чисел a и b.

Нахождение наибольшего общего делителя для 6-и чисел - C++
привет! у меня есть задача на нахождение наибольшего общего делителя для 6-и чисел ... нашел было алгоритм .. #include...

Написать рекурсивную функцию вычисления Наибольшего общего делителя - C++
Написать рекурсивную функцию вычисления Наибольшего общего делителя (НОД), используя алгоритм Эвклида (NOD (a, b) = NOD (b, a%b))

Нахождение наибольшего общего делителя двух натуральных чисел - C++
1)Используя функцию NOD нахождения наибольшего общего делителя двух натуральных чисел, сократить данную обычную дробь M / N. / /...

11
user_p01
19 / 19 / 2
Регистрация: 03.11.2011
Сообщений: 80
06.10.2012, 13:22 #2
Т. е. нужно найти НОД двух чисел?
1
David Sylva
1291 / 953 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
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;
}
1
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;
}
1
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?
0
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.
% - это операция остатка от целочисленного деления
1
bogdanSAU
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 19
06.10.2012, 13:46  [ТС] #7
Спасибо user_p01, а можно a%=b как то по другому записать? Или только так

Добавлено через 54 секунды
return 0 - кстати, а что это за команда?
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
1
bogdanSAU
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 19
06.10.2012, 13:52  [ТС] #9
Цитата Сообщение от bogdanSAU Посмотреть сообщение
user_p01
спасибо тебе большое, но сам бы я до такого не додумался, не знаю почему. Чего мне не хватает. С матем на ты, а с алгоритмами вообще никак. Что ты мне можешь посоветовать?
0
David Sylva
1291 / 953 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
06.10.2012, 13:53 #10
потому что cout и сin, объявлены в пространстве имён std. Хочешь пиши в начале using namespace std, хочешь так как в программе это без разницы.
1
user_p01
19 / 19 / 2
Регистрация: 03.11.2011
Сообщений: 80
06.10.2012, 13:56 #11
Цитата Сообщение от bogdanSAU Посмотреть сообщение
Что ты мне можешь посоветовать?
Тренироваться, решать задачи, начиная с простых. Можно вообще начать с линейных программ, потом ветвления, затем циклы, массивы, матрицы и т. д.
1
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");
}
0
10.10.2012, 17:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2012, 17:13
Привет! Вот еще темы с ответами:

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

Нахождение наибольшего общего делителя - почему выводит неверный итог? - C++
Всем привет, что-то не могу понять:( Очень прошу помочь! int a, b; cin &gt;&gt; a &gt;&gt; b; while (b != 0) { a %= b; swap(a, b); } ...

Написать подпрограмму нахождения наибольшего общего делителя двух чисел - C++
Написать подпрограмму нахождения наибольшего общего делителя двух чисел N и M по реккурентному соотношению: (N=23345 M=9135 =&gt;...

Написать алгоритм нахождения наибольшего общего делителя трех чисел - C++
Написать алгоритм нахождения наибольшего общего делителя трех чисел C++ помогите пожалуйста, желательно с объяснением


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

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

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