program CheckWordCasing;
function VerifyAllUpperOrAllLowerOrIsCapitalized(word: string): boolean;
var
i, upper, lower: integer;
begin
upper := 0;
lower := 0;
for i := 1 to Length(word) do
begin
if word[i] in ['a'..'z'] then
Inc(lower)
else if word[i] in ['A'..'Z'] then
Inc(upper);
end;
// Case 1: all lowercase
if upper = 0 then
VerifyAllUpperOrAllLowerOrIsCapitalized := true
// Case 2: all uppercase
else if lower = 0 then
VerifyAllUpperOrAllLowerOrIsCapitalized := true
// Case 3: capitalized (only first letter uppercase)
else if (upper = 1) and (word[1] in ['A'..'Z']) then
VerifyAllUpperOrAllLowerOrIsCapitalized := true
else
VerifyAllUpperOrAllLowerOrIsCapitalized := false;
end;
procedure RunTest(word: string);
begin
WriteLn('Testing word: "', word, '"');
if VerifyAllUpperOrAllLowerOrIsCapitalized(word) then
WriteLn('OK')
else
WriteLn('Error');
WriteLn;
end;
begin
RunTest('PROGRAMMING');
RunTest('programming');
RunTest('Programming');
RunTest('ProGramMing');
end.
(*
run:
Testing word: "PROGRAMMING"
OK
Testing word: "programming"
OK
Testing word: "Programming"
OK
Testing word: "ProGramMing"
Error
*)