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

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

Войти
Регистрация
Восстановить пароль
 
 
Tatsiana245
1 / 1 / 0
Регистрация: 03.01.2017
Сообщений: 95
#1

Найти НОД четырех натуральных чисел - C++

18.02.2017, 22:04. Просмотров 447. Ответов 26
Метки нет (Все метки)

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

Ввести в память машины с клавиатуры четыре натуральных числа и найти их наибольший общий делитель. Ввод данных, манипуляции с данными, вывод данных произвести через отдельные пользовательские функции.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2017, 22:04
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти НОД четырех натуральных чисел (C++):

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

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

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

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

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

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

26
Байт
Эксперт C
17712 / 11733 / 1870
Регистрация: 24.12.2010
Сообщений: 23,523
18.02.2017, 22:13 #2
Tatsiana245, Для двух чисел НОД сможете найти?
А дальше: НОД(a,b,c) = НОД(НОД(a,b),c) и так далее
0
Tatsiana245
1 / 1 / 0
Регистрация: 03.01.2017
Сообщений: 95
18.02.2017, 22:17  [ТС] #3
А как в одной программе предусмотреть ввод с клавиатуры и генерацией случайных чисел?
0
gru74ik
Модератор
Эксперт CЭксперт С++
4360 / 1936 / 210
Регистрация: 20.02.2013
Сообщений: 5,138
Записей в блоге: 22
18.02.2017, 22:35 #4
Цитата Сообщение от Tatsiana245 Посмотреть сообщение
А как в одной программе предусмотреть ввод с клавиатуры и генерацией случайных чисел?
Реализовать пользовательские функции. В одной реализовать ввод с клавиатуры, а в другой - генерацию случайных чисел.
0
Tatsiana245
1 / 1 / 0
Регистрация: 03.01.2017
Сообщений: 95
18.02.2017, 22:40  [ТС] #5
А как бы это выглядело в коде, ввод с клавиатуры по данной задаче? Если можно...
0
gru74ik
Модератор
Эксперт CЭксперт С++
4360 / 1936 / 210
Регистрация: 20.02.2013
Сообщений: 5,138
Записей в блоге: 22
18.02.2017, 22:58 #6
Tatsiana245, сейчас изображу.

Добавлено через 11 минут
Tatsiana245, вот так, например:
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
#include <iostream>
#include <vector>
 
unsigned int get_arr_size_from_user()
{
    std::cout << "Enter your array size: ";
    unsigned int arr_size;
    std::cin >> arr_size;
    return arr_size;
}
 
template <typename T>
void fill_by_user( T & arr )
{
    for ( auto & elem : arr )
    {
        std::cout << "Enter a value: ";
        std::cin >> elem;
    }
}
 
template <typename T1, typename T2>
void show( const T1 & message, const T2 & arr )
{
    std::cout << message;
    for ( const auto & elem : arr )
        std::cout << elem << " ";
    std::cout << "\n";
}
 
int main()
{
    std::vector<int> ivec( get_arr_size_from_user() );
    fill_by_user( ivec );
    show( "\nThis is your array: ", ivec );
}
1
Tatsiana245
1 / 1 / 0
Регистрация: 03.01.2017
Сообщений: 95
18.02.2017, 23:15  [ТС] #7
Спасибо, большое. С этой директивой я еще не знакома #include <vector>, как тогда в этот код подставить вычисления наибольшего общего делителя? У меня не получается...
0
gru74ik
Модератор
Эксперт CЭксперт С++
4360 / 1936 / 210
Регистрация: 20.02.2013
Сообщений: 5,138
Записей в блоге: 22
18.02.2017, 23:30 #8
Цитата Сообщение от Tatsiana245 Посмотреть сообщение
я еще не знакома #include <vector>
Вот. И что бы я ни написал, я рискую получить в ответ "а мы такое ещё не проходили". То есть, я буду Вам предлагать решения, а Вы будете их раз за разом отвергать. Так не пойдёт.
Как же быть? А вот как: может нам начать с начала? Может сперва Вы скажете, какие инструменты допускается использовать при решении Вашей задачи? Это называется "сформулировать техзадание".
1
gru74ik
Модератор
Эксперт CЭксперт С++
4360 / 1936 / 210
Регистрация: 20.02.2013
Сообщений: 5,138
Записей в блоге: 22
18.02.2017, 23:41 #9
Tatsiana245, вот так пойдёт?
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
#include <iostream>
 
unsigned int get_arr_size_from_user()
{
    std::cout << "Enter your array size: ";
    unsigned int arr_size;
    std::cin >> arr_size;
    return arr_size;
}
 
void fill_by_user( int * arr, unsigned int arr_size )
{
    for ( unsigned int i = 0; i < arr_size; ++i )
    {
        std::cout << "Enter a value: ";
        std::cin >> arr[i];
    }
}
 
void show( const char * message, int * arr, unsigned int arr_size )
{
    std::cout << message;
    for ( unsigned int i = 0; i < arr_size; ++i )
        std::cout << arr[i] << " ";
    std::cout << "\n";
}
 
