|
Так алгоритм банальнейший. :) А продвинутые orderы всякие используют, бо данные все уже давно с баз данных идут. А контролы сами сортируют. :) |
-=Велла=- | |||
|
Я еще методичку даже прочесть не успела ))))) Ну вы пишите там по заданию сортировки, а я тогда ужо красиво все в файлы оформлю, ввод-вывод |
|
напиши пожалуйсто про сортировку. до нее я сам дошел. и сортировку не смог. |
|
А "Программирование интерационных формул для расчета функций"? |
do-do | |||
|
Усе! Совет - используя дебагер прогони код - тогда осознаешь (!!) как всплывает пузырек
Это сообщение отредактировал do-do - 03-04-2008 - 10:32 |
mvf23 | |||||||
|
если бы я был преподавателем по поводу этой программы я бы вынес такой вердикт: 1) самый главный косяк - не понято задание:
Метод слияния - это когда из двух и более упорядоченных последовательностей собирают одну. Гугли, или читай методичку (Стр. 3. скана) Вывод: решена только половина задания. Оценка не выше "трёх" 2) использовано процедурное программирование... А мы его не изучали. Вывод: писал не сам. Значит будем оценивать того программиста, которой это написал в три раза строже... 3) за счет проверок корректности очень усложнены операции ввода-вывода. Этого не требовалось, мы этого не изучали. Вывод: писал не сам. 4) не совсем корректное использование процедурного программирования. Логически разные задачи выполняются в одной процедуре. Смысл процедур в их универсальности, в возможности их многократного использования. Если я попытаюсь отсортировать массив, используя указанные процедуры - то мне обязательно придется выводить какие-то данные на экран. Если я захочу считать файл, то мне придется задать его имя константой, задать два массива с определенными именами и т.п. Вывод: процедурное программирования использовано неверно. 5) каментоф много, но форматирование кода "хромает". 3 оператора в одной строке - явный перебор. Плюс помесь CamelCase, AllCaps и всех маленьких букв, хоть это и паскаль, но хороший программист должен придерживаться одного стиля... Вывод: низачод. На пересдачу. |
do-do | |||
|
Как грится НАХ. Делал на коленке, больше времени ушло на шапку. Если надо СЛИТЬ 2а упорядоченных массива в один B - сливаешь после выполнения 2ой процедуры сортировки (оба столбца УЖЕ отсортированы) всего то...Т.е. делаешь процедуру Swap2Array - например, и применяешь (массив то глобальный) после 2х предыдущих сортировок. К божескому виду пусть соискатель приводит.... я вообще хотел все через любимые динамические массивы сделать.... (универсально в высшей степени), но судя по первой лабе... им этого не нужно :) Методички пущай студенты читают - оно полезнее, я ток первый лист глянул, как оформлять лабу :) Главное робит прожка, простые ошибки ловит. Кому надо, думаю трансформирует (а лучше напишет новую) по своему вкусу (кстати, в этом случае процедуры очень полезны) P.S. Методически правильнее эту задачу решать с помощью ObjectPascal (его расширения в Pascal 7) Тут заводим метод, сортировка одномерного массива, сортировка многомерного.... и проч. понятнее было бы по любому Это сообщение отредактировал do-do - 03-04-2008 - 16:13 |
mvf23 | |||
|
Да ну... Имхо, все это "от лукавого": имхо линейный, процедурный или объектый стиль программирования - это вовсе не главное, в такой задаче... Главное - это сортировкам научить. Дональд Кнут считаейтся одним из наиболее выдающихся программистов 20го века, просто потому что он алгоритмы правильные знает и умеет придумывать. При этом я совсем не уверен - знаком ли он со всеми премудростями объектного программирования. Думаю если бы тебя сразу вгрузили классами, шаблонами, инкасуляциями, сложными наследованиями, друзьями класса, абстрактными методами, публичными и приватными членами класса и прочими премудростями объектного программирования - то напрочь бы отбили все желание программировать :) Так что МЕТОДИЧЕСКИ, с точки зрения методики преподавания - все правильно. Так что всему свое время. Для меня например нет никакой разницы - написать такую программу с использованием средств объектного программирования или без него, она же простенькая совсем. Городить тут классы, процедуры и т.п. имхо только код удлинять :) А использовать тут динамические массивы - вообще изврат. 50% кода будет посвящено обслуживанию динамических массивов. Работать будет медленнее, да и вообще непонятно зачем оно нужно, если максимальный размер массива - 11 элементов. :) |
do-do | |||
|
Когда я вкурил Объектный Паскаль - а это было, ну шоб не соврать совсем году так в 92-93 (тогда еще Борланд распродавала за смешные бабки дистрибутивы семерки) МНЕ ОН ОДНОЗНАЧНО был понятнее, чем просто линейный. Но паскаль я много лет уж не пользую - пришлось вспомнить :) Хотя конечно, шоб зачет получить - делать надо проще и быстрее (а чего быстрее списать уже готовую прогу :) ) Я бы челу не Кнута советовал почитать (будет он с mix разбираться :)? ) а книжку Жемчужины программирования. Джон Бентли Там и сортировка есть и оптимизация :) |
mvf23 | |||
|
Ну ладно уж, так и быть... Потратил 25 минут личного времени. Чтобы преподаватель(ница) был(а) довольна за основу взял пример из методички. Вообще оценивая строго я бы за этот пример из методички "пятерку" бы не поставил. В частности можешь передать своему преподавателю, что использование меток и операторов GOTO - дурной тон. Хотя лучше не стоит, а то ещё расстроится :) Короче преподаватель всегда прав, так что пусть наслаждается...
|
|
Кнута не читать??? Богохульники!
|
mvf23 | |||
|
Кстати в подтверждение этих слов - если убрать комменты и форматирование, то мой вариант программы (без процедур, функций, и повторного использования кода) получился даже чуть-чуть покороче :) Байт на 40... :) А если тут объектов расплодить "в лучших традициях" - то код вырастет ещё процентов на 20-25. А если ещё и динамические массивы устроить - то и того больше... Результат: почти в два раза больше кода, а результат - такой же... Вывод: чтобы не создавать себе лишней работы - нужно соразмерять сложность задачи и сложность способов её решения. Это сообщение отредактировал mvf23 - 03-04-2008 - 21:19 |
-=Велла=- | |
|
vano-m должен mvf23 уже вагон пива! )))))
|
do-do | |||
|
Я хоть первую страницу методички прочел :) Там черным по белому - в программе ДОЛЖНЫ быть проверки на возможные ошибки :) А ежли файл D:\LAB1\DATI.TXT потерли ? А мож в DATI.TXT ошибки в формате данных :)? |
|
Методичку не четал, бо на жопорезе. Но в данном случае do-do немножко прав. Алгоритмизация и красота кода на первом этапе не важна. Впрочем, она не важна и в дальнейшем, если не умеешь реагировать "на дурака" и думать про то, что может сделать дурак. mvf23, знаешь, чем в своей основной массе русский софт отличается от западного? Наш сделан программистами для красоты, а там для людей. У меня банальнейший (правда без MFC) визард на четыре степа (суммарно на шесть) занимает не меньше трех дней. А нарисовать GINA proxy 6 часов. .... Это сообщение отредактировал JeyLo - 04-04-2008 - 10:55 |
mvf23 | |||||
|
Угу-угу :) Согласен и с тобой и с JeyLo в этом отношении. В случае с описанной задачей и проверками корректности ввода-вывода предложенными do-do - все это конечно здорово, но не входит в стандартные средства Паскаля (определенные Н.Виртом и позже в ISO 7185)... А использовать какие-то компилятор-зависимые возможности - конечно неплохо, но нет никаких гарантий, что в ВУЗе vano-m не используют какой-нибудь GNU Pascal в режиме ANSI ISO... В частности, поэтому и не учат обычно таким вещам... Вообще же проблема не только в этом. На практике - многим студентам не математических специальностей даже что такое матрица, и что есть пузырек понять сложно, поэтому не до подобных тонкостей, лишь бы хоть что-то усвоили... Вы сначала попробуйте пообщаться с реальными студентами не математических специальностей, а потом поговорим... К слову, даже говоря о потенциальных ошибках, которые могут возникнуть при использовании Turbo Pascal - все равно do-do обработал не все ошибки :) Например Range Checking... Например вывод на печать длинных чисел. И т.п. Высматривать влом. 2 JeyLo: переварил твой код с трудом :) Я последнее время только на скриптовых языках пишу - или кроссплатформенное или под веб. Поэтому такие нэйтив-вин-апи штуки перевариваю со скрипом... Долго думал зачем тебе вагина-прокси ('gina - это слэнговое vagina). Пришлось погуглить, зато теперь я знаю что это не только вагина, но и "Graphical identification and authentication"... :) Короче - глядя на подобный код радуюсь, что не пишу под винду :) Самое ужасное в этом то, что выйдет какая-нить Vienna, чуть-чуть изменится API, и превед... И такая аккуратно написанная обработка всяких интересных событий вроде блокировки рабочей станции - станет работать через зад... Впрочем речь не об этом. С самой мыслью о том, что нужно предусматривать все грабли - согласен. Но требовать этого от студентов нематематических специальностей - имхо, в меру бессмысленно...Особенно с учетом того, что все грабли даже очень опытный программист предусмотреть может не всегда :/
При обучении в первую очередь важна алгоритмизация. Ведь обработка ошибок по сути тоже представляет собой некий алгоритм. Не понимая что есть алгоритм, и как работают банальные вещи, вряд ли возможно обрабатывать ошибки. ИМХО, ребенок СНАЧАЛА должен научиться ходить, а уже потом научиться НЕ запинаться за мелкие препятствия... Боюсь если начать с того, что объяснить, что есть препятствия, за которые не надо запинаться - то ребенок с перепугу не пойдет вообще... Зато ему достаточно запнуться один раз и упасть больно на коленку чтобы научиться смотреть под ноги. В общем do-do, JeyLo я с вами согласен, что эти вещи нужны и важны, но вы рассуждаете как "матерые программисты", думаю вам действительно стоит пообщаться с живыми студентами (не программистами) изучающими информатику, чтобы стать чуточку "ближе к народу"... :) Это сообщение отредактировал mvf23 - 04-04-2008 - 06:38 |
do-do | |||||||
|
Я конечно не Вирт, а так просто do-do, но даж я прочел :) Курс называется у человека программирование на TURBO PASCAL(e), конечно там может и 3я версия рулит :) НО IMHO все ж по умолчанию 7ка :) И зная традиции, историю и наблюдая компы в учебных классах скажу - там нету даже free pascal(я) (котрый кстати имеет режим совместимости с турбиной) какие нах.. GNU :) чего препод лет 20 взад научился то и говорит
Угу, а откуда длинные целые вылезут ? Проверка идет на соответствие INTEGER - при загрузке массива. Или ДА или Нет. Хотя возможно восав число long...(забыл как оно в паскале дальше) он просто отбросив лишние байты присвоит нечто.... Гм...проверил - прога отследила ЭТУ ошибку (все ж паскаль более строг к соответствию типов :) чем С)
Сам преподаю...общаюсь..да и местный зачинатель топика то ж студент :) |
|
Действительно! mvf23 огромное спасибо! Выручаете бедного студента как можете! Во вторник попробую сдаться. ЗЫ "студент гр. sxn.today" это мощно))) |
mvf23 | |||||||||||
|
ну наверное не прога отследила, а дебаггер в IDE.... :) А прога runtime error с каким-нибудь мутным номером наверное выдала... Кстати, ровно точно также она поступает, если оставить не обработанными ошибки ввода-вывода...
ну вот давай и спросим у него, что он думает по поводу объектного программирования, динамических массивов и обработки ошибок ввода-вывода... :)
Гм... Не видел. Где это написано?
в том-то и бонус... Когда учишь стандарту языка - можешь быть уверен в том, что и 20 лет назад программа компилировалась, и что через 20 лет она будет нормально компилироваться. А конкретные компиляторы могут рождаться и умирать, принося и унося новые багофичи...
Угу-угу... Кстати - попробуй всё же разобраться как оно работает, чтоб тебе польза была не только для зачетки, но и для общего развития... :) Будут вопросы - задавай, не стесняйся, а то тут "матерые программисты" вместо того, чтоб объяснять по-человечески, какие-то эзотерические споры ведут от безделья :) Это сообщение отредактировал mvf23 - 04-04-2008 - 13:59 |
do-do | |||
|
Неа ... IDE не пользуюсь :) Far+компилятор командной строки. Обработчик ошибок (мой) штатно сработал - указал строчку в которой ошибка :) |
|
спасибо. да я впринципе с 1 по 4 лабу как текст увидел, так сразу и суть и алгоритм понял. пятую еще пока пытаюсь понять, до перестановок уже все въехал. до конца семестра остались две лабы... потом экзамен. ээх. уже начал готовится... |
|
Уррра! пятая лаба здана! осталось написать подпрограммы. ВСЕМ огромное спасибо! |
|
Народ. Понимаю, конечно, что достал тут уже всех. Но мну застопорился на последней лабе. Из зп чего не дают написать курсовую. Помогите в последний разок , а?
|
do-do | |||
|
Ты как царь горы понимаешь шо написал, для тех кто в танке разжуй Ху из Что P.S. Кого достал, те не ответят - так шо брось, чай не институтка. Сермягу излагай |
|
Вобщем тут такое дело... Прочитать в одномерный массив строк (длинной по 74 символа) первые 73 символа каждой строк файла DATF.TXT (файл на серваке в универе). Используя функцию, заполнить выходной одномерный массив (элементы - строки, длинной восемь символов) числами. Процедуры 1) Составить строковую функцию, выбирающую из строки первое число - первую подстроку между пробелами, заменяя при выборе в исходной строке выбранные символы пробелами. 2) Аечать выходного массива по пять чисел в строке выполнить с помощю процедуры. M<=10 М- кол-во строк |
Рекомендуем почитать также топики: Dungeon Siege 2 18 Wheels Of Steel HAULIN ЕДКИЙ ЗАПАХ интернет на 2 компа мфу |