Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2012, 13:57   #1
Paradoх
 
Регистрация: 27.10.2012
Сообщений: 3
По умолчанию Нахождение наибольшего отрицательного и наименьшего положительного числа.

Код:
#include<conio.h>
#include<stdio.h>
int main()
{
    int m[10],n=10,i,flag,min,max;
    printf("vvedite elementi massiva");
    for (i=0;i<n;i++) // заполнение массива
    {
        printf("\nm[%i]=", i);
        scanf("%i", &m[i]);
    }
    
    
    for (i=0;i<n;i++)            //проверка на наличие отрицательных чисел
    if (m[i]<0) {flag=1; break;}

    if (flag==1)
    {max=m[0];
     for (i=0;i<n;i++)             // нахождение наибольшего отрицательного числа
        if ((m[i]<0)&&(m[i]>max)) max=m[i];

    printf ("\nNaibolishee otricatelinoe 4islo  %i", max);
    }
    else printf("\nne vvedeni otricatelinie 4isla\n");

    flag=0;
     for (i=0;i<n;i++)            //проверка на наличие положительных чисел
    if (m[i]>0) {flag=1; break;}

    if (flag==1)
    {
     for (i=0;i<n;i++)             // нахождение наименьшего положительного числа
        if ((m[i]>0)&&(m[i]<min)) min=m[i];
        printf ("\nNaimenishee polojitelinoe 4islo  %i", min);
    }
    else printf("\nne vvedeni polojitelinie 4isla\n");
    getch();


}
при вводе только положительных или только отрицательных всё работает, но при вводе нуля или различных значений ( и положительны и отрицательных) программа отказывается правильно работать, я не смог найти ошибку, может нужен свежий взгляд на эту проблему, заранее спасибо.
тестировал прогу: положительные числа вычисляет всегда правильно, а в отрицательное просто записывает первый элемент.

Последний раз редактировалось Stilet; 09.12.2012 в 16:51. Причина: тестировал прогу
Paradoх вне форума Ответить с цитированием
Старый 09.12.2012, 15:21   #2
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Код:
if (flag==1)
{max=m[0];
for (i=0;i<n;i++) // нахождение наибольшего отрицательного числа
if ((m[i]<0)&&(m[i]>max)) max=m[i];
Представь себе у тебя массив из следующих числе: 5, 10, -12, -5
Получается max будет равен 5 когда выполниться условие if (flag == 1)
Код:
if ((m[i]<0)&&(m[i]>max))
Условие никогда не будет истинным даже если i-ый элемент будет равен -12 потому что он никогда не будет больше чем 5. Значит что мы должны сделать? Постоянно менять max и проходить заного массив и сравнивать.

Подсказка:

Код:
for (int i = 0; i < n; i++)
{
 //Здесь можно менять max
 for (int j = 0; j < n; j++)
 {
  //А здесь можно сравнивать
 }
}
п.с. - Оформляй код в тегах КОД

Последний раз редактировалось coNsept; 09.12.2012 в 15:28.
coNsept вне форума Ответить с цитированием
Старый 09.12.2012, 15:59   #3
Paradoх
 
Регистрация: 27.10.2012
Сообщений: 3
По умолчанию

Спасибо я изменил код, всё работает, правда я не до конца понял из-за чего она не работала, но всё равно спасибо)
Paradoх вне форума Ответить с цитированием
Старый 09.12.2012, 16:10   #4
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Прочитай еще раз 10 то что я написал и поймешь.
coNsept вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
4. Дан одномерный массив. Найдите разность наибольшего и наименьшего чисел в этом массиве. Иван_lk Помощь студентам 0 31.05.2011 20:46
Строки в C. Определение наибольшего и наименьшего слова в тексте. xalex17 Помощь студентам 5 26.05.2010 13:53
Нахождение наибольшего общего делителяНахождение наибольшего общего делителя A_Orlov Паскаль, Turbo Pascal, PascalABC.NET 1 27.04.2010 16:53
Нахождение наибольшего числа из промежутка BaronVik Паскаль, Turbo Pascal, PascalABC.NET 4 21.04.2010 16:36
нахождение наибольшего общего делителя и наименьшего общего кратного made in russia Помощь студентам 2 21.12.2008 23:36