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

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

Войти
Регистрация
Восстановить пароль
 
dencil
10 / 10 / 12
Регистрация: 23.09.2013
Сообщений: 145
#1

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

27.04.2014, 20:25. Просмотров 239. Ответов 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
#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     Подправить код. НОД двух натуральных чисел
Посмотрите здесь:

Нод для двух натуральных чисел с циклом for - C++
#include&lt;iostream&gt; #include&lt;windows.h&gt; using namespace std; int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); ...

Вычисление НОД двух натуральных чисел (рекурсия) - C++
День добрый, помогите пожалуйста поправить данную прогу, надо бы избавиться от меток, короче говоря, сократить строки. Вот сама...

Вычислить НОД (наибольший общий делитель) двух натуральных чисел A и B - C++
Задача 4. Вычислить НОД (наибольший общий делитель) двух натуральных чисел A и B.

Используя функцию нахождения НОД двух натуральных чисел, сократить обычную дробь - C++
Используя функцию nod нахождения наибольшего общего делителя двух натуральных чисел, сократить данный обычный дробь m / n //возвращает...

Вычисление НОД ряда натуральных чисел - C++
Даны натуральные числа m, n1,...,nm (m&gt;=2). Вычислить НОД (n1,...,nm), воспользовавшись для этого соотношением...

Найти НОД четырех натуральных чисел - C++
Ввести в память машины одномерный целочисленный массив, размер произвольный (возможность выбора). Предусмотреть два варианта ввода: с...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6284 / 5887 / 1908
Регистрация: 18.12.2011
Сообщений: 15,112
Завершенные тесты: 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
Модератор
Эксперт С++
6284 / 5887 / 1908
Регистрация: 18.12.2011
Сообщений: 15,112
Завершенные тесты: 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     Подправить код. НОД двух натуральных чисел
Еще ссылки по теме:

Нод для 2-х заданных натуральных чисел с циклом while - C++
привет,всем)помогите,пожалуйста, с программой #include&lt;iostream&gt; #include&lt;windows.h&gt; using namespace std; int main() { ...

Вычисление нок и нод переменных натуральных чисел - C++
Здравствуйте. Искал подобную тему по форуму, но там все либо на 2 числа либо на несколько, но с фиксированным числом после компиляции....

Последовательность натуральных чисел, вычисление их НОД методом Евклида - C++
Уважаемые форумчане, прошу помощи в решении задачи: Составьте программу, которая позволяет организовать ввод последовательности...

Найти НОД (наибольший общий делитель) массива натуральных чисел - 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     Подправить код. НОД двух натуральных чисел
Ответ Создать тему
Опции темы

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