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

> Внимание!

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

> Найти наибольший общий делитель всех элементов массива, Помогите найти ошибку
Shmaniche
сообщение 27.05.2012 8:13
Сообщение #21


Пионер
**

Группа: Пользователи
Сообщений: 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 - 27.05.2012 10:14
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



- Текстовая версия 19.05.2024 12:23
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"