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

НОД и числовая последовательность - C++

Восстановить пароль Регистрация
 
deepLulz
 Аватар для deepLulz
4 / 4 / 0
Регистрация: 12.02.2012
Сообщений: 46
16.04.2012, 10:13     НОД и числовая последовательность #1
Задание звучит следующим образом:
Дано натуральное число N и натуральные числа a1,a2,a3,...,aN. Найти наибольший общий делитель для данной последовательности.
Есть одна не ловкая особенность - массивы использовать запрещено.
Я сделал последовательность вот таким образом:
C++
1
2
3
4
5
6
7
    
    printf("Type N = ");
    scanf("%u",&n);
    for(i=1; i<=n; i++){
        printf("Type A%u = ",i);
        scanf("%u",&a);
    }
Но теперь беда, так как для нахождения НОД нужно как минимум 2 числа - A и B. Может кто подскажет, как быть?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
16.04.2012, 10:24     НОД и числовая последовательность #2
Если я правильно понял задание, то делим все числа последовательности по очереди на числа от 1 до a1. Это если последовательность упорядочена и возрастает. Если убывает то от 1 до aN. Если не упорядочена то от 1 до минимального числа последовательности.
deepLulz
 Аватар для deepLulz
4 / 4 / 0
Регистрация: 12.02.2012
Сообщений: 46
16.04.2012, 10:27  [ТС]     НОД и числовая последовательность #3
Toshkarik, смотрите в чем особенность. Вся моя последовательность, не знаю как нормально обьяснить, это одна переменная A и она действительна только во время работы цикла, потом цикл начинается заново и уже у A другое число. Так же неизвестно как идут числа. При запуске программы мы вводим N, после чего последовательно вводим числа в A в неизвестно каком порядке.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
16.04.2012, 11:16     НОД и числовая последовательность #4
Цитата Сообщение от deepLulz Посмотреть сообщение
Toshkarik, смотрите в чем особенность. Вся моя последовательность, не знаю как нормально обьяснить, это одна переменная A и она действительна только во время работы цикла, потом цикл начинается заново и уже у A другое число. Так же неизвестно как идут числа. При запуске программы мы вводим N, после чего последовательно вводим числа в A в неизвестно каком порядке.
C++
1
2
3
4
5
6
7
8
9
10
11
    
    printf("Type N = ");
    scanf("%u",&n);
    unsigned int a1,a2;
    printf("Type A1 =");
    scanf("%u",&a1);
    for(i=2; i<n+1; i++){
        printf("Type A%u = ",i);
        scanf("%u",&a2);
        a1=NOD(a1,a2);
    }
В a1 будешь хранить НОД.
deepLulz
 Аватар для deepLulz
4 / 4 / 0
Регистрация: 12.02.2012
Сообщений: 46
16.04.2012, 11:19  [ТС]     НОД и числовая последовательность #5
Nekto, компилятор ругается "undefined reference to 'NOD'"
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
16.04.2012, 11:25     НОД и числовая последовательность #6
Цитата Сообщение от deepLulz Посмотреть сообщение
Nekto, компилятор ругается "undefined reference to 'NOD'"
Ну надо ж функцию написать нахождения НОДа Я думал, что у тебя уже есть.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
16.04.2012, 11:32     НОД и числовая последовательность #7
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
int main() {
   int gcd = 0,
       number = 0,
       amount = 0,
       i = 0,
       j = 0;
 
   printf( "Enter N: " );
   scanf( "%i", &amount );
 
   printf( "Enter 1 number: " );
   scanf( "%i", &gcd );
 
   for ( i = 2; i <= amount; i++ ) {
      printf( "Enter %i number: ", i );
      scanf( "%i", &number );
 
      if ( number % gcd != 0 ) {
         for ( j = number; j > 0; j-- ) {
            if ( gcd % i == 0 && number % i == 0 ) {
               gcd = i;
               break;
            }
         }
      }
   }
 
   printf( "Greatest common divisor: %i\n", gcd );
 
   return 0;
}
Добавлено через 4 минуты
Я подправил немного код, там была очепятка в одном месте, перепиши если вдруг ты с ошибкой скопировал.

Добавлено через 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
24
25
26
27
28
29
30
31
int main() {
   int gcd = 0,
       number = 0,
       amount = 0,
       i = 0,
       j = 0;
 
   printf( "Enter N: " );
   scanf( "%i", &amount );
 
   printf( "Enter 1 number: " );
   scanf( "%i", &gcd );
 
   for ( i = 2; i <= amount; i++ ) {
      printf( "Enter %i number: ", i );
      scanf( "%i", &number );
 
      if ( number % gcd != 0 ) {
         for ( j = number; j > 0; j-- ) {
            if ( gcd % j == 0 && number % j == 0 ) {
               gcd = j;
               break;
            }
         }
      }
   }
 
   printf( "Greatest common divisor: %i\n", gcd );
 
   return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2012, 11:32     НОД и числовая последовательность
Еще ссылки по теме:

C++ Числовая последовательность 2n!
Числовая последовательность C++
Последовательность натуральных чисел, вычисление их НОД методом Евклида C++

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

Или воспользуйтесь поиском по форуму:
deepLulz
 Аватар для deepLulz
4 / 4 / 0
Регистрация: 12.02.2012
Сообщений: 46
16.04.2012, 11:32  [ТС]     НОД и числовая последовательность #8
Toshkarik, во! Спасибо огромное. Это именно то, что нужно было. Сейчас подгоню под свои переменные и свой код!
Yandex
Объявления
16.04.2012, 11:32     НОД и числовая последовательность
Ответ Создать тему
Опции темы

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