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

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

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

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

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

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

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

7
zss
Модератор
Эксперт С++
6928 / 6490 / 2182
Регистрация: 18.12.2011
Сообщений: 17,105
Завершенные тесты: 1
27.04.2014, 20:28 #2
Цитата Сообщение от dencil Посмотреть сообщение
while (a=b)
C++
1
while(a!=b)
Кстати, проверка на равенство - 2 знака равно!
1
dencil
10 / 10 / 12
Регистрация: 23.09.2013
Сообщений: 145
27.04.2014, 20:32  [ТС] #3
zss,
Цитата Сообщение от zss Посмотреть сообщение
Кстати, проверка на равенство - 2 знака равно!
А это вы к чему написали?
0
zss
Модератор
Эксперт С++
6928 / 6490 / 2182
Регистрация: 18.12.2011
Сообщений: 17,105
Завершенные тесты: 1
27.04.2014, 20:38 #4
Цитата Сообщение от dencil Посмотреть сообщение
А это вы к чему написали?
Вот к этому:
Цитата Сообщение от dencil Посмотреть сообщение
while (a=b)
0
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?
0
dencil
10 / 10 / 12
Регистрация: 23.09.2013
Сообщений: 145
27.04.2014, 21:01  [ТС] #6
Rioter, Я вас не понимаю. Я просто попросил помочь найти ошибку, а вы бросаетесь на меня вплоть до внешнего вида кода. А _tmain там изначально была, я ничего не менял.
0
Rioter
1 / 1 / 0
Регистрация: 27.04.2014
Сообщений: 19
27.04.2014, 21:05 #7
ошибка пока одна нашлась (while(a=b)), а остальное это так, общие советы. я сейчас скомпилировать не могу, попробуйте скомпилировать и отпишитесь о том что получилось, будем разбираться)
0
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;
}
Полностью рабочая.
0
27.04.2014, 21:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.04.2014, 21:08
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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