-=Велла=- | ||||||||||
Странно. До того как я исправила с фалом, все у меня работало и правильно считало. Я проверяла. А вот когда исправляла, видать чо-то упустила.. Но сдано, вот и славно ))) |
||||||||||
vano-m | ||||||||||
Памагёте еще решить? | ||||||||||
-=Велла=- | ||||||||||
Смотря чо там у тя за тема? :) | ||||||||||
vano-m | ||||||||||
Двумерные массивы (сортировка и перестановка) :) | ||||||||||
do-do | ||||||||||
А в зачетке чье имя буит ? Твое иль Веллы :)? (опять поди в привате ей методичку кидаешь :) ) Вообще то формулировка расплывчита..ты Конкретно формулируй шо надо, на чем |
||||||||||
JeyLo | ||||||||||
А на си можно? :) | ||||||||||
-=Велла=- | ||||||||||
Давай задание и методичку.... И на когда... Задание давай сюда в тему, мож все вместе напишем чего ))) JeyLo, наверное, низзя... Бо до Си еще не дошли :) Как только все лабы на Паскале переделаем, будешь на С писать ![]() |
||||||||||
vano-m | ||||||||||
Лабораторная №5. Работп с двумерными массивами. Сортировки и перестановки в массиве. Задание Составить программу для работы с двумерным массивом заданного типа, но с произвольными размерами (по колличеству строк и столбцов) в пределах отведенного под массив места. Заполнить массив данными из имеющегося текстового файла, распечатать исзодный массив в выводной текстовый файл. Провести обработку массива в соответствии с заданием, результаты работы вывести в тот же выводной файл. Вариант №29 Заполнить двумерный массив А (Мх2) элементов числами из текстового файла. Распечатать массив А. Далее каждый столбец массива А упорядочить по возрастанию обменом, затем заполнить по возрастанию одномерный массив В (длинной 2М элементов) методом слияния из обоих столбцов массива А. Оба массива распечатать после сортировок. Предельное значение числа строк 11. Тип данных - целые. ДАлее отсканированная методичка) с описанием и разбором подобного варианта. Получить код этого сета ![]() ![]() ![]() ![]() ![]() ![]() |
||||||||||
-=Велла=- | ||||||||||
На когда? Тут надо время на осмысление (ну и еще, чтоб дети мои спали хорошо) ![]() |
||||||||||
do-do | ||||||||||
"обменом" то бишь метод пузырька ? | ||||||||||
mvf23 | ||||||||||
угу. глянь на 3-ей странице скана. |
||||||||||
vano-m | ||||||||||
ну неделя есть вобщем. щас в срочном порядке делаю лабы по физике атмосферы. в субботу пойду инфу здавать))) |
||||||||||
-=Велла=- | ||||||||||
засада... я сортировку не умею... еще в универе что-то не пошло... ((((((( соррьки.... | ||||||||||
JeyLo | ||||||||||
|
||||||||||
mvf23 | ||||||||||
Гм... Ты же вроде не пишешь на паскале? :) Али стырил откуда-нить? :) Вообще очень аккуратный и лаконичный вариант пузырька, смотреть приятно. Аккуратный пузырек - весчь редкая, бо начинающие порой умудряются нагородить огородов даже на пузырьке, а продвинутые пузырек не юзают (ну разве что под страшными пытками) :) -=Велла=-, сортировка слиянием (вторая половинка задания) нужна? |
||||||||||
JeyLo | ||||||||||
Так алгоритм банальнейший. :) А продвинутые orderы всякие используют, бо данные все уже давно с баз данных идут. А контролы сами сортируют. :) |
||||||||||
-=Велла=- | ||||||||||
Я еще методичку даже прочесть не успела ))))) Ну вы пишите там по заданию сортировки, а я тогда ужо красиво все в файлы оформлю, ввод-вывод ![]() |
||||||||||
vano-m | ||||||||||
напиши пожалуйсто про сортировку. до нее я сам дошел. и сортировку не смог. |
||||||||||
vano-m | ||||||||||
А "Программирование интерационных формул для расчета функций"? |
||||||||||
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 - дурной тон. Хотя лучше не стоит, а то ещё расстроится :) Короче преподаватель всегда прав, так что пусть наслаждается...
|
||||||||||
JeyLo | ||||||||||
Кнута не читать??? Богохульники! | ||||||||||
mvf23 | ||||||||||
Кстати в подтверждение этих слов - если убрать комменты и форматирование, то мой вариант программы (без процедур, функций, и повторного использования кода) получился даже чуть-чуть покороче :) Байт на 40... :) А если тут объектов расплодить "в лучших традициях" - то код вырастет ещё процентов на 20-25. А если ещё и динамические массивы устроить - то и того больше... Результат: почти в два раза больше кода, а результат - такой же... Вывод: чтобы не создавать себе лишней работы - нужно соразмерять сложность задачи и сложность способов её решения. Это сообщение отредактировал mvf23 - 03-04-2008 - 21:19 |
||||||||||
-=Велла=- | ||||||||||
vano-m должен mvf23 уже вагон пива! ))))) | ||||||||||
do-do | ||||||||||
Я хоть первую страницу методички прочел :) Там черным по белому - в программе ДОЛЖНЫ быть проверки на возможные ошибки :) А ежли файл D:\LAB1\DATI.TXT потерли ? А мож в DATI.TXT ошибки в формате данных :)? |
||||||||||
JeyLo | ||||||||||
Методичку не четал, бо на жопорезе. Но в данном случае 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...(забыл как оно в паскале дальше) он просто отбросив лишние байты присвоит нечто.... Гм...проверил - прога отследила ЭТУ ошибку (все ж паскаль более строг к соответствию типов :) чем С)
Сам преподаю...общаюсь..да и местный зачинатель топика то ж студент :) |
||||||||||
vano-m | ||||||||||
Действительно! mvf23 огромное спасибо! Выручаете бедного студента как можете! Во вторник попробую сдаться. ЗЫ "студент гр. sexnarod.ru" это мощно))) |
||||||||||
mvf23 | ||||||||||
ну наверное не прога отследила, а дебаггер в IDE.... :) А прога runtime error с каким-нибудь мутным номером наверное выдала... Кстати, ровно точно также она поступает, если оставить не обработанными ошибки ввода-вывода...
ну вот давай и спросим у него, что он думает по поводу объектного программирования, динамических массивов и обработки ошибок ввода-вывода... :)
Гм... Не видел. Где это написано?
в том-то и бонус... Когда учишь стандарту языка - можешь быть уверен в том, что и 20 лет назад программа компилировалась, и что через 20 лет она будет нормально компилироваться. А конкретные компиляторы могут рождаться и умирать, принося и унося новые багофичи...
Угу-угу... Кстати - попробуй всё же разобраться как оно работает, чтоб тебе польза была не только для зачетки, но и для общего развития... :) Будут вопросы - задавай, не стесняйся, а то тут "матерые программисты" вместо того, чтоб объяснять по-человечески, какие-то эзотерические споры ведут от безделья :) Это сообщение отредактировал mvf23 - 04-04-2008 - 13:59 |
||||||||||
do-do | ||||||||||
Неа ... IDE не пользуюсь :) Far+компилятор командной строки. Обработчик ошибок (мой) штатно сработал - указал строчку в которой ошибка :) |