IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Найти наибольший общий делитель всех элементов массива, Помогите найти ошибку
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 79
Пол: Мужской

Репутация: -  0  +


Помогите найти ошибку в коде.


#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define N 5
int main()
{ /* int mass[N]; */
int mass[N]={2, 4, 8, 16, 32}; // Объявляем массив.
int i, g, h, x, temp, NOD;
/* srand(unsigned(time(NULL))); // Запуск генератора случайных чисел. */
printf("\n Massiv iz 5 elementov: \n");
for(i=0; i<N; i++)
{
/* mass[i]=rand()%10+1; */
printf("\n Mass[%d] = %d. ", i, mass[i]);
}

if(mass[0]<mass[i]) // Если первый элемент массива меньше второго, тогда...
{ g=mass[i]; h=mass[0]; } // запомининаем след. элемент в перем-ой g, а первый в перем-ой h.
if(mass[0]>mass[i]) // Если первый элемент массива больше второго, тогда...
{ g=mass[0]; h=mass[i]; } // запомининаем первый элемент в перем-ой g, а след. в перем-ой h.

do // выполнять до тех пор...
{
if(g%h == 0) // если большее число делится на меньшее без остатка, тогда...
{ NOD=h; } // меньшее число и есть НОД.
else // Иначе.
{ temp=h;
h=g%h; // Второе станет остатком от деления.
g=temp; // А первое число вторым, значения которого записываем во временную переменную.
NOD=h; } // Пока НОДом будет второе число.
}
while(g%h!=0); // ...пока остаток от деления g и h элементов не перестанет быть равным 0.

if (NOD != 1) // Если НОД не равен 1...
{ printf("\n \n NOD = %d. \n", NOD); } // Выводим результат на экран.
else
{ printf("\n \n Chisla ne imeut obschih deliteley \n"); } // Числа не имеют общих делителей.

getch();
return 0;
}




Программа выдает, что общих делителей не найдено, хотя здесь НОД = 2.
Генератор случайных чисел временно отключил, чтобы проверить программу на конкретных числах.

Интересно, что когда я уменьшаю массив до 3 элементов и ввожу 2, 4, 8, то НОД находится верно (НОД=2).

Сообщение отредактировано: Shmaniche -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Shmaniche   Найти наибольший общий делитель всех элементов массива   27.05.2012 12:13
Shmaniche   У кого-неибудь есть какие-нибудь мысли?   30.05.2012 23:56
IUnknown   Debugger + пошаговый проход по программе тебе помо…   30.05.2012 23:59
Shmaniche   Debugger + пошаговый проход по программе тебе пом…   31.05.2012 12:11
-Федосеев Павел-   Прикольно! Ты пытаешься взять "на слабо…   31.05.2012 15:13
Krjuger   Поверь,человек, которого ты пытаешся взять …   31.05.2012 16:52
Shmaniche   Поверь,человек, которого ты пытаешся взять …   31.05.2012 17:07
Игорь   Кстати, программа твоя работает, вроде бы, правиль…   31.05.2012 18:31
Shmaniche   Игорь, твой код тоже не работает, ошибка в цикле d…   31.05.2012 19:43
Krjuger   Форум создан,чтобы помогать учиться, а не делать в…   31.05.2012 20:11
Игорь   Ты уж извини, но это твой код (цикл по крайней ме…   31.05.2012 20:50
Shmaniche   Krjuger, учится говоришь? Так для этого существуют…   31.05.2012 22:05
Krjuger   Ну чтож, это уже похоже на правду, но есть один ма…   31.05.2012 22:23
Shmaniche   Ну чтож, это уже похоже на правду, но есть один м…   31.05.2012 22:49
Krjuger   Что за такое страшное условие.Прям в дрож бросает.…   1.06.2012 0:25
Федосеев Павел   Я бы реализовал всю программу следующим образом: а…   1.06.2012 0:50
Shmaniche   Krjuger, твоя проверка на фурычит. А вот решение П…   1.06.2012 9:54
Krjuger   Да,я закрывающую скобку не туда поставил.Да и вооб…   1.06.2012 14:43
Shmaniche   Есть вариант проще: int NOD_Function(int a, int …   1.06.2012 14:51
Krjuger   Ты в загадки с нами играешь что ли?Нам все равно …   1.06.2012 16:00
Shmaniche   Ты в загадки с нами играешь что ли?Нам все равно …   1.06.2012 16:12
Krjuger   Если ты спрашиваеш,то спрашивай,а слова "до…   1.06.2012 17:21
Shmaniche   Если ты спрашиваеш,то спрашивай,а слова "дог…   1.06.2012 18:00
Krjuger   Может я не знаю русского языка,но "догадайте…   1.06.2012 18:31
Shmaniche   Вы попросили помощи,вам помогли,затем вы создали …   1.06.2012 18:51


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.04.2024 17:16
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name