Нужно перевести задачу с С++ на Paskal с объяснением ( дорого )
#include
using namespace std;
bool isletter(char c) {
return c == 'A'
|| c == 'B'
|| c == 'C'
|| c == 'E'
|| c == 'H'
|| c == 'K'
|| c == 'M'
|| c == 'O'
|| c == 'P'
|| c == 'T'
|| c == 'X'
|| c == 'Y';
}
int main() {
int n;
cin >> n;
for (int i = 0; i < n; ++i) {
string s;
cin >> s;
if (s.length() == 6
&& isletter(s[0])
&& isdigit(s[1])
&& isdigit(s[2])
&& isdigit(s[3])
&& isletter(s[4])
&& isletter(s[5])) {
cout << "Yes";
} else {
cout << "No";
}
cout << endl;
}
return 0;
}
Answers & Comments
function isletter (c : Char) : boolean;
begin
case c of
'A': isletter := true;
'B': isletter := true;
'C': isletter := true;
'E': isletter := true;
'H': isletter := true;
'K': isletter := true;
'M': isletter := true;
'O': isletter := true;
'P': isletter := true;
'T': isletter := true;
'X': isletter := true;
'Y': isletter := true;
else
isletter := false;
end;
end;
function isdigit(c:char):boolean;
begin
IsDigit:=c in ['0'..'9']
end;
var
n : integer;
i : integer;
s : string;
begin
readln(n);
for i := 1 to n do
begin
readln(s);
if (length(s) = 6) and (isletter(s[1])) and (isdigit(s[2])) and (isdigit(s[3])) and (isdigit(s[4])) and (isletter(s[5])) and (isletter(s[6])) then
writeln('Yes')
else
writeln('No');
end;
end.
Чего объяснять та?) Переписал все точь в точь за исключением того, что в free pascal вроде как нет встроенной функции проверки char на цифра ли и пришлось писать самому. + Мне не оч нрав реализация isletter. Стремная, но так было в спрайтах, так что я молчу.