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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 144, средняя оценка - 4.70
AgentumA
2 / 1 / 0
Регистрация: 05.05.2010
Сообщений: 75
#1

Наименьшее общее кратное - C++

11.05.2010, 18:45. Просмотров 19878. Ответов 24
Метки нет (Все метки)

Не особо понятная мне задача попалась...поясните и помогите:
используя функцию нахождения наименьшего общего кратного двух чисел,найти наименьшее общее кратное четырех чисел.
то есть мне надо написать функцию для двух чисел и применить для четырех???или же есть стандартная функция для НОК двух чисел???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2010, 18:45     Наименьшее общее кратное
Посмотрите здесь:

Наименьшее общее кратное - C++
есть одномерный массив, содержащий целые числы. нужно найти наименьшее общее кратное, которое бы удовлетворяло всем эти числам. не знаю как...

Наименьшее общее кратное - C++
Определить наименьшее общее кратное для двух чисел A и B. Числа A и B вводятся пользователем с клавиатуры. Для тех, кто здесь сидят,...

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

Найти наименьшее общее кратное трех чисел - C++
заданы 3 числа найти их наименьшее общее кратное Теги выделения кода предназначены для выделения кода, а не задания. Если Вам...

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

Найти наименьшее общее кратное используя рекурсию - C++
Дан массив.Найти наименьшее общее кратное используя рекурсию

Введите 2 натуральные числа и найдите их наименьшее общее кратное. - C++
Помогите написать, нужно сдать 1. Введите целое число, означающее календарный год и выведите год и количество дней в этом году. ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1474 / 841 / 74
Регистрация: 26.03.2010
Сообщений: 2,889
11.05.2010, 18:56     Наименьшее общее кратное #2
Так?)
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 <iostream>
 
int search_NOK(int, int);
 
int main()
{
    int first, second, third, fourth;
    std::cout << "Input four numbers: ";
    std::cin >> first >> second >> third >> fourth;
 
    std::cout << "NOK: " << search_NOK (search_NOK(first,second) , search_NOK(third, fourth));
    std::cout << std::endl;
    return 0;
}
 
int search_NOK (int x, int y)
{
    int count=(x<y) ? x : y;
 
    for (int i=2; i<=count; i++)
        if (!(x%i) && !(y%i)) return i;
    else return 1;
}
NikITKA123
19 / 18 / 1
Регистрация: 28.04.2010
Сообщений: 86
11.05.2010, 19:00     Наименьшее общее кратное #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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <math.h>
#include "func.h"
using namespace std;
 
void main()
{
    int a = 0, b = 0, c = 0, d = 0;
    setlocale(0, "Rus");
    cout << "Введите числа для подсчёта НОК:\t";
    cin >> a >> b >> c >> d;
    cout << "НОК чисел = " << nok(a, b, c, d);
}
 
