Помощь - Поиск - Пользователи - Календарь
Полная версия: Проверка домашней работы первоклассника
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Егор
Составить программу "Проверка дом. работы первоклассника". В качестве входных данных программа получает выражение вида "2+3=5" или "7-3=5". В выражения всегда ровно 5 символов, примеры могут могут быть только на сложение или вычитание, аргументы выражений и результат могут состоять только из 1й цифры. необходимо проверить верно решен пример или нет, выдать сообщения о правильности решения, затем спросить будем ли продолжать проверку ("Продолжим? (Y,N)"), и если пользователь ответил утвердительно, предложить ему ввести следующий пример для проверки и т.д. При решении задачи использовать только символьный тип данных(строковый запрещается).

заранее благодарю give_rose.gif ))
Айра
А сам? Мысли\код\вопросы?
puporev
Попробуйте так.
uses crt;
var a,b,c,d,e,ch:char;
begin;
clrscr;
repeat
writeln('Vvedite vyrazenie:');
readln(a,b,c,d,e);
if (b='+')and(ord(a)+ord©-96=ord(e)-48)
or (b='-')and(ord(a)-ord©=ord(e)-48)
then writeln('Verno!')
else writeln('Ne verno!');
writeln;
writeln('Продолжим? (Y/N)');
readln(ch);
if (ch='Y')or(ch='y')then continue
until (ch='N')or(ch='n');
end.

Lapp
puporev, объясни, пожалуйста, каково назначение этой строки:
Цитата(puporev @ 22.09.2008 20:31) *
if (ch='Y')or(ch='y')then continue
- в твоей программе?..
puporev
Цитата(Lapp @ 23.09.2008 5:30) *

puporev, объясни, пожалуйста, каково назначение этой строки:
- в твоей программе?..


ch - переменная символьного типа (Char).
При нажатии на клавишу со значком Y (обычно так сокращают Yes (да)) переменной ch присваивается это значение и если это так, то цикл начинается снова (процедура continue (продолжить)).
Lapp
Цитата(puporev @ 23.09.2008 7:31) *
... если это так, то цикл начинается снова (процедура continue (продолжить)).
Нет, continue означает несколько другое.
Попробуй убрать эту строчку из программы и посмотри, как изменилось выполнение ее.
Егор
ОГРОМНОЕ СПАСИБО!!!!!
Вы ПРограммист высочайшего уровня!
Я не представляю, что бы делал без таких людей как Вы!!! give_rose.gif good.gif
puporev
Цитата(Егор @ 23.09.2008 12:52) *

ОГРОМНОЕ СПАСИБО!!!!!
Вы ПРограммист высочайшего уровня!
Я не представляю, что бы делал без таких людей как Вы!!! give_rose.gif good.gif

Зря ты такое пишешь, программу-то я неправильно написал. Вот переделал:

uses crt;
var a,b,c,d,e:char;
label 1,2; {метки}
begin;
clrscr;
1:
writeln('Vvedite vyrazenie:');
readln(a,b,c,d,e);
if (b='+')and(ord(a)+ord©-96=ord(e)-48)
or (b='-')and(ord(a)-ord©=ord(e)-48)
then writeln('Verno!')
else writeln('Ne verno!');
writeln;
writeln('Продолжить? (Y/N)');
2:
case readkey of
#89:goto 1; {коды клавиш Y/y - продолжить}
#121:goto 1;
#78:exit; {коды клавиш N/n -выход}
#110:exit;
end;
goto 2; {на остальные клавиши не реагирует}
end.

volvo
Угу... Зато теперь - правильно, да? С goto вместо той конструкции repeat/until, которая у тебя была. Все же работало, единственное - была лишняя строка с continue (в твоем цикле она просто не нужна: после нее нет других операторов, цикл и так продолжит выполнение со следующей итерации). Убрал бы ее и все... goto-то зачем?
puporev
Цитата(volvo @ 23.09.2008 16:02) *

Угу... Зато теперь - правильно, да? С goto вместо той конструкции repeat/until, которая у тебя была. Все же работало, единственное - была лишняя строка с continue (в твоем цикле она просто не нужна: после нее нет других операторов, цикл и так продолжит выполнение со следующей итерации). Убрал бы ее и все... goto-то зачем?

В той конструкции команда продолжить выполнялась при нажатии любой клавиши, кроме N, а сейчас только при Y, остальные игнорируются.
renesko1
Просто goto не привеиствуется и препод гостя скажет переделать с циклами, наверное.
puporev
Цитата(renesko1 @ 23.09.2008 16:34) *

Просто goto не привеиствуется и препод гостя скажет переделать с циклами, наверное.

Смотря какой препод. Если старый, наоборот только с goto и примет. Некоторые до сих пор требуют писать Program(name,input,output);
volvo
Цитата
В той конструкции команда продолжить выполнялась при нажатии любой клавиши, кроме N, а сейчас только при Y, остальные игнорируются.
Хочешь, я тебя огорчу? Не только при Y... Есть еще как минимум 2 комбинации клавиш, которые работают не так, как задумывалось. Скажем, так:

вводишь выражение, программа пишет ответ, и нажимаешь... Не Y, и не y... А просто Shift и F6 одновременно... Упс. Я ж не нажал Y, почему программа решила продолжать?

Цитата
Если старый, наоборот только с goto и примет.
Это уже клиника, не надо делать заведомо неправильно... Ты ж на Паскале пишешь, а не на Бейсике, правда?
Lapp
Цитата(puporev @ 23.09.2008 16:38) *
Смотря какой препод. Если старый, наоборот только с goto и примет. Некоторые до сих пор требуют писать Program(name,input,output);
Эти две вещи (goto и форма заголовка) совершенно несравнимы по сути. Стандартный заголовок если и мешает, то непринципиально. А goto тебе может навредить на всю оставшуюся жизнь..
Готов спорить, что ты ошибаешься по поводу старых преподавателей. И вообще, кто как принимает - это не ориентир. Нас тут меньше всего интересует, какие у вас там препы. Но если хочешь научиться программировать - слушай лучших участников Форума.

Попробуй переделать свою прогу без goto. И в будущем старайся избегать его употребления..
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.