| imho.ws |
![]() |
|
|
|
# 2 |
|
СуперМод
IMHO Консультант 2005-2009 Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 523
![]() |
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 в 10: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 в 23: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 идут. А так отладил блок - забыл про него, следующий, а потом используй их в виде процедур и функций. Останется в самой программе всего несколько строк
См. исходники прог на Delphi. Твоя прога например может выглядеть так. 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'шник. А компилятор обычно выдаёт код и описание ошибки. Поэтому будет на много проще тебе помогать, если ты так же будешь здесь указывать эти данные.
|
|
|