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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Профи
****

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

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


Цитата
Так я спрашиваю!

Может я не знаю русского языка,но "догадайтесь сами" это ниразу не вопрос.Либо это очередная попытка взять на слабо,либо это снизхождение,дескать, я кое-что сделал,а вы уж сами додумайте.
Цитата
Но вы же тут профи. Можете и сами догадаться куда какой фрагмент кода вставлять.

Слушайте,гадание на кофейной гуще это самое неблагодарное дело.
Например вы скидываете кусок программы и говорите, не работает.Ее дописывают до полноценной программы и она,о чудо, отрабатывает.Выясняется, что ошибка происходит у вас раньше,а другой человек написал все верно,или вы сделали какой нибудь хитрый финт ушами и все получается наоборот.
Цитата
Кстати зачем вы в приведеном выше коде объявили "bool minus,flag" и "int g, h, x, temp", когда они нигде не испльзуются?

Я просто скопировал из одного из предыдущих постов.
Цитата
В данной программе как оказывается не задано рассматривать числа меньше 0, хотя по желаню можно и рассмотреть.

Мне то откуда об этом знать.Вы задачу ставите.
Цитата
Но прежде чем получить внятный ответ получаю такие выпады, что моя задача банальна, что желающих помочь здесь нет и вообще я глухой!

Это не выпады,просто есть категория людей,которая приходит на форум и требует,чтобы им решили.Чаще всего таких людей просто игнорируют.
Как вы заметили,здесь форум и, как на большинстве форумов, помощ здесь абсолютно добровольная.
Вы попросили помощи,вам помогли,затем вы создали новую тему ,где "затем мне предложили другой вариант решения, который мне показался интереснее". По сути вы наплевали на труд того человека и теперь хотите,чтобы он помог вам исполнить вашу прихоть.Он вас вежливо послал искать при помощи дебага.Это одно из неотемлемых умений программиста.Вы же на это отреагировали "а слабо".Отсуда к вам и пошло такое отношение.
Вот если бы вы полазили с дебагом и сказали,у меня вот тут ошибка , не знаю как исправить, помогите,это одно. Вы же сказали,вот код, он не работает, давайте правьте,то есть сами ищите где ошибка,а это самое неблагодарное занятие.За подобное редко беруться.
За такое могут взяться,только если заинтересует сама задача,но извините, НОД замусолен уже до дыр, вот поэтому он и банален.
Про глухого вам никто не говорил,но вы как минимум несколько раз проигнорировали то,что я вам писал про ближайшее к среднему арифметическому.

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


Пионер
**

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

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


Цитата(Krjuger @ 1.06.2012 18:31) *

Вы попросили помощи,вам помогли,затем вы создали новую тему ,где "затем мне предложили другой вариант решения, который мне показался интереснее". По сути вы наплевали на труд того человека и теперь хотите,чтобы он помог вам исполнить вашу прихоть.


1. Не прихоть, а просьба. 2. Труд уважаю, но если я для себя нашел вариант лучше это не значит, что я наплевал на труд собеседника. Просто в конкретно моем случае другое решение оказалось интереснее.

Цитата(Krjuger @ 1.06.2012 18:31) *


Вот если бы вы полазили с дебагом и сказали,у меня вот тут ошибка , не знаю как исправить, помогите,это одно.


А кто привел краткую функцию вычисление НОД в итоге? Пусть и только для положительных чисел? Кстати отсюда следует функция вычисления НОК:

int NOK_Function(int a, int b)
{
if (b==0) // Если последнее число равно 0,
{ printf ("\n \n Oshibka! V massive nayden 0"); // то вывести сообщение "Ошибка! В массиве найден 0".
return 0; } // Функция возврещает 0.
else
{ return a/NOD_Function(a, b)*b; } // Возвращаем значение а деленое на функцию НОД умноженное на b.
}



Цитата(Krjuger @ 1.06.2012 18:31) *

Про глухого вам никто не говорил,но вы как минимум несколько раз проигнорировали то,что я вам писал про ближайшее к среднему арифметическому.


Если я еще не ответил по той теме это еще не значит, что я глух или проигноировал ваши рекомендации. Это значит, что решение данной задачи оставил на потом, либо она уже не актуальна.

И хватит уже офтипить!

Сообщение отредактировано: 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

 





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