int main()
{
    unsigned int arr_size = get_arr_size_from_user();
 
    int * arr = new int[arr_size];
    fill_by_user( arr, arr_size );
    show( "\nThis is your array: ", arr, arr_size );
    delete [] arr;
}
0
Tatsiana245
1 / 1 / 0
Регистрация: 03.01.2017
Сообщений: 95
18.02.2017, 23:42  [ТС] #10
Формулировка проблемы:Ввести в память машины с клавиатуры четыре натуральных числа и найти их наибольший общий делитель.
Список средств для решения задачи:
Ввод данных, манипуляции с данными, вывод данных произвести через отдельные пользовательские функции. Можно через указатели, динамически выделенную память (new,delete), шаблоны, функции. Реализовать на языке С++.

0
gru74ik
Модератор
Эксперт CЭксперт С++
4360 / 1936 / 210
Регистрация: 20.02.2013
Сообщений: 5,138
Записей в блоге: 22
18.02.2017, 23:46 #11
Tatsiana245, хотя вот так чуть-чуть покрасивше будет:
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
#include <iostream>
 
unsigned int get_number_from_user( const char * message )
{
    std::cout << message;
    unsigned int arr_size;
    std::cin >> arr_size;
    return arr_size;
}
 
void fill_by_user( int * arr, const unsigned int arr_size )
{
    for ( unsigned int i = 0; i < arr_size; ++i )
    {
        std::cout << "Enter a value of " << i + 1 << " element: ";
        std::cin >> arr[i];
    }
}
 
void show( const char * message, const int * const arr, const unsigned int arr_size )
{
    std::cout << message;
    for ( unsigned int i = 0; i < arr_size; ++i )
        std::cout << arr[i] << " ";
    std::cout << "\n";
}
 
int main()
{
    unsigned int arr_size = get_number_from_user( "Enter your array size: " );
 
    int * arr = new int[arr_size];
    fill_by_user( arr, arr_size );
    show( "\nThis is your array: ", arr, arr_size );
    delete [] arr;
}
Добавлено через 2 минуты
Tatsiana245, сойдёт? Или выделение и освобождение памяти под массив тоже в пользовательских функциях надо сделать?
0
Tatsiana245
1 / 1 / 0
Регистрация: 03.01.2017
Сообщений: 95
18.02.2017, 23:51  [ТС] #12
Очень здорово,все работает!!! Спасибо,большое. Только я запуталась, как найти наибольший общий делитель? Не подскажите по вашему коду?
0
gru74ik
Модератор
Эксперт CЭксперт С++
4360 / 1936 / 210
Регистрация: 20.02.2013
Сообщений: 5,138
Записей в блоге: 22
18.02.2017, 23:53 #13
Tatsiana245, добавьте функцию нахождения НОД. Напишите её самостоятельно. Хоть что-то Вы должны сделать сами. Не можете, так хоть поиском по форуму воспользуйтесь. Тема миллион раз поднималась уже.
0
Байт
18.02.2017, 23:57
  #14

Не по теме:

Цитата Сообщение от gru74ik Посмотреть сообщение
Tatsiana245, добавьте функцию нахождения НОД. Напишите её самостоятельно. Хоть что-то Вы должны сделать сами. Не можете, так хоть поиском по форуму воспользуйтесь. Тема миллион раз поднималась уже.
А я то грешным делом подумал, что ваши терпение и доброта также безграничны, как ваш интеллект...

0
gru74ik
Модератор
Эксперт CЭксперт С++
4360 / 1936 / 210
Регистрация: 20.02.2013
Сообщений: 5,138
Записей в блоге: 22
19.02.2017, 00:01 #15
Цитата Сообщение от gru74ik Посмотреть сообщение
добавьте функцию нахождения НОД. Напишите её самостоятельно. Хоть что-то Вы должны сделать сами
Tatsiana245, вот вместо комментария // TODO в 37-й строке напишите код Вашей функции нахождения НОД:
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
43
44
45
46
47
48
49
50
51
#include <iostream>
 
unsigned int get_number_from_user( const char * message )
{
    std::cout << message;
    unsigned int arr_size;
    std::cin >> arr_size;
    return arr_size;
}
 
void fill_by_user( int * arr, const unsigned int arr_size )
{
    for ( unsigned int i = 0; i < arr_size; ++i )
    {
        std::cout << "Enter a value of " << i + 1 << " element: ";
        std::cin >> arr[i];
    }
}
 
void show( const char * message, const int * const arr, const unsigned int arr_size )
{
    std::cout << message;
    for ( unsigned int i = 0; i < arr_size; ++i )
        std::cout << arr[i] << " ";
    std::cout << "\n";
}
 
void show( const char * message, const int number )
{
    std::cout << message << number;
}
 
int find_greatest_common_divisor( const int * const arr, const unsigned int arr_size )
{
    int greatest_common_divisor = 0;
    
    // TODO: implement this function
    
    return greatest_common_divisor;
}
 
int main()
{
    unsigned int arr_size = get_number_from_user( "Enter your array size: " );
 
    int * arr = new int[arr_size];
    fill_by_user( arr, arr_size );
    show( "\nThis is your array: ", arr, arr_size );
    show( "\nGreatest common divisor: ", find_greatest_common_divisor( arr, arr_size ) );
    delete [] arr;
}
0
19.02.2017, 00:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2017, 00:01
Привет! Вот еще темы с ответами:

Подправить код. НОД двух натуральных чисел - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int _tmain(int argc, _TCHAR* argv) {setlocale(LC_ALL,&quot;Russian&quot;); ...

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

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

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


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

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

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