imho.ws |
![]() |
![]() |
![]() |
# 2 |
СуперМод
IMHO Консультант 2005-2009 Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 515
![]() |
Gamer2100, проблема стара как мир...
Турбо работает с кодировкой DOS (cp-866), Pascal ABC - с кодировкой Windows (cp-1251). Достаточно просто перед запуском проги на компиляцию конвертировать cp-1251->cp-866. Проще говоря, кодировка русского в исходном файле должна совпадать с кодировкой его же в среде исполнения (для ДОС и консоли Win - 866, для GUI Win - 1251). Или, как вариант, перед запуском на выполнение проги в NT-консоли можно менять кодовую страницу: chcp 1251. Более современный компилятор есть тут: _http://www.freepascal.org/
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила! Распространенье наше по планете Особенно заметно вдалеке: В общественном парижском туалете Есть надписи на русском языке В. Высоцкий |
![]() |
![]() |
# 4 |
Newbie
Регистрация: 23.12.2006
Сообщения: 29
![]() |
не стал парится с Апсалютными числами, поставил реал, округлил до сотых, но вот другая проблема, написал такую прогу:
program pass; var a,b,c,d,e,f,g:string; p: string; label 1; begin writeln('Эта программы покажет вам мои пороли, если вы правильно ответите на 3 вопроса.'); writeln('Готовы?(Введите "да" или "нет").'); readln(a); if (a='да') then writeln('Дата моего рождения в формате ДД/ММ/ГГГГ') else writeln('Как хотите.'); if (a='нет') then goto 1; readln(b); if (b='25.12.1993') then writeln('Правильно, теперь введите один из моих ников.') else writeln('Ошибка. Прощайте.'); if not (b='25.12.1993') then goto 1; readln(c); if (c='Walkman') or (c='walkman') or (c='Dreamer') or (c='dreamer') or (c='X3M-NRG') or (c='x3m-nrg') then writeln('Правильно, теперь назовите мой любимый инструмент.') else writeln('Ошибка. Прощайте.'); if not (c='Walkman') or (c='walkman') or (c='Dreamer') or (c='dreamer') or (c='X3M-NRG') or (c='x3m-nrg') then goto 1; readln(d); if (d='Create_thread') or (d='Create_thread') then write('Правильно, но это ещё не всё, не думайте что всё так просто, назовите мою любимую актрису(на английском пожалуйста).') else writeln('Ошибка. Прощайте.'); if not (d='Create_thread') or (d='Create_thread') then goto 1; readln(e); if (e='Emma Wotson') then writeln('Правильно!!!Последний(это правда) вопрос. Какая фамилия у человека составившего учебник по алгебре для 7, 8, 9 класса?') else writeln('Ошибка. Прощайте.'); if not (e='Emma Wotson') then goto 1; readln(f); if (f='Мордкович') then writeln('Молодец, все слои защиты пройдены, вот мои ники и пароли:') else writeln('Ошибка. Прощайте.'); if not (f='Мордкович') then goto 1; if (f='Мордкович') then writeln('"WebMoney"'); if (f='Мордкович') then writeln('код: 099087336262'); if (f='Мордкович') then writeln('пароль: ***'); if (f='Мордкович') then writeln('код доступа к фаилу ключей:***'); if (f='Мордкович') then writeln('"E-mail"'); if (f='Мордкович') then writeln('login:sergey1993@bk.ru'); if (f='Мордкович') then writeln('pass:***'); if (f='Мордкович') then writeln('"Мой сайт"'); if (f='Мордкович') then writeln('login:young-gamedev'); if (f='Мордкович') then writeln('pass:***'); if (f='Мордкович') then writeln('"GTAMaps"'); if (f='Мордкович') then writeln('login:X3M-NRG'); if (f='Мордкович') then writeln('pass:***'); if (f='Мордкович') then writeln('Есть ещё, но я их забыл.:-('); if (f='Мордкович') then writeln('Вы закончили?'); 1: readln(g); end. но она после третьего вопроса выходит, почему это может быть? ![]() ![]() ЗЫ я знаю что goto это признак плохого програмирования, но пока я с ним не разобрался буду его юзать!!! Последний раз редактировалось Gamer2100; 15.10.2007 в 09:34. |
![]() |
![]() |
# 5 | |
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Какую ошибку-то? Или это сообщение было для ясновидящих?
добавлено через 8 минут Цитата:
Третий впорос это про ники? В остальных все работает как и ожидалось?? P.S. И вообще, кто Вас так учил программировать? Надеюсь это просто Ваша первая программа??
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
![]() |
![]() |
# 7 |
Newbie
Регистрация: 27.01.2004
Адрес: РФ, ХМАО
Пол: Male
Сообщения: 26
![]() ![]() ![]() ![]() ![]() |
Нинада!!! Разбирайся с процедурами и функциями, такой код просто нечитаем.
Зачем столько if-ов с одинаковым условием идущих подряд? Если не специально — замени их на конструкцию вида: Код:
if f = … then begin WriteLn(…); WriteLn(…); … WriteLn(…); end; Код:
if f = 'Мордкович' then begin WriteLn('Молодец, все слои защиты пройдены, вот мои ники и пароли:'); WriteLn('"WebMoney"'); WriteLn('код: 099087336262'); WriteLn('пароль: ***'); WriteLn('код доступа к фаилу ключей:***'); WriteLn('"E-mail"'); WriteLn('login:sergey1993@bk.ru'); WriteLn('pass:***'); WriteLn('"Мой сайт"'); WriteLn('login:young-gamedev'); WriteLn('pass:***'); WriteLn('"GTAMaps"'); WriteLn('login:X3M-NRG'); WriteLn('pass:***'); WriteLn('Есть ещё, но я их забыл.:-('); WriteLn('Вы закончили?'); end else begin WriteLn('Ошибка. Прощайте.'); goto 1; end; По более раннему вопросу. В коде: Код:
var x, y: Integer; … x := round(y / 4); Это, в общем-то, заметно. Повторюсь, вне понятий процедур и функций паскаля не существует. Еще маленько помарализаторствую — структурируй текст, делай отступы. Вот видишь. Текст так запутан, что ты сам не можешь понять, где в нем логическая ошибка. И вряд-ли кто-то захочет разбираться в таком коде, если автор сам для себя не сделал его удобным. Впрочем, с опытом это придет. Ща я тебе даже накидаю скелет этой твоей проги. Если че — не обессудь, паскаля я уже давно в глаза не видел: Код:
program Pass; function AccessGranted: boolean; begin {Здесь асякие вопросы-распросы} {Если все ответы верны — присваиваешь функции значение «True»} end; function ExitConfirmed: boolean; var Ch: Char; begin while KeyPressed do ReadKey; {чистим буфер клавы} WriteLn('Do ya rly wanna to exit (Y/N)?'); repeat repeat until KeyPressed; Ch := ReadKey; until (Ch = #89) or (Ch = #78); {с кодами мог напутать} ExitConfirmed := (Ch = #89); end; procedure OutPasswords; begin {Здесь вывод паролей} end; begin repeat if AccessGranted then OutPasswords else WriteLn('Ошибка. Покедава.'); until ExitConfirmed; end. |
![]() |
![]() |
# 8 |
Newbie
Регистрация: 23.12.2006
Сообщения: 29
![]() |
Спасибо, мне уже помогли, советов послушался и код изменил, а ошибка была только в этом:
не if not (c='Walkman') or (c='walkman') or (c='Dreamer') or (c='dreamer') or (c='X3M-NRG') or (c='x3m-nrg') ндо было писать, а if not ((c='Walkman') or (c='walkman') or (c='Dreamer') or (c='dreamer') or (c='X3M-NRG') or (c='x3m-nrg')) то-есть всё взять в скобки добавлено через 46 минут хех, всё работает, вот финальный вариант: Код:
program pass; var a,b,c,d,e,f,g:string; p: string; label 1; begin writeln('Эта программа покажет вам мои пароли, если вы правильно ответите на 3 вопроса.'); writeln('Готовы?(введите "да" или "нет").'); readln(a); if (a='да') then writeln('Введите дату моего рождения в формате ДД/ММ/ГГГГ') else begin writeln('Как хотите.'); goto 1; end; readln(b); if (b='25.12.1993') then writeln('Правильно, теперь введите один из моих ников.') else begin writeln('Ошибка. Прощайте.'); goto 1; end; readln(c); if (c='Walkman') or (c='walkman') or (c='Dreamer') or (c='dreamer') or (c='X3M-NRG') or (c='x3m-nrg') then writeln('Правильно, теперь назовите мой любимый инструмент.') else begin writeln('Ошибка. Прощайте'); goto 1; end; readln(d); if (d='begin') or (d='Begin') then writeln('Правильно, но это ещё не всё, не думайте что всё так просто, назовите мою любимую актрису(на английском пожалуйста).') else begin writeln('Ошибка. Прощайте.'); goto 1; end; readln(e); if (e='Emma Wotson') then writeln('Правильно!!!, Последний(это правда) вопрос. Какая фамилия у человека, составившего учебник по алгебре для 7,8,9 класса?') else begin writeln('Ошибка. Прощайте.'); goto 1; end; readln(f); if (f='Мордкович') then begin writeln('Молодец, все слои защиты пройдены, вот мои ники и пароли:'); writeln('"WebMoney"'); writeln('код: 099087336262'); writeln('пароль:***'); writeln('код доступа к фаилу ключей:***'); writeln('"E-mail"'); writeln('login:sergey1993@bk.ru'); writeln('pass:***'); writeln('"Мой сайт"'); writeln('login:young-gamedev'); writeln('pass:***'); writeln('"GTAMaps"'); writeln('login:X3M-NRG'); writeln('pass:***'); writeln('Есть и ещё но я их забыл:-('); writeln('Закончили переписывать;-)?'); end else begin writeln('Ошибка. Прощайте'); goto 1; end; 1: readln(g); end. Последний раз редактировалось Gamer2100; 15.10.2007 в 22:09. |
![]() |
![]() |
# 9 | ||
Junior Member
Регистрация: 25.09.2003
Сообщения: 53
![]() |
Цитата:
c:=UpCase(c); // или UpString давно не юзал дососвский паскаль if not ((c=('WALKMAN') or (c='DREAMER') or (c='X3M-NRG') ) Далее Цитата:
И еще одно, но важное - никогда не используй GoTo!!!! Отвыкнешь, сам же спасибо скажешь ![]() |
||
![]() |
![]() |
# 11 |
Junior Member
Регистрация: 25.09.2003
Сообщения: 53
![]() |
Если когда нить будешь писать достаточно большой проект. То его надо будет разбить на более мелкие блоки. Их на еще более мелкие. И отлаживать всю программу на 5000+ строк будет ой как тяжело если переходы GOTO идут. А так отладил блок - забыл про него, следующий, а потом используй их в виде процедур и функций. Останется в самой программе всего несколько строк
![]() Твоя прога например может выглядеть так. function MyQuery1:Boolean begin writeln('Готовы?(Введите "да" или "нет").'); readln(a); if (a='да') then MyQuery1:=True else MyQuery1:=False; end; procedure ShowWelcomeMessage; begin writeln('Здравствуйте.'); end; procedure EndError; begin writeln('Ошибка. Прощайте.'); Exit; end; procedure ShowTrueMessage; begin writeln('Все правильно и т.д.'); Exit; end; begin ShowWelcomeMessage; - вывод приветсвия If Not MyQuery1 then EndError; If Not MyQuery2 then EndError; If Not MyQuery3 then EndError; If Not MyQuery4 then EndError; If Not MyQuery5 then EndError; ShowTrueMessage; end. вот типа такого наброска и должна выглядеть правильная программа. никаких GOTO. Будут вопросы пиши. |
![]() |
![]() |
# 12 |
Newbie
Регистрация: 10.03.2009
Адрес: Форум о профессиональном з
Сообщения: 10
![]() |
![]()
моя первая прога памагите вылетает
program z; Var a,b,s:integer; begin a:=read; b:=read; s:=a+b; writeln (s); writeln (s); end. как вводить данные и вообще все проги вылетают не тока эта (имею в виду написанные мною на паскале плиз информатичка незнает хелп) |
![]() |
![]() |
# 13 |
Full Member
Регистрация: 30.07.2004
Адрес: Санкт-Петербург
Пол: Male
Сообщения: 544
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
vindows93, во время вылета программы обычно указывается в какой строке ошибка и её описание. Так ты бы хоть указал их здесь. А по коду программы: по-моему, ты некорректно вводишь данные (если вообще неверно). Правильно будет:
Код:
readln (a); readln (b); |
![]() |
![]() |
# 14 |
Newbie
Регистрация: 10.03.2009
Адрес: Форум о профессиональном з
Сообщения: 10
![]() |
И не совсем понятно зачем ты выводишь на экран результат суммирования два раза (writeln (s)
![]() информатичка говорила типа чтобы подольше текст задержать вводи что угодно всёравно рухает ошибок нет в екзе уже a:=2 b:=3 нихрена a=2 b=3 то;t skdhjdfsbvsdlkfvklsvkjsdbfkjbds тоже самое ентер нажимаешь и крендец |
![]() |
![]() |
# 16 |
Newbie
Регистрация: 10.03.2009
Адрес: Форум о профессиональном з
Сообщения: 10
![]() |
![]()
СПАСИБООО ПОМОГЛО
помагите информатичка задолбала прога нужна но я сам хочу написать кароче КВАДРАТНОЕ УРАВНЕНИЕ program z; Var a,b,d,c,e,f,:integer; begin readln (a); readln (b); readln (c); d:=(b*b)-((4*a)*c); writeln (d); e:=((b*b)-(sqrt(d)))/(2*a); типа первое значение икс f:=((b*b)+(sqrt(d)))/(2*a); типа второе writeln (e); writeln (f); happy end. исправьте ошибку плиз неработает неверное значение неверное выражение неверная структура блин!!!!!!!!!!!!!!!!!!!!!!!! |
![]() |
![]() |
# 20 |
Full Member
Регистрация: 30.07.2004
Адрес: Санкт-Петербург
Пол: Male
Сообщения: 544
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
vindows93, так как ты опять не указал какую именно ошибку выдаёт компилятор, могу только предположить. Integer - это целочисленное значение, а переменные "e" и "f" у тебя скорее всего получатся дробные (Float). Попробуй пропиши:
Код:
Var a,b,d,c: integer; e,f: float; ![]() И всё же, ты должен запускать программу из под компилятора, а не готовый exe'шник. А компилятор обычно выдаёт код и описание ошибки. Поэтому будет на много проще тебе помогать, если ты так же будешь здесь указывать эти данные. ![]() |
![]() |