Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
1 / 1 / 0
Регистрация: 03.01.2017
Сообщений: 95

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

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

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

Ввести в память машины с клавиатуры четыре натуральных числа и найти их наибольший общий делитель. Ввод данных, манипуляции с данными, вывод данных произвести через отдельные пользовательские функции.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.02.2017, 22:04
Ответы с готовыми решениями:

Найти НОД для четырёх натуральных чисел
Помогите пожалуйста. Задача: Найти НОД для четырёх данных натуральных чисел. Числа должны вводится с клавиатуры. В С++. Заранее спасибо)

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

Найти и напечатать значение первых четырех совершенных натуральных чисел
Найти и напечатать значение первых четырех совершенных натуральных чисел. Подсказка: совершенным считается число, равное сумме всех своих...

26
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
18.02.2017, 22:13
Tatsiana245, Для двух чисел НОД сможете найти?
А дальше: НОД(a,b,c) = НОД(НОД(a,b),c) и так далее
0
1 / 1 / 0
Регистрация: 03.01.2017
Сообщений: 95
18.02.2017, 22:17  [ТС]
А как в одной программе предусмотреть ввод с клавиатуры и генерацией случайных чисел?
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
18.02.2017, 22:35
Цитата Сообщение от Tatsiana245 Посмотреть сообщение
А как в одной программе предусмотреть ввод с клавиатуры и генерацией случайных чисел?
Реализовать пользовательские функции. В одной реализовать ввод с клавиатуры, а в другой - генерацию случайных чисел.
0
1 / 1 / 0
Регистрация: 03.01.2017
Сообщений: 95
18.02.2017, 22:40  [ТС]
А как бы это выглядело в коде, ввод с клавиатуры по данной задаче? Если можно...
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
18.02.2017, 22:58
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
1 / 1 / 0
Регистрация: 03.01.2017
Сообщений: 95
18.02.2017, 23:15  [ТС]
Спасибо, большое. С этой директивой я еще не знакома #include <vector>, как тогда в этот код подставить вычисления наибольшего общего делителя? У меня не получается...
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
18.02.2017, 23:30
Цитата Сообщение от Tatsiana245 Посмотреть сообщение
я еще не знакома #include <vector>
Вот. И что бы я ни написал, я рискую получить в ответ "а мы такое ещё не проходили". То есть, я буду Вам предлагать решения, а Вы будете их раз за разом отвергать. Так не пойдёт.
Как же быть? А вот как: может нам начать с начала? Может сперва Вы скажете, какие инструменты допускается использовать при решении Вашей задачи? Это называется "сформулировать техзадание".
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
18.02.2017, 23:41
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
1 / 1 / 0
Регистрация: 03.01.2017
Сообщений: 95
18.02.2017, 23:42  [ТС]
Формулировка проблемы:Ввести в память машины с клавиатуры четыре натуральных числа и найти их наибольший общий делитель.
Список средств для решения задачи:
Ввод данных, манипуляции с данными, вывод данных произвести через отдельные пользовательские функции. Можно через указатели, динамически выделенную память (new,delete), шаблоны, функции. Реализовать на языке С++.

0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
18.02.2017, 23:46
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
1 / 1 / 0
Регистрация: 03.01.2017
Сообщений: 95
18.02.2017, 23:51  [ТС]
Очень здорово,все работает!!! Спасибо,большое. Только я запуталась, как найти наибольший общий делитель? Не подскажите по вашему коду?
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
18.02.2017, 23:53
Tatsiana245, добавьте функцию нахождения НОД. Напишите её самостоятельно. Хоть что-то Вы должны сделать сами. Не можете, так хоть поиском по форуму воспользуйтесь. Тема миллион раз поднималась уже.
0
18.02.2017, 23:57

Не по теме:

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

0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
19.02.2017, 00:01
Цитата Сообщение от 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
1 / 1 / 0
Регистрация: 03.01.2017
Сообщений: 95
19.02.2017, 00:03  [ТС]
Ок, сейчас попробую, спасибо!!!!
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
19.02.2017, 00:07
Tatsiana245, возможно, Вам помешает константность переденного в функцию массива (а если быть точным - указателя на первый элемент массива). Если да, измените первый аргумент в функции find_greatest_common_divisor, убрав ключевое слово const:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// вместо такого варианта:
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 find_greatest_common_divisor( int * arr, const unsigned int arr_size )
{
    int greatest_common_divisor = 0;
    
    // TODO: implement this function
    
    return greatest_common_divisor;
}
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
19.02.2017, 00:12
Всё, я пошёл спать. Сил больше моих нет. Клюю носом. Рискую сломать или нос или клавиатуру. Или и то, и другое. Всё завтра
0
1 / 1 / 0
Регистрация: 03.01.2017
Сообщений: 95
19.02.2017, 13:18  [ТС]
Ок, спасибо Вам, огромное, я все еще разбираюсь...

Добавлено через 13 часов 1 минуту
Для двух чисел я нашла Нод , а вот для четырех, что - то не получается, помогите, кто может.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
19.02.2017, 13:22
Цитата Сообщение от Tatsiana245 Посмотреть сообщение
Для двух чисел я нашла Нод
А для трех?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.02.2017, 13:22
Помогаю со студенческими работами здесь

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

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

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

Подправить код. НОД двух натуральных чисел
#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 числа либо на несколько, но с фиксированным числом после компиляции....


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru