Записи, помогите сократить задачу |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Записи, помогите сократить задачу |
БелАчкА |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 11 Пол: Женский Репутация: 0 |
Сама задача простая: бьет ли карта 1 карту 2 с учетом козырной масти. Но! препод помешана на менюшках, требует, чтобы все было максимально удобно для пользователя и всевозможные случаи были учтены...естественно, достоинства карт и масти должны вводится с клавиатуры на русском...если, что не так, то необходимо оповестить пользователя...и тд.
Задачу я написала, вроде работает...но как-то мне не нравится...очень много и коряво... Помогите, пожалуйста, подсократить, исправить ее, сделать более рациональным решение... program zapis; {$APPTYPE CONSOLE} uses SysUtils, windows; type suit=(spades, clubs, diamonds, hearts); size=(six, seven, eight, nine, ten, jack, queen, king, ace); card= record m:suit; d:size end; var u:char; a,b1,b2,c1,c2,yes:boolean; K1,K2:card; KM:suit; m1,m2,d1,d2:string; procedure input_data(var K1,K2:card; var KM:suit; var m1,m2,d1,d2:string; var a,b1,b2,c1,c2:boolean); var kz:string; begin writeln ('Введите козырную масть'); readln(kz); writeln('Введите первую карту'); write('масть: '); readln(m1); write('достоинство: '); readln(d1); writeln('Введите вторую карту'); write('масть: '); readln(m2); write('достоинство: '); readln(d2); a:=true; b1:=true; b2:=true; c1:=true; c2:=true; if (kz='пики') then KM:=spades else if (kz='трефы') then KM:=clubs else if (kz='бубны') then KM:=diamonds else if (kz='червы') or (kz='черви') then KM:=hearts else begin a:=false; writeln('Неправильно введена козырная масть!') end; if (m1='пики') then K1.m:=spades else if (m1='трефы') then K1.m:=clubs else if (m1='бубны') then K1.m:=diamonds else if (m1='червы') or (m1='черви') then K1.m:=hearts else begin b1:=false; writeln('Неправильно введена масть первой карты!') end; if (m2='пики') then K2.m:=spades else if (m2='трефы') then K2.m:=clubs else if (m2='бубны') then K2.m:=diamonds else if (m2='червы') or (m2='черви') then K2.m:=hearts else begin b2:=false; writeln('Неправильно введена масть второй карты!') end; if (d1='шесть')or(d1='шестерка')or(d1='6') then K1.d:=six else if (d1='семь')or(d1='семерка')or(d1='7') then K1.d:=seven else if (d1='восемь')or(d1='восьмерка')or(d1='8') then K1.d:=eight else if (d1='девять')or(d1='девятка')or(d1='9') then K1.d:=nine else if (d1='десять')or(d1='десятка')or(d1='10') then K1.d:=ten else if (d1='валет') then K1.d:=jack else if (d1='дама') then K1.d:=queen else if (d1='король') then K1.d:=king else if (d1='туз') then K1.d:=ace else begin c1:=false; writeln('Неправильно введено достоинство первой карты!') end; if (d2='шесть')or(d2='шестерка')or(d2='6') then K2.d:=six else if (d2='семь')or(d2='семерка')or(d2='7') then K2.d:=seven else if (d2='восемь')or(d2='восьмерка')or(d2='8') then K2.d:=eight else if (d2='девять')or(d2='девятка')or(d2='9') then K2.d:=nine else if (d2='десять')or(d2='десятка')or(d2='10') then K2.d:=ten else if (d2='валет') then K2.d:=jack else if (d2='дама') then K2.d:=queen else if (d2='король') then K2.d:=king else if (d2='туз') then K2.d:=ace else begin c2:=false; writeln('Неправильно введено достоинство второй карты!') end end; function cover(K1,K2:card;KM:suit; var yes:boolean):boolean; begin if K1.m=K2.m then yes:=K1.d>K2.d else yes:=K1.m=KM end; begin setconsolecp(1251); setconsoleoutputcp(1251); repeat input_data(K1,K2,KM,m1,m2,d1,d2,a,b1,b2,c1,c2); if (a=true) and (b1=true) and (b2=true) and (c1=true) and (c2=true) then begin cover (K1,K2,KM,yes); if yes then writeln (d1,' ',m1,' бьет ',d2,' ',m2) else writeln (d1,' ',m1,' не бьет ',d2,' ',m2) end; writeln('Вы хотите выйти?(Д/Н)'); readln(u) until (u='Д') or (u='д') end. |
Текстовая версия | 26.04.2024 2:19 |