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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.07.2011, 23:03   #1
Faridik
Форумчанин
 
Аватар для Faridik
 
Регистрация: 08.08.2008
Сообщений: 117
По умолчанию

Здраствуйте.Я вот начинаю решать легкие алгоритмы.Чтоб каждый раз не создавать новую тему,буду свою тему загразнять ))

Код:
public static void main(String[] args) 
    { 
        int i,n,imin;
        n=5;
        int a[]={4,3,2,8,1};
        imin=0;
        for (i=1;i<n;i++)
            if (a[i]<a[imin])
            {
            imin=i;
            }
        System.out.println(imin);
    }
}
Почему ответ выводит на единицу меньше?


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Stilet; 12.08.2011 в 20:49.
Faridik вне форума Ответить с цитированием
Старый 24.07.2011, 23:18   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А язык какой? Нумерация индексов массива не с 0 начинается?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 24.07.2011, 23:20   #3
Faridik
Форумчанин
 
Аватар для Faridik
 
Регистрация: 08.08.2008
Сообщений: 117
По умолчанию

Язык Java...Да,с 0.Разобрался уже.Спасибо большое. ))

А разница между первым кодом и
Код:
int i,n,imin,min;
        n=5;
        int a[]={4,3,2,8,1};
        min=a[0];
        imin=0;
        for (i=0;i<n;i++)
            if (a[i]<min)
            {
                min=a[i];
                imin=i+1;
            }
        System.out.println(imin);
есть?
Работают одинокого.Разница только в стиле и профессионализме?

Последний раз редактировалось Stilet; 12.08.2011 в 20:51.
Faridik вне форума Ответить с цитированием
Старый 24.07.2011, 23:29   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

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

Для решения той же задачи потребовалось ещё одна дополнительная переменная. Дополнительное присвоение.
Ну и плюс в цикле ещё раз этот же нулевой элемент проверяется - это абсолютно бессмыслено...


p.s. современные процессоры таковы, что разница будет АБСОЛЮТНО незначима.. но, раз уж мы про корректность говорим, то лишняя проверка совсем ни к чему...

Последний раз редактировалось Serge_Bliznykov; 24.07.2011 в 23:36.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.07.2011, 22:47   #5
Faridik
Форумчанин
 
Аватар для Faridik
 
Регистрация: 08.08.2008
Сообщений: 117
По умолчанию

Код:
int i,n,min;
        n=5;
        int a[]={6,2,0,-5,-1};
        min=a[0];
        for (i=1;i<n;i++)
            if (a[i]<min & a[i]>0)
            {
            min=a[i];
            }
        System.out.println(min);
Почему когда первый элемент отрицательный,алгоритм берет сразу его,без проверки.Весь день мучаюсь,не могу разобраться. ((
Faridik вне форума Ответить с цитированием
Старый 25.07.2011, 22:50   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Эм...О какой проверке речь? Кто кого куда берет?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 25.07.2011, 22:53   #7
Faridik
Форумчанин
 
Аватар для Faridik
 
Регистрация: 08.08.2008
Сообщений: 117
По умолчанию

Извиняюсь за некорректность.Мне нужен минимальный положительный элемент.А когда первый элемент отрицательный,выводится сразу он,если даже есть элемент меньше.
Faridik вне форума Ответить с цитированием
Старый 25.07.2011, 22:57   #8
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Код:
if (a[i]<min && a[i]>0)
Здесь логическое "и" нужно, а не побитовое. Да и операторные скобки лишние...

(PS: Я джава не знаю и никогда не знал, но умею пользоваться документацией)
Ненавижу быть как все, но люблю, чтобы все были как я.

Последний раз редактировалось MyLastHit; 25.07.2011 в 23:05.
MyLastHit вне форума Ответить с цитированием
Старый 25.07.2011, 23:02   #9
Faridik
Форумчанин
 
Аватар для Faridik
 
Регистрация: 08.08.2008
Сообщений: 117
По умолчанию

Ооо,спасибо...с максимальным элементом так проходило...))
Faridik вне форума Ответить с цитированием
Старый 25.07.2011, 23:03   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А, понял. Ну так min=a[i]; выполняется только если элемент меньше min(отрицательное всегда будет меньше и в min будет отрицательное если он первый) И элемент больше 0.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 25.07.2011 в 23:06.
Alex11223 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос начинающего по компилятору Tmod Софт 7 28.08.2010 22:10
Вопрос от начинающего ProGus Microsoft Office Excel 1 10.08.2010 14:30
Инструментарий начинающего... Всеслав Общие вопросы C/C++ 6 24.12.2008 15:39
Портфолио начинающего программиста С++ Марья Свободное общение 1 12.06.2008 08:16