Напишете програма, която позволява въвеждането на координатите на две фигури, и отпечатва дали първата ще вземе втората, ако първата е:
- топ
- офицер
- кон
- царица
Напишете програма, която позволява въвеждането на координатите на две фигури, и отпечатва дали първата ще вземе втората, ако първата е:
[c] за С++ програми [/c]
[pascal] за паскал [/pascal]
П | В | С | Ч | П | С | Н |
---|---|---|---|---|---|---|
« февр. | ||||||
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 |
Калояне, решението на задачата е вярно. Поздравления за това, че се справи с тази задача, която е доста по-сложна от тези, които сме решавали до момента.
Какво ми харесва в решението ти:
* разглеждаш обстойно всички възможни варианти
* правиш проверка за невалидни стойности на входните величини
* програмата извежда информативни съобщения и е достатъчно дружелюбна с потребителя
* имената на променливите са добре подбрани
* кодът е структуриран много добре, така че е ясно кой блок в кой е
* има коментари на ключовите места
Какво още може да се подобри в нея:
* да има повече коментари в основните блокове – така кодът ще бъде по-разбираем за другите, а и за теб след време
* вместо да използваш chr(104) и т.н., може да ползваш самия символ – ‘h’ – по-ясно ще е за какво става въпрос
* за получаване на номера на колоната вместо тези толкова много if-ове може да ползваш следното:
if kolonachar>='a' then
kolona:=Ord(kolonachar) - Ord('a') + 1
else kolona:=Ord(kolonachar) - Ord('A') + 1;
* проверката за еднакви координати на фигури може да е преди всички други, защото тя е еднаква за всички
* проверката за конче ще е по-оптимално да е така:
if ((abs(red-red2)= 2) and (abs(kolona-kolona2)=1)) or
((abs(red-red2)= 1) and (abs(kolona-kolona2)=2)) then
writeln('-->vzima q')
* създай си навика да не добавяш няколко команди на един ред. Това прави кода на програмата по-нечетлив, по-труден за редактиране и дебъгване.
Това е. Очаквам да пуснеш подобрено решение :-)