Народ, Помогите, ЗА СЕКСО
DELETED
Акула пера
4/4/2008, 12:05:18 AM
Кнута не читать??? Богохульники!
mvf23
Профессионал
4/4/2008, 1:12:04 AM
(mvf23 @ 03.04.2008 - время: 16:43) Городить тут классы, процедуры и т.п. имхо только код удлинять :)
Кстати в подтверждение этих слов - если убрать комменты и форматирование, то мой вариант программы (без процедур, функций, и повторного использования кода) получился даже чуть-чуть покороче :) Байт на 40... :)
А если тут объектов расплодить "в лучших традициях" - то код вырастет ещё процентов на 20-25. А если ещё и динамические массивы устроить - то и того больше... Результат: почти в два раза больше кода, а результат - такой же...
Вывод: чтобы не создавать себе лишней работы - нужно соразмерять сложность задачи и сложность способов её решения.
Кстати в подтверждение этих слов - если убрать комменты и форматирование, то мой вариант программы (без процедур, функций, и повторного использования кода) получился даже чуть-чуть покороче :) Байт на 40... :)
А если тут объектов расплодить "в лучших традициях" - то код вырастет ещё процентов на 20-25. А если ещё и динамические массивы устроить - то и того больше... Результат: почти в два раза больше кода, а результат - такой же...
Вывод: чтобы не создавать себе лишней работы - нужно соразмерять сложность задачи и сложность способов её решения.
-=Велла=-
Акула пера
4/4/2008, 2:01:39 AM
vano-m должен mvf23 уже вагон пива! )))))
do-do
Мастер
4/4/2008, 4:14:49 AM
(mvf23 @ 03.04.2008 - время: 21:12)
Кстати в подтверждение этих слов -
Я хоть первую страницу методички прочел :) Там черным по белому - в программе ДОЛЖНЫ быть проверки на возможные ошибки :)
А ежли файл D:\LAB1\DATI.TXT потерли ? А мож в DATI.TXT ошибки в формате данных :)?
Кстати в подтверждение этих слов -
Я хоть первую страницу методички прочел :) Там черным по белому - в программе ДОЛЖНЫ быть проверки на возможные ошибки :)
А ежли файл D:\LAB1\DATI.TXT потерли ? А мож в DATI.TXT ошибки в формате данных :)?
DELETED
Акула пера
4/4/2008, 4:46:11 AM
Методичку не четал, бо на жопорезе. Но в данном случае do-do немножко прав. Алгоритмизация и красота кода на первом этапе не важна. Впрочем, она не важна и в дальнейшем, если не умеешь реагировать "на дурака" и думать про то, что может сделать дурак.
mvf23, знаешь, чем в своей основной массе русский софт отличается от западного? Наш сделан программистами для красоты, а там для людей. У меня банальнейший (правда без MFC) визард на четыре степа (суммарно на шесть) занимает не меньше трех дней. А нарисовать GINA proxy 6 часов.
....
mvf23, знаешь, чем в своей основной массе русский софт отличается от западного? Наш сделан программистами для красоты, а там для людей. У меня банальнейший (правда без MFC) визард на четыре степа (суммарно на шесть) занимает не меньше трех дней. А нарисовать GINA proxy 6 часов.
....
mvf23
Профессионал
4/4/2008, 9:45:12 AM
(do-do @ 04.04.2008 - время: 00:14) Там черным по белому - в программе ДОЛЖНЫ быть проверки на возможные ошибки :)
А ежли файл D:\LAB1\DATI.TXT потерли ? А мож в DATI.TXT ошибки в формате данных :)?
Угу-угу :) Согласен и с тобой и с 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, и превед... И такая аккуратно написанная обработка всяких интересных событий вроде блокировки рабочей станции - станет работать через зад...
Впрочем речь не об этом. С самой мыслью о том, что нужно предусматривать все грабли - согласен. Но требовать этого от студентов нематематических специальностей - имхо, в меру бессмысленно...Особенно с учетом того, что все грабли даже очень опытный программист предусмотреть может не всегда :/
(JeyLo @ 04.04.2008 - время: 00:46) Алгоритмизация и красота кода на первом этапе не важна. Впрочем, она не важна и в дальнейшем, если не умеешь реагировать "на дурака" и думать про то, что может сделать дурак.
При обучении в первую очередь важна алгоритмизация. Ведь обработка ошибок по сути тоже представляет собой некий алгоритм. Не понимая что есть алгоритм, и как работают банальные вещи, вряд ли возможно обрабатывать ошибки.
ИМХО, ребенок СНАЧАЛА должен научиться ходить, а уже потом научиться НЕ запинаться за мелкие препятствия... Боюсь если начать с того, что объяснить, что есть препятствия, за которые не надо запинаться - то ребенок с перепугу не пойдет вообще... Зато ему достаточно запнуться один раз и упасть больно на коленку чтобы научиться смотреть под ноги.
В общем do-do, JeyLo я с вами согласен, что эти вещи нужны и важны, но вы рассуждаете как "матерые программисты", думаю вам действительно стоит пообщаться с живыми студентами (не программистами) изучающими информатику, чтобы стать чуточку "ближе к народу"... :)
А ежли файл D:\LAB1\DATI.TXT потерли ? А мож в DATI.TXT ошибки в формате данных :)?
Угу-угу :) Согласен и с тобой и с 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, и превед... И такая аккуратно написанная обработка всяких интересных событий вроде блокировки рабочей станции - станет работать через зад...
Впрочем речь не об этом. С самой мыслью о том, что нужно предусматривать все грабли - согласен. Но требовать этого от студентов нематематических специальностей - имхо, в меру бессмысленно...Особенно с учетом того, что все грабли даже очень опытный программист предусмотреть может не всегда :/
(JeyLo @ 04.04.2008 - время: 00:46) Алгоритмизация и красота кода на первом этапе не важна. Впрочем, она не важна и в дальнейшем, если не умеешь реагировать "на дурака" и думать про то, что может сделать дурак.
При обучении в первую очередь важна алгоритмизация. Ведь обработка ошибок по сути тоже представляет собой некий алгоритм. Не понимая что есть алгоритм, и как работают банальные вещи, вряд ли возможно обрабатывать ошибки.
ИМХО, ребенок СНАЧАЛА должен научиться ходить, а уже потом научиться НЕ запинаться за мелкие препятствия... Боюсь если начать с того, что объяснить, что есть препятствия, за которые не надо запинаться - то ребенок с перепугу не пойдет вообще... Зато ему достаточно запнуться один раз и упасть больно на коленку чтобы научиться смотреть под ноги.
В общем do-do, JeyLo я с вами согласен, что эти вещи нужны и важны, но вы рассуждаете как "матерые программисты", думаю вам действительно стоит пообщаться с живыми студентами (не программистами) изучающими информатику, чтобы стать чуточку "ближе к народу"... :)
do-do
Мастер
4/4/2008, 2:34:45 PM
(mvf23 @ 04.04.2008 - время: 05:45) А использовать какие-то компилятор-зависимые возможности - конечно неплохо, но нет никаких гарантий, что в ВУЗе vano-m не используют какой-нибудь GNU Pascal в режиме ANSI ISO...
Я конечно не Вирт, а так просто do-do, но даж я прочел :) Курс называется у человека программирование на TURBO PASCAL(e), конечно там может и 3я версия рулит :) НО IMHO все ж по умолчанию 7ка :)
И зная традиции, историю и наблюдая компы в учебных классах скажу - там нету даже free pascal(я) (котрый кстати имеет режим совместимости с турбиной) какие нах.. GNU :) чего препод лет 20 взад научился то и говорит
все равно do-do обработал не все ошибки :) Например Range Checking... Например вывод на печать длинных чисел. И т.п. Высматривать влом.
Угу, а откуда длинные целые вылезут ? Проверка идет на соответствие INTEGER - при загрузке массива. Или ДА или Нет. Хотя возможно восав число long...(забыл как оно в паскале дальше) он просто отбросив лишние байты присвоит нечто.... Гм...проверил - прога отследила ЭТУ ошибку (все ж паскаль более строг к соответствию типов :) чем С)
В частности, поэтому и не учат обычно таким вещам... Вообще же проблема не только в этом. На практике - многим студентам не математических специальностей даже что такое матрица, и что есть пузырек понять сложно, поэтому не до подобных тонкостей, лишь бы хоть что-то усвоили... Вы сначала попробуйте пообщаться с реальными студентами не математических специальностей, а потом поговорим...
Сам преподаю...общаюсь..да и местный зачинатель топика то ж студент :)
Я конечно не Вирт, а так просто do-do, но даж я прочел :) Курс называется у человека программирование на TURBO PASCAL(e), конечно там может и 3я версия рулит :) НО IMHO все ж по умолчанию 7ка :)
И зная традиции, историю и наблюдая компы в учебных классах скажу - там нету даже free pascal(я) (котрый кстати имеет режим совместимости с турбиной) какие нах.. GNU :) чего препод лет 20 взад научился то и говорит
все равно do-do обработал не все ошибки :) Например Range Checking... Например вывод на печать длинных чисел. И т.п. Высматривать влом.
Угу, а откуда длинные целые вылезут ? Проверка идет на соответствие INTEGER - при загрузке массива. Или ДА или Нет. Хотя возможно восав число long...(забыл как оно в паскале дальше) он просто отбросив лишние байты присвоит нечто.... Гм...проверил - прога отследила ЭТУ ошибку (все ж паскаль более строг к соответствию типов :) чем С)
В частности, поэтому и не учат обычно таким вещам... Вообще же проблема не только в этом. На практике - многим студентам не математических специальностей даже что такое матрица, и что есть пузырек понять сложно, поэтому не до подобных тонкостей, лишь бы хоть что-то усвоили... Вы сначала попробуйте пообщаться с реальными студентами не математических специальностей, а потом поговорим...
Сам преподаю...общаюсь..да и местный зачинатель топика то ж студент :)
DELETED
Акула пера
4/4/2008, 3:32:04 PM
(-=Велла=- @ 03.04.2008 - время: 22:01) vano-m должен mvf23 уже вагон пива! )))))
Действительно! mvf23 огромное спасибо! Выручаете бедного студента как можете!
Во вторник попробую сдаться.
ЗЫ "студент гр. sxn.io" это мощно)))
Действительно! mvf23 огромное спасибо! Выручаете бедного студента как можете!
Во вторник попробую сдаться.
ЗЫ "студент гр. sxn.io" это мощно)))
mvf23
Профессионал
4/4/2008, 5:46:40 PM
(do-do @ 04.04.2008 - время: 10:34)Гм...проверил - прога отследила ЭТУ ошибку (все ж паскаль более строг к соответствию типов :) чем С)
ну наверное не прога отследила, а дебаггер в IDE.... :) А прога runtime error с каким-нибудь мутным номером наверное выдала... Кстати, ровно точно также она поступает, если оставить не обработанными ошибки ввода-вывода...
(do-do @ 04.04.2008 - время: 10:34)Сам преподаю...общаюсь..да и местный зачинатель топика то ж студент :)
ну вот давай и спросим у него, что он думает по поводу объектного программирования, динамических массивов и обработки ошибок ввода-вывода... :)
(do-do @ 04.04.2008 - время: 10:34)Курс называется у человека программирование на TURBO PASCAL(e)
Гм... Не видел. Где это написано?
(do-do @ 04.04.2008 - время: 10:34)чего препод лет 20 взад научился то и говорит
в том-то и бонус... Когда учишь стандарту языка - можешь быть уверен в том, что и 20 лет назад программа компилировалась, и что через 20 лет она будет нормально компилироваться. А конкретные компиляторы могут рождаться и умирать, принося и унося новые багофичи...
(vano-m @ 04.04.2008 - время: 11:32)Действительно! mvf23 огромное спасибо! Выручаете бедного студента как можете!
Во вторник попробую сдаться.
ЗЫ "студент гр. sxn.io" это мощно)))
Угу-угу... Кстати - попробуй всё же разобраться как оно работает, чтоб тебе польза была не только для зачетки, но и для общего развития... :)
Будут вопросы - задавай, не стесняйся, а то тут "матерые программисты" вместо того, чтоб объяснять по-человечески, какие-то эзотерические споры ведут от безделья :)
ну наверное не прога отследила, а дебаггер в IDE.... :) А прога runtime error с каким-нибудь мутным номером наверное выдала... Кстати, ровно точно также она поступает, если оставить не обработанными ошибки ввода-вывода...
(do-do @ 04.04.2008 - время: 10:34)Сам преподаю...общаюсь..да и местный зачинатель топика то ж студент :)
ну вот давай и спросим у него, что он думает по поводу объектного программирования, динамических массивов и обработки ошибок ввода-вывода... :)
(do-do @ 04.04.2008 - время: 10:34)Курс называется у человека программирование на TURBO PASCAL(e)
Гм... Не видел. Где это написано?
(do-do @ 04.04.2008 - время: 10:34)чего препод лет 20 взад научился то и говорит
в том-то и бонус... Когда учишь стандарту языка - можешь быть уверен в том, что и 20 лет назад программа компилировалась, и что через 20 лет она будет нормально компилироваться. А конкретные компиляторы могут рождаться и умирать, принося и унося новые багофичи...
(vano-m @ 04.04.2008 - время: 11:32)Действительно! mvf23 огромное спасибо! Выручаете бедного студента как можете!
Во вторник попробую сдаться.
ЗЫ "студент гр. sxn.io" это мощно)))
Угу-угу... Кстати - попробуй всё же разобраться как оно работает, чтоб тебе польза была не только для зачетки, но и для общего развития... :)
Будут вопросы - задавай, не стесняйся, а то тут "матерые программисты" вместо того, чтоб объяснять по-человечески, какие-то эзотерические споры ведут от безделья :)
do-do
Мастер
4/4/2008, 9:28:33 PM
(mvf23 @ 04.04.2008 - время: 13:46)
ну наверное не прога отследила, а дебаггер в IDE.... :) А прога runtime error с каким-нибудь мутным номером наверное выдала...
Неа ...
IDE не пользуюсь :) Far+компилятор командной строки. Обработчик ошибок (мой) штатно сработал - указал строчку в которой ошибка :)
ну наверное не прога отследила, а дебаггер в IDE.... :) А прога runtime error с каким-нибудь мутным номером наверное выдала...
Неа ...
IDE не пользуюсь :) Far+компилятор командной строки. Обработчик ошибок (мой) штатно сработал - указал строчку в которой ошибка :)
DELETED
Акула пера
4/6/2008, 2:41:58 AM
(mvf23 @ 04.04.2008 - время: 13:46)
Угу-угу... Кстати - попробуй всё же разобраться как оно работает, чтоб тебе польза была не только для зачетки, но и для общего развития... :)
Будут вопросы - задавай, не стесняйся, а то тут "матерые программисты" вместо того, чтоб объяснять по-человечески, какие-то эзотерические споры ведут от безделья :)
спасибо. да я впринципе с 1 по 4 лабу как текст увидел, так сразу и суть и алгоритм понял. пятую еще пока пытаюсь понять, до перестановок уже все въехал. до конца семестра остались две лабы... потом экзамен. ээх. уже начал готовится...
Угу-угу... Кстати - попробуй всё же разобраться как оно работает, чтоб тебе польза была не только для зачетки, но и для общего развития... :)
Будут вопросы - задавай, не стесняйся, а то тут "матерые программисты" вместо того, чтоб объяснять по-человечески, какие-то эзотерические споры ведут от безделья :)
спасибо. да я впринципе с 1 по 4 лабу как текст увидел, так сразу и суть и алгоритм понял. пятую еще пока пытаюсь понять, до перестановок уже все въехал. до конца семестра остались две лабы... потом экзамен. ээх. уже начал готовится...
DELETED
Акула пера
4/9/2008, 11:57:29 PM
Уррра! пятая лаба здана! осталось написать подпрограммы.
ВСЕМ огромное спасибо!
ВСЕМ огромное спасибо!
DELETED
Акула пера
4/25/2008, 10:38:10 PM
Народ. Понимаю, конечно, что достал тут уже всех. Но мну застопорился на последней лабе. Из зп чего не дают написать курсовую. Помогите в последний разок , а?
do-do
Мастер
4/26/2008, 12:00:40 AM
Но мну застопорился на последней лабе
Ты как царь горы понимаешь шо написал, для тех кто в танке разжуй Ху из Что
P.S. Кого достал, те не ответят - так шо брось, чай не институтка. Сермягу излагай
Ты как царь горы понимаешь шо написал, для тех кто в танке разжуй Ху из Что
P.S. Кого достал, те не ответят - так шо брось, чай не институтка. Сермягу излагай
DELETED
Акула пера
4/26/2008, 9:57:46 PM
Вобщем тут такое дело...
Прочитать в одномерный массив строк (длинной по 74 символа) первые 73 символа каждой строк файла DATF.TXT (файл на серваке в универе). Используя функцию, заполнить выходной одномерный массив (элементы - строки, длинной восемь символов) числами.
Процедуры
1) Составить строковую функцию, выбирающую из строки первое число - первую подстроку между пробелами, заменяя при выборе в исходной строке выбранные символы пробелами.
2) Аечать выходного массива по пять чисел в строке выполнить с помощю процедуры.
M<=10 М- кол-во строк
Прочитать в одномерный массив строк (длинной по 74 символа) первые 73 символа каждой строк файла DATF.TXT (файл на серваке в универе). Используя функцию, заполнить выходной одномерный массив (элементы - строки, длинной восемь символов) числами.
Процедуры
1) Составить строковую функцию, выбирающую из строки первое число - первую подстроку между пробелами, заменяя при выборе в исходной строке выбранные символы пробелами.
2) Аечать выходного массива по пять чисел в строке выполнить с помощю процедуры.
M<=10 М- кол-во строк
do-do
Мастер
4/26/2008, 11:21:56 PM
Ну так в чем затык то ?
Ты ведь можешь сравнивать в IF значение букв и если символ больше 9 или меньше 0 то это не число...дальше находишь первую позицию числа и в цикле ищешь пробел (или букву?)
Ты ведь можешь сравнивать в IF значение букв и если символ больше 9 или меньше 0 то это не число...дальше находишь первую позицию числа и в цикле ищешь пробел (или букву?)
DELETED
Акула пера
4/27/2008, 1:36:59 AM
(do-do @ 26.04.2008 - время: 19:21) Ну так в чем затык то ?
Ты ведь можешь сравнивать в IF значение букв и если символ больше 9 или меньше 0 то это не число...дальше находишь первую позицию числа и в цикле ищешь пробел (или букву?)
я ваще не знаю как это написать!.... :'((((((((
Ты ведь можешь сравнивать в IF значение букв и если символ больше 9 или меньше 0 то это не число...дальше находишь первую позицию числа и в цикле ищешь пробел (или букву?)
я ваще не знаю как это написать!.... :'((((((((
DELETED
Акула пера
5/1/2008, 2:21:02 AM
походу попу рвать придеца на этой инфе... тока как бы это так побезболезненей зделсть...
do-do
Мастер
5/1/2008, 9:47:45 PM
Вот очередная мастурбация моего разума
CODE
(***************************[sxn.io]*******************************)
(* *)
(* File : Number-str.pas *)
(* Created: 01/05/2008 *)
(* Reason : работа со строковыми массивами *)
(* Product: нахождение числа в подстроке *)
(* Author : do-do *)
(* Purpose: Прочитать в одномерный массив строк длинной по 74 символа *)
(* первые 73 символа каждой строк файла DATF.TXT . *)
(* Используя функцию, заполнить выходной одномерный массив *)
(* (элементы - строки, длинной восемь символов) числами. *)
(* Процедуры/Функции *)
(* All_Str - функция, выбирает из строки первое число - *)
(* первую подстроку между пробелами, заменяя при выборе в *)
(* исходной строке выбранные символы пробелами. *)
(* prn_str- процедура печати выходного массива по пять чисел в строке*)
(* Проверки на ошибки ввода/вывода не производится *)
(* *)
(* Все числа считаются ЦЕЛЫМИ не ОТРИЦАТЕЛЬНЫМИ!!! *)
(***************************[sxn.io]*******************************)
program number_str;
const
M=10; (* максимальный размер массива *)
MyFileName='datF.txt'; (* файл с тестовым массивом *)
Type
string74=string[74];
string8 =string[8];
Num74=0..74;
element=record
st:string74;
pos1,pos2:Num74;
num:integer;
Len:Num74;
end;
Var
N:1..M; (* Число строк которые нужно считать *)
s: array [1..M] of element;
s1: array [1..M] of string8;
f:text;
procedure init; (* инициализация программы *)
Var i:1..M;
begin
(* обнуление рабочего массива *)
For i:=1 to M DO begin
s[i].st:=''; s[i].pos1:=0; s[i].pos2:=0; s[i].num:=0;s[i].len:=0;s1[i]:='';
end;
writeln;
write('N=');readln(N); (* вводим число считываемых строк *)
Assign(f,MyFileName);
Reset(f);
For i:=1 to N do BEGIN
Readln(f,s[i].st);
s[i].len:=length(s[i].st); (*длина текущей строки *)
END;
Close(f);
end; (* end init *)
function This_num(q:string74):boolean; (*True если цифра*)
begin
This_num:= (q >= '0') AND (q <= '9');
end;
procedure All_Str; (* основная процедура *)
var i:1..M;
j,l:Num74;
stop:boolean;
Code: integer;
function Num_pos(j:Num74;var y:element):boolean;
(*True - если в позиции строки y.str c j число. Тогда в y.pos1 и y.pos2 заносим *)
(* начальную и конечную позицию этого числа *)
(* y.len - уже находится размер строки y.str *)
Var
Flag,quit:boolean;
i:Num74;
begin
Flag:=False;
i:=j;
IF j > 1 then
begin IF y.st[j-1] = ' ' then Flag:=True end Else Flag:=True;
(*начало строки, там то же может быть число*)
IF Flag then
begin
quit:=True;
while (j < y.len) and quit DO begin
Inc(j);
IF Not This_num(y.st[j]) then begin IF y.st[j] =' 'then begin Flag:=True;
quit:=False; y.pos1:=i; y.pos2:=j-1;
end; end;
end;
IF quit and (j=y.len) then begin Flag:=True;y.pos1:=i;y.pos2:=j; end;
end;
Num_pos:=Flag;
end; (*end Num_pos *)
begin (* start All_Str *)
for i:=1 TO N DO begin
j:=0; stop:=False;
while (j <= s[i].len) AND Not stop DO
begin
INC(j);
IF This_num(s[i].st[j]) then stop:=Num_pos(j,s[i]);
end;
IF stop then begin
s1[i]:=Copy(s[i].st,s[i].pos1,s[i].pos2-s[i].pos1+1);
Val(s1[i],s[i].num,Code);
IF Code <> 0 Then begin Writeln('Ошибка преобразования',i);halt(128) end;
For l:=s[i].pos1 to s[i].pos2 do s[i].st[l]:=' '; (*пробелы*)
end;
end;
end; (* end All_Str *)
procedure prn_str;
var
i:1..M;
begin
Writeln('Number printing');
For i:=1 to N DO IF s1[i] <> '' then Write(s1[i]:16);
WriteLn;
Writeln('END');
(*На стандартной консоли (шириной 80 символов) будет 5 чисел в колонке*)
Writeln;
Writeln('String!!!!');
For i:=1 to N do writeln(s[i].st);
end;
BEGIN (* main programm *)
Init;
All_Str;
prn_str;
END. (* main programm *)
CODE
(***************************[sxn.io]*******************************)
(* *)
(* File : Number-str.pas *)
(* Created: 01/05/2008 *)
(* Reason : работа со строковыми массивами *)
(* Product: нахождение числа в подстроке *)
(* Author : do-do *)
(* Purpose: Прочитать в одномерный массив строк длинной по 74 символа *)
(* первые 73 символа каждой строк файла DATF.TXT . *)
(* Используя функцию, заполнить выходной одномерный массив *)
(* (элементы - строки, длинной восемь символов) числами. *)
(* Процедуры/Функции *)
(* All_Str - функция, выбирает из строки первое число - *)
(* первую подстроку между пробелами, заменяя при выборе в *)
(* исходной строке выбранные символы пробелами. *)
(* prn_str- процедура печати выходного массива по пять чисел в строке*)
(* Проверки на ошибки ввода/вывода не производится *)
(* *)
(* Все числа считаются ЦЕЛЫМИ не ОТРИЦАТЕЛЬНЫМИ!!! *)
(***************************[sxn.io]*******************************)
program number_str;
const
M=10; (* максимальный размер массива *)
MyFileName='datF.txt'; (* файл с тестовым массивом *)
Type
string74=string[74];
string8 =string[8];
Num74=0..74;
element=record
st:string74;
pos1,pos2:Num74;
num:integer;
Len:Num74;
end;
Var
N:1..M; (* Число строк которые нужно считать *)
s: array [1..M] of element;
s1: array [1..M] of string8;
f:text;
procedure init; (* инициализация программы *)
Var i:1..M;
begin
(* обнуление рабочего массива *)
For i:=1 to M DO begin
s[i].st:=''; s[i].pos1:=0; s[i].pos2:=0; s[i].num:=0;s[i].len:=0;s1[i]:='';
end;
writeln;
write('N=');readln(N); (* вводим число считываемых строк *)
Assign(f,MyFileName);
Reset(f);
For i:=1 to N do BEGIN
Readln(f,s[i].st);
s[i].len:=length(s[i].st); (*длина текущей строки *)
END;
Close(f);
end; (* end init *)
function This_num(q:string74):boolean; (*True если цифра*)
begin
This_num:= (q >= '0') AND (q <= '9');
end;
procedure All_Str; (* основная процедура *)
var i:1..M;
j,l:Num74;
stop:boolean;
Code: integer;
function Num_pos(j:Num74;var y:element):boolean;
(*True - если в позиции строки y.str c j число. Тогда в y.pos1 и y.pos2 заносим *)
(* начальную и конечную позицию этого числа *)
(* y.len - уже находится размер строки y.str *)
Var
Flag,quit:boolean;
i:Num74;
begin
Flag:=False;
i:=j;
IF j > 1 then
begin IF y.st[j-1] = ' ' then Flag:=True end Else Flag:=True;
(*начало строки, там то же может быть число*)
IF Flag then
begin
quit:=True;
while (j < y.len) and quit DO begin
Inc(j);
IF Not This_num(y.st[j]) then begin IF y.st[j] =' 'then begin Flag:=True;
quit:=False; y.pos1:=i; y.pos2:=j-1;
end; end;
end;
IF quit and (j=y.len) then begin Flag:=True;y.pos1:=i;y.pos2:=j; end;
end;
Num_pos:=Flag;
end; (*end Num_pos *)
begin (* start All_Str *)
for i:=1 TO N DO begin
j:=0; stop:=False;
while (j <= s[i].len) AND Not stop DO
begin
INC(j);
IF This_num(s[i].st[j]) then stop:=Num_pos(j,s[i]);
end;
IF stop then begin
s1[i]:=Copy(s[i].st,s[i].pos1,s[i].pos2-s[i].pos1+1);
Val(s1[i],s[i].num,Code);
IF Code <> 0 Then begin Writeln('Ошибка преобразования',i);halt(128) end;
For l:=s[i].pos1 to s[i].pos2 do s[i].st[l]:=' '; (*пробелы*)
end;
end;
end; (* end All_Str *)
procedure prn_str;
var
i:1..M;
begin
Writeln('Number printing');
For i:=1 to N DO IF s1[i] <> '' then Write(s1[i]:16);
WriteLn;
Writeln('END');
(*На стандартной консоли (шириной 80 символов) будет 5 чисел в колонке*)
Writeln;
Writeln('String!!!!');
For i:=1 to N do writeln(s[i].st);
end;
BEGIN (* main programm *)
Init;
All_Str;
prn_str;
END. (* main programm *)
DELETED
Акула пера
5/4/2008, 2:06:47 AM
Ну додо, ну дружище! НУ ВЫРУЧИЛ! ОГРОМНОЕ СПАСИБО!
попробую сдаться отпишусь как прошло.
ведь не перевелись же еще добрые люди)))))))))))
попробую сдаться отпишусь как прошло.
ведь не перевелись же еще добрые люди)))))))))))