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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 144, средняя оценка - 4.70
AgentumA
2 / 1 / 0
Регистрация: 05.05.2010
Сообщений: 75
11.05.2010, 18:45     Наименьшее общее кратное #1
Не особо понятная мне задача попалась...поясните и помогите:
используя функцию нахождения наименьшего общего кратного двух чисел,найти наименьшее общее кратное четырех чисел.
то есть мне надо написать функцию для двух чисел и применить для четырех???или же есть стандартная функция для НОК двух чисел???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
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
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
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
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
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
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
11.05.2010, 19:13     Наименьшее общее кратное #11
AgentumA, мои извинения, в моем коде недочет, постараюсь исправить.
AgentumA
2 / 1 / 0
Регистрация: 05.05.2010
Сообщений: 75
11.05.2010, 19:26  [ТС]     Наименьшее общее кратное #12
ага...пробовал щас...
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
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
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
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
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
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
 Аватар для 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     Наименьшее общее кратное
Еще ссылки по теме:

Найти наименьшее общее кратное используя рекурсию C++
C++ Найти наибольший общий делитель и наименьшее общее кратное
Вычислить наименьшее общее кратное двух натуральных чисел C++

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

Или воспользуйтесь поиском по форуму:
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     Наименьшее общее кратное
Ответ Создать тему
Опции темы

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