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

Подправить код. НОД двух натуральных чисел - C++

Восстановить пароль Регистрация
 
dencil
10 / 10 / 12
Регистрация: 23.09.2013
Сообщений: 145
27.04.2014, 20:25     Подправить код. НОД двух натуральных чисел #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{setlocale(LC_ALL,"Russian");
int a,b;
cout<<"Введите два числа через пробел\n";
do 
{cin>>a>>b;}
while (a<0 || b<0);
if (a==b)
{cout<<a<<"\n";}
else
{
while (a=b)
{if (a>b)
{a=a-b;}
else
{b=b-a;}}
cout<<a<<"\n";}
    return 0;
}
Помогите понят в чем суть ошибки? Вроде все по алгоритму, если что это НОД двух натуральных чисел.
P.S. поиском пользовался, но я хотел бы понять в чем именно тут ошибка.
Миниатюры
Подправить код. НОД двух натуральных чисел  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2014, 20:25     Подправить код. НОД двух натуральных чисел
Посмотрите здесь:

C++ Написать функции рекурсивной и не рекурсивной реализации алгоритма Евклида нахождения наибольшего общего делителя (НОД) двух натуральных чисел
C++ Вычисление НОД двух натуральных чисел (рекурсия)
C++ Найти наибольший общий делитель (НОД) двух введенных натуральных чисел, используя алгоритм Евклида
Вычисление нок и нод переменных натуральных чисел C++
C++ Вычислить НОД (наибольший общий делитель) двух натуральных чисел A и B
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5953 / 5558 / 1787
Регистрация: 18.12.2011
Сообщений: 14,204
Завершенные тесты: 1
27.04.2014, 20:28     Подправить код. НОД двух натуральных чисел #2
Цитата Сообщение от dencil Посмотреть сообщение
while (a=b)
C++
1
while(a!=b)
Кстати, проверка на равенство - 2 знака равно!
dencil
10 / 10 / 12
Регистрация: 23.09.2013
Сообщений: 145
27.04.2014, 20:32  [ТС]     Подправить код. НОД двух натуральных чисел #3
zss,
Цитата Сообщение от zss Посмотреть сообщение
Кстати, проверка на равенство - 2 знака равно!
А это вы к чему написали?
zss
Модератор
Эксперт С++
 Аватар для zss
5953 / 5558 / 1787
Регистрация: 18.12.2011
Сообщений: 14,204
Завершенные тесты: 1
27.04.2014, 20:38     Подправить код. НОД двух натуральных чисел #4
Цитата Сообщение от dencil Посмотреть сообщение
А это вы к чему написали?
Вот к этому:
Цитата Сообщение от dencil Посмотреть сообщение
while (a=b)
Rioter
1 / 1 / 0
Регистрация: 27.04.2014
Сообщений: 19
27.04.2014, 20:57     Подправить код. НОД двух натуральных чисел #5
если ты пишешь while(a=b) то происходит следующее - а присваивается значение b, и если значение не равно нулю(то есть true) цикл выполняется.
надо писать while(a==b)

Добавлено через 4 минуты
Цитата Сообщение от dencil Посмотреть сообщение
[CPP]#include "stdafx.h"
#include <iostream>
using namespace std;

do
{cin>>a>>b;}
while (a<0 || b<0);

.
по моему здесь лучше проверять верны ли a и b предварительно присвоив нули

Добавлено через 7 минут
и пишите, пожалуйста, читаемый код как-то так:

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 "stdafx.h"
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[]) {
 
   setlocale(LC_ALL,"Russian");
   int a,b;
   cout<<"Введите два числа через пробел\n";
   do {
      cin>>a>>b;
   } while (a<0 || b<0);
   if (a!=b) {
   cout<<a<<"\n";
   } else {
      while (a==b) {
         if (a>b) {
            a=a-b;
         } else {
            b=b-a;
         }
      }
      cout<<a<<"\n";}
      return 0;
}
Добавлено через 5 минут
и почему функция _tmain?
dencil
10 / 10 / 12
Регистрация: 23.09.2013
Сообщений: 145
27.04.2014, 21:01  [ТС]     Подправить код. НОД двух натуральных чисел #6
Rioter, Я вас не понимаю. Я просто попросил помочь найти ошибку, а вы бросаетесь на меня вплоть до внешнего вида кода. А _tmain там изначально была, я ничего не менял.
Rioter
1 / 1 / 0
Регистрация: 27.04.2014
Сообщений: 19
27.04.2014, 21:05     Подправить код. НОД двух натуральных чисел #7
ошибка пока одна нашлась (while(a=b)), а остальное это так, общие советы. я сейчас скомпилировать не могу, попробуйте скомпилировать и отпишитесь о том что получилось, будем разбираться)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.04.2014, 21:08     Подправить код. НОД двух натуральных чисел
Еще ссылки по теме:

Нод для двух натуральных чисел с циклом for C++
Вычисление НОД ряда натуральных чисел C++
Нод для 2-х заданных натуральных чисел с циклом while C++

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

Или воспользуйтесь поиском по форуму:
dencil
10 / 10 / 12
Регистрация: 23.09.2013
Сообщений: 145
27.04.2014, 21:08  [ТС]     Подправить код. НОД двух натуральных чисел #8
Rioter,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{setlocale(LC_ALL,"Russian");
int a,b;
cout<<"Введите два числа через пробел\n";
do 
{cin>>a>>b;}
while (a<0 || b<0);
if (a==b)
{cout<<a<<"\n";}
else
{
while (a!=b)
{if (a>b)
{a=a-b;}
else
{b=b-a;}}
cout<<a<<"\n";}
    return 0;
}
Полностью рабочая.
Yandex
Объявления
27.04.2014, 21:08     Подправить код. НОД двух натуральных чисел
Ответ Создать тему
Опции темы

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