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

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

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

НОД для массива - C++

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

Помогите написать функцию для нахождения НОДа для массива.
нужна просто функция
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2011, 17:27     НОД для массива
Посмотрите здесь:

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

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

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

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

НОД для нескольких чисел - C++
Надо найти НОД для нескольких чисел, не используя массив и функцию gcd. пример: n=3 вход: 2 8 16 выход: 2 NOD(а1, а2, … аn) =...

НОД для 100 чисел - C++
Найти НОД (наибольший общий делитель) n чисел. Входные данные Первая строка содержит количество чисел n (1 < n < 101). Во...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
05.11.2011, 18:48     НОД для массива #2
http://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;
}
kuwmen
0 / 0 / 0
Регистрация: 23.10.2011
Сообщений: 23
06.11.2011, 19:27  [ТС]     НОД для массива #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
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();
 
}
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
06.11.2011, 19:39     НОД для массива #4
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;
}
kuwmen
0 / 0 / 0
Регистрация: 23.10.2011
Сообщений: 23
09.11.2011, 14:26  [ТС]     НОД для массива #5
Твоя программа работает верно, но наш препод требует, чтобы программа была составлена с помощью функции ,а не рандомным заданием массива.
Вот такая функция должна быть:
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]);
}
По сути тоже самое выходит, когда я с помощью твоих функций пытался сам сделать программу
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.11.2011, 14:56     НОД для массива #6
Цитата Сообщение от kuwmen Посмотреть сообщение
Твоя программа работает верно, но наш препод требует, чтобы программа была составлена с помощью функции ,а не рандомным заданием массива.
И что за наезд? Я вам написал алгоритм нахождения НОД для массива и показал пример работы, а уж как использовать этот алгоритм это ваше дело.
kuwmen
0 / 0 / 0
Регистрация: 23.10.2011
Сообщений: 23
09.11.2011, 15:06  [ТС]     НОД для массива #7
Цитата Сообщение от Thinker Посмотреть сообщение
И что за наезд? Я вам написал алгоритм нахождения НОД для массива и показал пример работы, а уж как использовать этот алгоритм это ваше дело.
Это не наезд, я просто прошу помочь написать программу немного по другому, у меян не получается.
Я её уже с ног до головы исковеркал, но у меня ничего не выходит. Поэтому и прошу помощи
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.11.2011, 19:13     НОД для массива #8
прикрутил вашу функцию 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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2011, 20:54     НОД для массива
Еще ссылки по теме:

НОД для 3 чисел и более - C++
Помогите пожалуйста написать программу нахождения НОД для трех или более чисел на основе КАНОНИЧЕСКОГО разложения числа.

НОД для трех чисел. - C++
Здорова народ! Как найти найболшый общий делитель для трьох чисел?

Для целых чисел N и M найти НОД - C++
Составить программу, которая бы для целых чисел N и M (|N|, |M| &lt;=2000000) находила их НОД (наибольший общий делитель). Указания к...

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


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

Или воспользуйтесь поиском по форуму:
kuwmen
0 / 0 / 0
Регистрация: 23.10.2011
Сообщений: 23
09.11.2011, 20:54  [ТС]     НОД для массива #9
Вроде также делал, ну да ладно. Спасибо большое
Yandex
Объявления
09.11.2011, 20:54     НОД для массива
Ответ Создать тему
Опции темы

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