int nok(int a, int b) 
{
    int max = b;
    for(int i = max; i > 0; i++){
    
        if((i % a == 0) && (i % b == 0)){
            return i;
        }
    }
}
int nok(int a, int b, int c)
{ 
    int max = c;
    for(int i = max; i > 0; i++){
        if((i % a == 0) && (i % b == 0) && (i % c == 0)){
            return i;
        }
    }
}
int nok(int a, int b, int c, int d)
{
    int max = d;
    for(int i = max; i > 0; i++){
        if((i % a == 0) && (i % b == 0) && (i % c == 0) && (i % d == 0)){
            return i;
        }
    }
}
Добавлено через 1 минуту
далее создаёшь новый header - файл, называешь его func.h, в который помещаешь след код:
int nok(int a, int b);
int nok(int a, int b, int c);
int nok(int a, int b, int c, int d);
neske
1474 / 841 / 74
Регистрация: 26.03.2010
Сообщений: 2,889
11.05.2010, 19:00     Наименьшее общее кратное #4
NikITKA123, нужно использовать функцию для поиска НОК только для двух чисел.
NikITKA123
19 / 18 / 1
Регистрация: 28.04.2010
Сообщений: 86
11.05.2010, 19:02     Наименьшее общее кратное #5
Цитата Сообщение от AgentumA Посмотреть сообщение
используя функцию нахождения наименьшего общего кратного двух чисел,найти наименьшее общее кратное четырех чисел
если я всё понял правильно, то ты должен создать функцию для находа НОК двух чисел, а потом перегрузить её для четырёх. Выше я перегрузил сначала для 3, а потом и для 4
neske
1474 / 841 / 74
Регистрация: 26.03.2010
Сообщений: 2,889
11.05.2010, 19:03     Наименьшее общее кратное #6
В задаче конкретно сказано, что используем функцию только для поиска НОК 2-ух чисел )
NikITKA123
19 / 18 / 1
Регистрация: 28.04.2010
Сообщений: 86
11.05.2010, 19:04     Наименьшее общее кратное #7
по другому не знаю
AgentumA
2 / 1 / 0
Регистрация: 05.05.2010
Сообщений: 75
11.05.2010, 19:06  [ТС]     Наименьшее общее кратное #8
neske, поясни пожалуйста свой код...что такое std:: и
эту часть кода пжл:
C++
1
2
3
4
5
6
7
int search_NOK (int x, int y)
{
    int count=(x<y) ? x : y;
 
    for (int i=2; i<=count; i++)
        if (!(x%i) && !(y%i)) return i;
    else return 1;
в функциях хз я...
NikITKA123
19 / 18 / 1
Регистрация: 28.04.2010
Сообщений: 86
11.05.2010, 19:09     Наименьшее общее кратное #9
Цитата Сообщение от AgentumA Посмотреть сообщение
neske, поясни пожалуйста свой код...что такое std:: и
эту часть кода пжл:
C++
1
2
3
4
5
6
7
int search_NOK (int x, int y)
{
    int count=(x<y) ? x : y;
 
    for (int i=2; i<=count; i++)
        if (!(x%i) && !(y%i)) return i;
    else return 1;
в функциях хз я...
если вначале using namespace std; написал, то std:: нигде писать не надо
AgentumA
2 / 1 / 0
Регистрация: 05.05.2010
Сообщений: 75
11.05.2010, 19:10  [ТС]     Наименьшее общее кратное #10
Цитата Сообщение от NikITKA123 Посмотреть сообщение
если вначале using namespace std; написал, то std:: нигде писать не надо
ааа.вот как...
neske
1474 / 841 / 74
Регистрация: 26.03.2010
Сообщений: 2,889
11.05.2010, 19:13     Наименьшее общее кратное #11
AgentumA, мои извинения, в моем коде недочет, постараюсь исправить.
AgentumA
2 / 1 / 0
Регистрация: 05.05.2010
Сообщений: 75
11.05.2010, 19:26  [ТС]     Наименьшее общее кратное #12
ага...пробовал щас...
neske
1474 / 841 / 74
Регистрация: 26.03.2010
Сообщений: 2,889
11.05.2010, 19:29     Наименьшее общее кратное #13
Все, исправил =)
+ добавил комментарии.

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
#include <iostream>
 
int search_NOK(int, int);
 
int main()
{
    int first, second, third, fourth; 
    std::cout << "Input four numbers: ";
    std::cin >> first >> second >> third >> fourth; // вводим четыре числа.
 
    std::cout << "NOK: " << search_NOK (search_NOK(first,second) , search_NOK(third, fourth));
    std::cout << std::endl;
    return 0;
}
 
int search_NOK (int x, int y) // функция получает два числа типа int.
{
    int count=(x<y) ? x : y; // если условие правда (x<y), выполняется выражение 1- count=x,
                                                        // иначе выполняется выражение два 2- count=y;
 
    for (int i=2; i<=count; i++) // ищем НОК от 2 до наименьшего из чисел.
        if (!(x%i) && !(y%i)) return i; // это эквивалентно: if ((x%i==0) && (y%i==0)) 
    return 1; // если мы такого числа не нашли, возвращаем единицу.
}
Думаю будет ясно
AgentumA
2 / 1 / 0
Регистрация: 05.05.2010
Сообщений: 75
11.05.2010, 19:37  [ТС]     Наименьшее общее кратное #14
neske, спасибо большое,но задам еще глупые вопросы:
компилю я вот это и запускаю:
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
26
27
28
29
#include "stdafx.h"
#include <iostream>
#include "conio.h"
 
using namespace std;
 
int search_NOK(int, int);
 
int main()
{
    int first, second, third, fourth; 
    cout << "Input four numbers: ";
    cin >> first >> second >> third >> fourth; // вводим четыре числа.
 
    cout << "NOK: " << search_NOK (search_NOK(first,second) , search_NOK(third, fourth));
    cout << endl;
    return 0;
    getch();
}
 
int search_NOK (int x, int y) // функция получает два числа типа int.
{
    int count=(x<y) ? x : y; // если условие правда (x<y), выполняется выражение 1- count=x,
                                                        // иначе выполняется выражение два 2- count=y;
 
    for (int i=2; i<=count; i++) // ищем НОК от 2 до наименьшего из чисел.
        if (!(x%i) && !(y%i)) return i; // этот эквивалентно: if ((x%i==0) && (y%i==0)) 
    return 1; // если мы такого числа не нашли, возвращаем единицу.
}
но почему то значение НОК все равно не успевает показаться,хотя getch() я написал...
neske
1474 / 841 / 74
Регистрация: 26.03.2010
Сообщений: 2,889
11.05.2010, 19:41     Наименьшее общее кратное #15
C++
1
2
getch();
return 0;
А не наоборот)
AgentumA
2 / 1 / 0
Регистрация: 05.05.2010
Сообщений: 75
11.05.2010, 20:02  [ТС]     Наименьшее общее кратное #16
Цитата Сообщение от neske Посмотреть сообщение
C++
1
2
getch();
return 0;
А не наоборот)
это точно...только все время 2 выдает...и эт...нок для 2 и 4 это вроде 8...а нод-это 2...
neske
1474 / 841 / 74
Регистрация: 26.03.2010
Сообщений: 2,889
11.05.2010, 20:14     Наименьшее общее кратное #17
ой )
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
int search_NOK(int, int);
 
