Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2010, 21:32   #1
Egorka1990
Новичок
Джуниор
 
Регистрация: 22.12.2010
Сообщений: 2
По умолчанию Нахождение НОД

нужно написать программу нахождения НОД трех чисел.
написал, вроде логично все, но не работает. помогите новичку)
(писал в Билдере)

#pragma hdrstop
#include "conio.h"
#include <iostream>
#include <math.h>
using namespace std;
#include <vcl.h>

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
int a, b, c, min1, min, nod;
cout<< "Enter a, b, c" <<endl;
cin>> a, b, c;
min1= a>b?b:a; //нахождение наименьшего из a,b,c,
min= min1>c?c:min1; //запись его в min
for (nod=2; nod<min; nod++)
if (a==0 || b==0 || c==0)
{
cout<< "nod = 0";
}
if (nod==min)
{
cout <<"net obshego kratnogo";
}
if (a%nod==0 || b%nod==0 || c%nod==0)
{
cout <<nod;
}
getch();


}
Egorka1990 вне форума Ответить с цитированием
Старый 22.12.2010, 21:51   #2
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Вообще надо алгоритм Эвклида юзать) Но если так хотите, то разберитесь со скобками. У Вас получается, что от 2 до минимума проверяется только то, равно ли одно из чисел 0. Надо же, если я правильно понял идею, проверять еще и последние 2 условия.
+ Надо сделать там выходы из цикла, а то Вы таким образом найдете не только НОД, но и НОД*2, НОД*3 и т.д., если они тоже подходят под "общий делитель".
LeBron вне форума Ответить с цитированием
Старый 22.12.2010, 21:57   #3
Egorka1990
Новичок
Джуниор
 
Регистрация: 22.12.2010
Сообщений: 2
По умолчанию

не могли бы поподробнее по поводу "...проверять еще и последние 2 условия.
+ Надо сделать там выходы из цикла, а то Вы таким образом найдете не только НОД, но и НОД*2, НОД*3 и т.д., если они тоже подходят под "общий делитель""
Egorka1990 вне форума Ответить с цитированием
Старый 22.12.2010, 22:03   #4
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Это значит что у вас после цикла выполняется 1 условин и всё
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 22.12.2010, 22:44   #5
KEA0301
Пользователь
 
Регистрация: 20.12.2010
Сообщений: 28
По умолчанию

У тебя nod==min никогда не станет true и ищешь не общее кратное, а наибольший общий делитель, а твой цикл вообще логически неверно составлен: он ищет следующий общий делитель после 1. Лучше использовать алгоритм Евклида, или цикл начать с min и до 1 и проверку на 0 нужно убрать, 0 делится на всё.

Последний раз редактировалось KEA0301; 22.12.2010 в 22:46.
KEA0301 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение НОД двух чисел awlol Помощь студентам 2 28.11.2010 22:52
Нахождение НОК и НОД на ассемблере Ханако Сейсин Помощь студентам 2 09.11.2010 17:25
Процедура-функция на нахождение НОД по теореме Евклида Blueyeska Помощь студентам 1 07.05.2010 21:16
матрица, массив, нахождение нод leraaa Помощь студентам 0 18.04.2010 23:07
Алгоритм Евклида.Нахождение НОД innaa639 Помощь студентам 11 24.11.2009 00:17