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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2009, 18:07   #11
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

я поменял, и дело вовсе не в отрицательных числах, какая разница, какие числа поставить - на результат сравнения это вообще никак не влияет.

я люблю свои алгоритмы разрабатывать в тех ситуациях, когда можно пораскинуть мозгами - хотите - пишите сортировку, это будет стандарт, который я напишу за 5 минут, а что-то сделать по-другому мне намного интереснее дефолтных решений, которых и так тут на форуме завались
capta1n вне форума Ответить с цитированием
Старый 21.03.2009, 18:41   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
я люблю свои алгоритмы разрабатывать в тех ситуациях, когда можно пораскинуть мозгами
Это похвально. Правда, умение нестандартно мыслить — это для программиста всегда плюс!
а вот писать программы, которые выдают неверный результат — это минус. Который не извиняет то, что программа написана нестандартно.
Понимаете, имхо, для программиста самое важное написать правильный, защищённый, эффективный код. Подчёркиваю - правильный! всё остальное тоже очень важно. Но хорошая программа — это прежде всего ПРАВИЛЬНО работающая. Кроме того, я не буду голословно утверждать, но мне кажется, что количество циклов в вашем случае больше... да и код абсолютно не неглядный... чего только стоит код:
Код:
            if (f=j) and (j<>n) then inc(f)
                                else f:=(j+k) mod n
:D
мне стыдно признаться, но я его не понимаю

Но это всё лирика.
Теперь - проза.
Короче. я уже устал.
но Ваш код (испраленный в 18:04) опять НЕ РАБОТАЕТ... :-(
причём - практически ДЛЯ ЛЮБОГО НАБОРА ДАННЫХ :-(((
Код:
0|9|5|0|2|
max1=9
max2=5
max3=2573
p.s. именно это я и пытаюсь Вам продемонстрировать - код с подобный "нестандартным" алгоритмом КРАЙНЕ тяжело отлаживать, поддерживать и модифицировать...

успехов.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.03.2009, 19:57   #13
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

вы хороший пользователь, если вам нравится отслеживать ошибки моей программы - вперед, это для меня только плюс - если я неправ - я поправлюсь, и буду делать это до тех пор в данном случае, пока не сделаю такой код, который будет работать при любом варианте. Насчет количества циклов - у вас их больше, сортировка занимает итераций больше, это количество итераций есть количество элементов, у вас, следовательно, сравнений больше, а у меня 3 итерации. Я все понимаю, о чем вы говорите, и очень хорошо, но меня не интересует в данный момент стандарт, который и так всем понятен, который любой пацан-восьмиклассник напишет, сейчас не решается проблема какого-то важного характера, где обычные алгоритмы преобладают над теми, которые придуманы в творческом процессе, это обычный форум, и для меня этот форум - просто средство набора опыта и не более, здесь есть люди, нуждающиеся в моих знаниях, умениях и опыте, который я набрал немало за период пребывания на форуме, а мне нужны разные задачи, которые тут предлагают.
Если есть ошибки, я постараюсь их исправить, это хорошо, что нашелся человек, который их может найти а проблема невыполнения моего кода проста и одна и та же на протяжении уже десятка постов, просто пробовал менять код - пока как видите не всегда он работает.
Да и насчет читабельности программы - не все алгоритмы новые сразу понятны, причем если от меня определенный уровень написания потребуется, то я его выполню, а для вас делать читабельным код ( я даже не знаю в каком плане он не читабельный ) нет времени, потому что, допустим, комментить я буду только в случае, когда это действительно потребуется

PS: исправил баг, запустил программу на исполнение 20 раз, причем подставлял значения из предыдущих замечаний, вроде все работает, жду новых замечаний по неправильности работы программы:
Код:
program pascall;
const
 n = 5;
var
 a : array [1..n] of integer;
 max : integer;
 i,k,j,f : byte;
begin
  randomize;
  a[1]:=0; a[2]:=9; a[3]:=5; a[4]:=0; a[5]:=2;
  {for i:=1 to n do a[i]:=random(10)-5;}
  for i:=1 to n do write (a[i],'|');
  writeln;
  max:=a[1];
  j:=1;
  for i:=1 to n do
   if a[i]>max then
   begin
     max:=a[i];
     j:=i
   end;
  writeln ('max1=',max);
  if j<>n then k:=j+1
          else k:=1;
  max:=a[k];
  for i:=1 to n do
   if i=j then continue
          else
           if a[i]>max then
           begin
             max:=a[i];
             k:=i
           end;
  writeln ('max2=',max);
  if (k<>1) and (j<>1) then f:=1
  else
   if (k<>2) and (j<>2) then f:=2
   else f:=3;
  max:=a[f];
  for i:=1 to n do
   if (i=k) or (i=j) then continue
                     else
                      if a[i]>max then max:=a[i];
  writeln ('max3=',max);
  readln
end.
PS: эти задачки детские, а, следовательно, и детские ошибки по сравнению с ошибками, которые делают в крупных проектах типа "программа для расчета траектории полета ракеты "Тополь" " или вот допустим играл в игру "Call of Duty 4: Modern Warfare" - так там в первой версии со снайперской винтовки вообще нереально было попасть, потому что разработчики намудрили с физикой полета пули вот и все - но эти баги тоже фиксят и исправляют, а они уж куда страшнее эти баги, чем мои в этой "ниочемной" программе, а главные отладщики - это пользователи, по выводам и замечаниям которых выпускают патчи ( в основном ), так что я вам благодарен, люблю, когда указывают на действительно неработающие мои алгоритмы, есть над чем работать

Последний раз редактировалось capta1n; 21.03.2009 в 20:26.
capta1n вне форума Ответить с цитированием
Старый 22.03.2009, 07:57   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от capta1n
вы хороший пользователь, если вам нравится отслеживать ошибки моей программы
:D ну, скорее бета-тестер...
Цитата:
Сообщение от capta1n
исправил баг, запустил программу на исполнение 20 раз... вроде все работает
согласен. погонял. Теперь код работает.

и алгоритм мне Ваш понятен.
но вот реализация всё равно не нравится - при малейших изменениях условия Вам прийдётся переписать больше половины программы.... (если надо найти не три максимальных числа, а, например, пять - причём, обратите внимание, в стандартной программе прийдётся изменить только КОНСТАНТУ). А если в условие задачи добавить - "число максимальных чисел задаётся пользователем программы", то всё - кирдык, Ваш алгоритм полностью перестаёт быть работоспособным!!

Ладно. Это мысли вслух. Работает код, поставленную задачу решает и хорошо!

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

удачи.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.03.2009, 08:09   #15
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

задача решена, себе ничего доказать не хочу пять элементов найти никто не просит - смекаете? что-то как-то у вас много слишком мыслей в слух

Последний раз редактировалось capta1n; 22.03.2009 в 08:12.
capta1n вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PHP: использование элемента массива как массива Sudia Помощь студентам 1 20.02.2009 20:48
Удаление элемента из массива Ozerich PHP 10 14.02.2009 02:21
Удаление элемента динамического массива Dogmat Помощь студентам 6 13.07.2008 14:33
Удаление элемента массива chiffa Общие вопросы Delphi 1 03.01.2008 19:24