![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
lFOXl |
![]() ![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Денис Репутация: ![]() ![]() ![]() |
Вот собственно в школе дали задачку по информатике. написать програмку, с использованием уже полученных знаний.
Ну думаю - напишу ка я решалку квадратных уровнений, штука полезная всетаки. взялся писать. Все отлично шло, первая версия тупо щитала дискриминант и два корня. Ни проверки на дискриминант меньше, или равно нулю, ничего больше небыло. Потом добавил проверку на дискриминант меньше нуля. Все ещ программа работала нормально. Ну решил впихнуть запрос на выход (Y/N). Все работало. НО! После добавления проверки на дискриминант равен нулю ( тогда вычисления идут по другой формуле), и вводом label'ов все перестало работать. проблемма собственно вот в чем: Когда вычисления идут по стандартной форме, или вообще не идут по причине дискр. меньше нуля, то запрос работает хорошо, сбоев нет, по вводу "y" программа завершаеться. НО, если все идет по новой формуле - программа вообще ввода значения не производит. тоесть после вопроса "ВЫход (Y/N)" программа сразу начинает свое выполнение заного. Program sqr_ur; помогите кто-то разобраться... вроде правильно все. приму любую критику, т\к учусь только =) П.С. все слова писал на русском, а кодировку винда не понимает паскалевскую. так что либо скопируйте текст в оболочку паскаль, либо вот вам исходник прикрепленный. Поправил кодировку. Сообщение отредактировано: volvo - 16.04.2009 17:10 Прикрепленные файлы ![]() |
Айра |
![]()
Сообщение
#2
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: ![]() ![]() ![]() |
lFOXl, намудрил ты с этими метками, зачем они тебе вообще нужны? И вместо whileИ, думаю, лучше использовать repeat, потому что первый сразу проверяется y1, которое у тебя еще не известно, как-то это не корректно..
В общем получится такая структура: repeat и никаких go to и меток, выполнению нужных действий обеспечивает условный оператор (на то он и нужен ![]() з.ы. зачем постоянно просить пользователя нажать кнопку для продолжения? мне было бы очень неудобно так делать.. з.з.ы. кстати, когда дискриминант меньше нуля, это значит, что действительных корней нет, а решения все равно есть =)) Сообщение отредактировано: Айра - 16.04.2009 17:44 |
lFOXl |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Денис Репутация: ![]() ![]() ![]() |
Спасибо, попробую так все сделать.. с метками разберусь, просто так как-то задача проще встает в моск, чем без меток =)
Добавлено позже: И все равно программа "заккругляеться". Причем, когда по совету убрал множественные подтверждения "любой кнопкой", то оно начало стартовать заново даже по обычной формуле. Оно аповторяет все, что находиться после repeat без запроса Y/N.... у кого какие мысли? буду сам думать тоже, но от помощи не откажусь. вот код программы на данный момент. Program sqr_ur; p.s. как самому декодировать эту кодировку? чтобы больше никого не парить. Сообщение отредактировано: lFOXl - 16.04.2009 19:10 |
Айра |
![]()
Сообщение
#4
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: ![]() ![]() ![]() |
Не знаю) Без меток получается цикл, пока y1 не равно "y" решаем разные уравнения, а с ними несколько раз прыгать туда-сюда.. не рационально как-то)) (и думаю, если будешь показывать преподавателю, не воспримет
![]() Сообщение отредактировано: Айра - 16.04.2009 17:53 |
lFOXl |
![]()
Сообщение
#5
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Денис Репутация: ![]() ![]() ![]() |
да тут не преподаватель важен. Я действительно хочу научиться, да и не успокоюсь пока не сделаю, чтобы паскаль делал то, что я от него хочу.
|
Айра |
![]()
Сообщение
#6
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: ![]() ![]() ![]() |
Это хорошее стремление
![]() |
lFOXl |
![]()
Сообщение
#7
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Денис Репутация: ![]() ![]() ![]() |
дак вот чтобы рационально делала нужно млин знать, как сделать чтобы рациональность была. Мы вообще очень мало по паскалю прошли. Буквально до циклов и дошли. В остальном сам разбирался... вот и тут разобраться хочу, но блин, не выходит
![]() |
Айра |
![]()
Сообщение
#8
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: ![]() ![]() ![]() |
Ой, чего ж ты не сказал, что новый код выложил.. только сейчас случайно заметила.. *пошла разбирать*
Добавлено через 2 мин. Попробуй исправить read на readln.. на счет кодировки не знаю.. Сообщение отредактировано: Айра - 16.04.2009 18:30 |
lFOXl |
![]()
Сообщение
#9
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Денис Репутация: ![]() ![]() ![]() |
теперь выход работает при нормальной формуле. при =0 запрос отображаеться, но вводи хоть n, хоть y, программа выполняет repeat. Тоесть проблемма решена только частично...
И еще я не очень понял, ведь read и readln это две одинаковые функции, только readln выводит "поле для ввода" с новой строки... почему оно не работало? Сообщение отредактировано: lFOXl - 16.04.2009 18:41 |
Айра |
![]()
Сообщение
#10
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: ![]() ![]() ![]() |
Тогда попробуй исправить на readln и во вводе a,b,c..
Цитата И еще я не очень понял, ведь read и readln это две одинаковые функции, только readln выводит "поле для ввода" с новой строки... почему оно не работало? ![]() Сообщение отредактировано: Айра - 16.04.2009 18:46 |
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Цитата как самому декодировать эту кодировку? Ты когда сюда выкладываешь, у тебя кракозябры в программе получаются... Смени кодировку странички в браузере на Cyrillic DOS 866, получится что все в кракозябрах, твоя программа - как положено. Копируешь ее в буфер обмена, и еще раз правишь текст сообщения... Вот и все ![]() Добавлено через 2 мин. Цитата read и readln это две одинаковые функции, только readln выводит "поле для ввода" с новой строки... почему оно не работало? Потому что тот самый read не читает символ перевода строки, полученный при нажатии Enter-а. А тебе надо его читать. Для этого используется Readln. А не для того, чтоб что-то выводить с новой строки. Readln ничего не выводит, он только вводит... |
lFOXl |
![]()
Сообщение
#12
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Денис Репутация: ![]() ![]() ![]() |
Заработало) Всем огромное спасибо!
volvo понял про реад и ридлн.. но я н имел ввиду что readln что-то выводит, это просто выражаюсь я так, не понятно) хех) |
![]() ![]() |
![]() |
Текстовая версия | 18.06.2025 23:17 |