IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 26.04.2024 2:19
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name