int main()
{
    int first, second, third, fourth;
    std::cout << "Input four numbers: ";
    std::cin >> first >> second >> third >> fourth; 
 
    std::cout << "NOK: " << search_NOK (search_NOK(first,second) , search_NOK(third, fourth));
    std::cout << std::endl;
    return 0;
}
 
int search_NOK (int x, int y) 
{
    int count=(x>y) ? x : y; 
                                                      
    for (int i=count; ; i++) 
        if (!(i%x) && !(i%y)) return i; 
}
AgentumA
2 / 1 / 0
Регистрация: 05.05.2010
Сообщений: 75
11.05.2010, 22:08  [ТС]     Наименьшее общее кратное #18
вот оно!!!!респект!!!
SeryZone
56 / 28 / 5
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
02.04.2012, 23:31     Наименьшее общее кратное #19
Я немного изменил прогу. Короче, вводим кол-во элементов массива (не больше 20) а потом сами элементы. элементы не превышают 100.
Как сделать, чтобы прога работала быстрее???
C++ (Qt)
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>
 
long NOK(int, int);
 
int main()
{
    short n,j;
    short a[20];
    std::cin >> n;
    if (n>1 && n<21)
    {
        for (j=0;j<n;j++) std::cin >> a[j];
        long o=NOK(a[0],a[1]);
        for (j=2;j<n;j++) o=NOK(o,a[j]);
        std::cout << o << std::endl;
    }
}
 
long NOK (int x, int y) 
{
    int count=(x>y) ? x : y; 
                                                      
    for (long i=count; ; i++) 
        if (!(i%x) && !(i%y)) return i; 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2012, 23:46     Наименьшее общее кратное
Еще ссылки по теме:

Даны натуральные числа X и Y. Вычислить их наименьшее общее кратное. - C++
Даны натуральные числа X и Y. Вычислить их наименьшее общее кратное.

Найти наименьшее общее кратное (НОК) n натуральных чисел - C++
Есть задача: НОК Найти наименьшее общее кратное (НОК) n натуральных чисел. Технические условия Вход В первой...

Определить наименьшее общее кратное двух натуральных чисел - C++
вот мой код. выдаёт одну ошибку. помогите пожалуйста найти. #include&lt;iostream.h&gt; main(int nok) { int a, b, nod, nok; ...

Найти наименьшее общее кратное (НОК) натуральных чисел С++ - C++
Вот мой исходник : #include &lt;iostream.h&gt; int NSD (int a, int b) { while (a!=0 &amp;&amp; b!=0) { if (a&gt;b) { ...

Найти наибольший общий делитель и наименьшее общее кратное - C++
Вообщем нужно найти Наибольший общий делитель и наименьшее общее кратное. При запуске пишет &quot; 6.2005\main.cpp||In function 'void pr(int,...


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

Или воспользуйтесь поиском по форуму:
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
02.04.2012, 23:46     Наименьшее общее кратное #20
мне кажется, что надо перебор делать
C++
1
2
3
4
int max=(x>y) ? x : y;
int min=(x<=y) ? y : x;
for (int i=1;;i++)
 if ((i*max)%min==0) return i*max;
Yandex
Объявления
02.04.2012, 23:46     Наименьшее общее кратное
Ответ Создать тему
Опции темы

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