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

НОД для массива

05.11.2011, 17:27. Показов 6226. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите написать функцию для нахождения НОДа для массива.
нужна просто функция
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.11.2011, 17:27
Ответы с готовыми решениями:

Нод для массива чисел
Ввести с клавиатуры последовательность чисел (как положительных, так и отрицательных, как целых, так и вещественных). Создать свои...

Найти НОД для всех элементов массива
Подскажите как найти наибольший общий делитель всех элементов массива?

Для каждой пары чисел из массива определить НОД
Пока что начал учить в университете с++.Моё слабое место это массивы.Нужно написать программу,но пока я читаю книжки по с++,может кто знает...

8
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
05.11.2011, 18:48
https://www.cyberforum.ru/showthread.php?p=2067150

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
long Nod(long a, long b)
{
    while (a && b)
        if (a >= b)
           a %= b;
        else
           b %= a;
    return a | b;
}
 
long NodArray(long *a, int n)
{
   long i, nod = 0;
   for (i = 0; i < n; i++)
      nod = Nod(a[i], nod);
   return nod;
}
1
0 / 0 / 1
Регистрация: 23.10.2011
Сообщений: 26
06.11.2011, 19:27  [ТС]
Думал осилю сам дописать остальное, но что-то не выходит. Не могли бы взглянуть код?
Сама задача "Написать программу нахождения наибольшего общего делителя для элементов массива целых чисел."

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
52
53
#include <iostream>
#include <cmath>
#include <conio.h>
#include <stdio.h>
#define N 25
 
long Nod(long a, long b)
{
    while (a && b)
        if (a >= b)
           a %= b;
        else
           b %= a;
    return a | b;
 
}
 
 
 
long NodArray(long *a, int n)
{
   long i, nod = 0;
   for (i = 0; i < n; i++)
      nod = Nod(a[i], nod);
   return nod;
}
 
 
void Enter_Array (long Array[], long &size)
{
while(1)
{
 printf ("Vvedite elementi massiva (2 - %d): ", N);
 scanf ("%d", &size);
     if ((size >1) && (size <= N)) break;
else printf("Nevernit vvod!\n");
}
printf ("Vvedite elementy massiva: \n");
for (int i = 0; i < size; i ++) scanf ("%d", &Array [i]);
}
 
 
 
void main( )
{
    long a[N], n;
    Enter_Array(a,n);
    Nod(*a, n);
    NodArray(a, n);
    printf ("\n NOD = %d", n );
    getch();
 
}
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
06.11.2011, 19:39
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
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 25
 
long Nod(long a, long b)
{
    while (a && b)
        if (a >= b)
           a %= b;
        else
           b %= a;
    return a | b;
 
}
 
long NodArray(long *a, int n)
{
   long i, nod = 0;
   for (i = 0; i < n; i++)
      nod = Nod(a[i], nod);
   return nod;
}
 
int main( )
{
    long a[N], n, i;
    srand(time(NULL));
    for(i = 0; i < N; i++)
        printf("%ld ", a[i] = rand()%100);
    printf ("\n NOD = %ld\n", NodArray(a, N));
    getch();
    return 0;
}
2
0 / 0 / 1
Регистрация: 23.10.2011
Сообщений: 26
09.11.2011, 14:26  [ТС]
Твоя программа работает верно, но наш препод требует, чтобы программа была составлена с помощью функции ,а не рандомным заданием массива.
Вот такая функция должна быть:
C
1
2
3
4
5
6
7
8
9
10
11
12
void Enter_Array (int Array[], int &size)
{
while(1)
{
 printf ("Ââåäè ðàçìåð ìàññèâà (2 - %d): ", N);
 scanf ("%d", &size);
     if ((size >1) && (size <= N)) break;
else printf("Íåâåðíûé ââîä!\n");
}
printf ("Ââåäè ýëåìåíòû ìàññèâà: \n");
for (int i = 0; i < size; i ++) scanf ("%d", &Array [i]);
}
По сути тоже самое выходит, когда я с помощью твоих функций пытался сам сделать программу
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.11.2011, 14:56
Цитата Сообщение от kuwmen Посмотреть сообщение
Твоя программа работает верно, но наш препод требует, чтобы программа была составлена с помощью функции ,а не рандомным заданием массива.
И что за наезд? Я вам написал алгоритм нахождения НОД для массива и показал пример работы, а уж как использовать этот алгоритм это ваше дело.
0
0 / 0 / 1
Регистрация: 23.10.2011
Сообщений: 26
09.11.2011, 15:06  [ТС]
Цитата Сообщение от Thinker Посмотреть сообщение
И что за наезд? Я вам написал алгоритм нахождения НОД для массива и показал пример работы, а уж как использовать этот алгоритм это ваше дело.
Это не наезд, я просто прошу помочь написать программу немного по другому, у меян не получается.
Я её уже с ног до головы исковеркал, но у меня ничего не выходит. Поэтому и прошу помощи
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.11.2011, 19:13
прикрутил вашу функцию Enter_Array:
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
#include <conio.h>
#include <stdio.h>
#define N 25
 
long Nod(long a, long b)
{
    while (a && b)
        if (a >= b)
           a %= b;
        else
           b %= a;
    return a | b;
 
}
 
long NodArray(long *a, int n)
{
   long i, nod = 0;
   for (i = 0; i < n; i++)
      nod = Nod(a[i], nod);
   return nod;
}
 
void Enter_Array (long *Array, int *size)
{
   int i, n;
   while(1)
   {
       printf ("Введи размер массива (2 - %d): ", N);
       scanf ("%ld", &n);
       if (n > 1 && n <= N) break;
       else printf("Неверный ввод!\n");
   }
   printf ("Введи элементы массива: \n");
   for (i = 0; i < n; i ++) scanf ("%ld", &Array [i]);
   *size = n;
}
 
int main( )
{
    long a[N], n, i;
    Enter_Array(a, &n);
    for(i = 0; i < n; i++)
        printf("%ld ", a[i]);
    printf ("\n NOD = %ld\n", NodArray(a, n));
    getch();
    return 0;
}
1
0 / 0 / 1
Регистрация: 23.10.2011
Сообщений: 26
09.11.2011, 20:54  [ТС]
Вроде также делал, ну да ладно. Спасибо большое
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.11.2011, 20:54
Помогаю со студенческими работами здесь

Найти НОД трёх чисел. Примечание. НОД(a,b,c)=НОД(НОД(a,b),c).
Кто может решить данную задачку (составить программу с помощью циклов)))) заранее спасибо)) Найти НОД трёх чисел. Примечание....

нод для массива, срочно(((
определить наибольший общий делитель для всех элементов массива pascal

Даны n натуральных чисел. Найти их наибольший общий делитель, учитывая что НОД(а,б,с)=НОД(НОД(а,б)с)
даны n натуральных чисел. Найти их наибольший общий делитель, учитывая, что НОД(a,b,c) = НОД (НОД(a,b)c). При решении определите функцию...

НОД для всех элементов одномерного числового массива
Добрый день! Необходимо сделать программу, которая будет вычислять наибольший общий делитель для всех элементов одномерного числового...

Найти наибольший общий делитель чисел M и N. Используйте теорему Эйлера: Если M делится на N, то НОД (N, M)=N, иначе НОД (N, M)= =НОД (M mod N, N).
Найти наибольший общий делитель чисел M и N. Используйте теорему Эйлера: Если M делится на N, то НОД (N, M)=N, иначе НОД (N, M)= =НОД (M...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru