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

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Нахождение min и max в массиве
сообщение
Сообщение #1


Бывалый
***

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

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


Чему должно присваиваться значения min и max для программы нахождения максимального числа или минимального числа в массиве? То есть, меня интересует инициализация min и max до цикла. Ведь, по идеи чтобы найти max элемент мы должны первый элемент присвоить какому-то max, затем проверить если какой-то следующий элемент будет больше, чем тот который мы задали, тогда max присвоить этому элементу и т. д. (то есть все это в цикле)
...
max:integer;
...
max:=a[1];
for i:=1 to n do
if a[i]>max then max:=a[i];
...

То же самое для минимального:
...
min:integer;
...
min:=a[1];
for i:=1 to n do
if a[i]<min then min:=a[i];
...


Также ли надо было присваивать для просто введенных с клавы чисел, для которых нам надо было найти min и/или max? То есть:
...
write('vvedite kolvo 4isel');
readln(n);
{naxodim min i/ili max}


--------------------
Само знание есть сила
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Цитата
Я бы, например, не стал рекомендовать исправления, которые могут негативно сказаться на производительности.
Если не внести это исправление, то вполне возможно (и даже вероятнее всего), что это скажется на производительности отрицательно. Миром byte, integer и longint, andriano, реальные программы не ограничены. Вот понадобится мне работать со своим типом данных, размером байт в 500-700, и что?

Да и про негативное влияние на производительность при работе с индексами - тоже бабушка надвое сказала. Как ты же сам говорил?
Цитата
Ты хочешь конкретный совет, как можно решить проблему, или просто поговорить о несовершенстве Вселенной?
Вот со мной о несовершенстве сферического компилятора в вакууме говорить не надо. Цифры и коды в студию. А я еще и посмотрю, выполняется ли то, о чем ты напишешь, на МОЕЙ машине (прецеденты, к сожалению, уже были, мне на Сурсах уже один раз говорили, что мой код работает медленнее, чем другой. Оказалось, что на древнем 386 процессоре)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гуру
*****

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

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


Цитата(volvo @ 29.10.2009 9:34) *

Если не внести это исправление, то вполне возможно (и даже вероятнее всего), что это скажется на производительности отрицательно. Миром byte, integer и longint, andriano, реальные программы не ограничены. Вот понадобится мне работать со своим типом данных, размером байт в 500-700, и что?
Видишь ли, volvo, универсального решения пригодного на все случаи жизни, в природе не существует. Я, например, не видел автомобиля, пригодного для того, чтобы развозить пицу по узеньким улочкам, использовать в качестве карерного самосвала, а также для перевозки пассажиров.
С программаи чуть проще - как оно там внутри устроено, никто не видит, а несколькомегагерцовый процессор в большинстве случаев зажует любую неоптимальность, что не заметишь. Правда, не всегда. Особенно, если данная неоптимальность угнездилась в теле самого вложенного цикла.
Увы, сегодня все большую популярность приобретает метод программирования copy/paste, для которого, естественно, универскальность много важнее оптимальности.
Я же консерватор, привык писать код ручками. Поэтому для каждой конкретной задачи выбираю тот путь, который соответствует именно ей, а не как можно более широкому кругу хотя бы отдаленно сходных задач.
Если нужно найти максимум, я ищу ТОЛЬКО максимум. Еслм мне нужен индекс, - ищу индекс (не забывая, правда, заодно запомнить и максимум - чтобы было с чем сравнивать). Ну а если у нас есть структура байт эдак в 500-700, то поступаю по обстановке. Если скажем, у меня есть массив структур, в которых описаны ФИО, год рождения, место работы, тарифный разряд и т.д., и мне нажо найти человека, я буду запоминать индекс. А если мне нужно узнать лишь максимальны рост, то я и буду искать ТОЛЬКО рост.
В подавляющем большинстве случаев операция сравнения на больше/меньше для структур объемом 500-700 байтов не определена. И проводится по некоторому полю этой структуры, тип которого допускает такую операцию. Соответственно, в некоторых случаях (ни в коей мере не утверждаю, что во всех) вполне достаточно запоминать лишь это поле.
Зачем делать лишнюю работу?
Цитата

Да и про негативное влияние на производительность при работе с индексами - тоже бабушка надвое сказала.
Спорить не буду. В том числе и по указанной тобой причине: на разных архитектурах один и тот же код может вести себя по-разному.


Добавлено через 3 мин.
Цитата(Lapp @ 29.10.2009 15:15) *
Когда человеку потребуется скорость - тогда будет выжимать все возможное. Пока же такой цели не ставилось.
Ну да, сначала научим человека программировать, а потом будем переучивать программировать правильно...
Цитата

Когда спрашивается про "макс/мин элемент массива", я всегда сомневаюсь, что же именно хотят: его значение или индекс. Предпочитаю быть готовым ко всему.
Да, тяжело решать задачу, смысла которой не понимаешь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Вячеслав Людской   Нахождение min и max в массиве   27.10.2009 21:35
ammaximus   В идеале max = INF, min = -INF т.е. самое большое …   27.10.2009 22:11
Lapp   Для переменных - границы (например -32767 и 32768 …   29.10.2009 7:59
Вячеслав Людской   Такой вариант считаю неправильным. Причина - не у…   27.10.2009 22:48
volvo   Кто бы говорил про универсальность :dry: А я вот…   27.10.2009 22:54
Error 205   min:=a[1]; for i:=2 to n do if a[i]<min then …   28.10.2009 0:22
Вячеслав Людской   Что ты имеешь в виду? Нда, простите, это действ…   28.10.2009 18:44
Lapp   И все же по-моему такой вариант наиболее правильны…   29.10.2009 7:31
andriano   1. Запоминай не сам минимум, а его индекс. А поче…   29.10.2009 13:00
buy prednisone without a precipi   Fluconazole 200 Mg Yeast Infection   11.10.2021 7:54
buy priligy on the internet with   Viagra Pfizer Presentacion   17.11.2021 0:55
volvo   Если не внести это исправление, то вполне возможно…   29.10.2009 13:34
andriano   Если не внести это исправление, то вполне возможн…   30.10.2009 2:35
Lapp   Видишь ли, ... не понимаешь. Флуд все это.   30.10.2009 4:10
Вячеслав Людской   Так получается? var a:array[1..100] of integer; i…   29.10.2009 18:44
Lapp   Зачем ты присваиваешь i единицу?.. Единицу надо п…   29.10.2009 19:15
Вячеслав Людской   Я до этого не додумался, думал все равно надо i:=1…   29.10.2009 20:54


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

 





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