String4. Дано целое число $$N (1 \le $$N$$ \le 26)$$. Вывести $$N$$ первых прописных (то есть заглавных) букв латинского алфавита.
Решение:
1 2 3 4 5 6 7 8 9 |
program String4; var N,i:byte; C:char; begin Write('N:'); readln (N); for i:=160 to 160+N-1 do Writeln(chr(i)); end. |
Решение от Newton:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
program String4; var Number, Counter : byte; Symbol : char; begin write('Enter a Number from 1 to 26: '); readln(Number); while ((1 >= Number) or (Number >= 26)) do begin writeln('Wrong input, please try again.'); writeln; write('Enter a Number from 1 to 26: '); readln(Number); end; Symbol := 'A'; for Counter := 1 to Number do begin writeln(Counter :4, Symbol :4); inc(Symbol); end; end. |
Другие задачи из раздела String можно посмотреть здесь.
Я сначала тоже хотел так сделать и выяснил коды для латинских букв при помощи цикла с ord(), и у меня получился диапазон 65-90. Потом решил сделать иначе, а заодно и отвязался от кодировки:
ммм… решение хорошее… добавил в шапку.
Но на этом этапе лучше бы скачать уже «ascii таблицу символов» … а то дальше будет хуже 🙂
Извините скажете пожалуйста while(number 26) это у меня не работает , без знаков (=) while работает?
Это из за того, что код добавляют без использования кнопки «Вставить код» (кажеться её в те времена небыло). Часть кода пропала. Там было что то типо:
while ((1 >= Number) or (Number >= 26)) do
while (Number 26) do
begin
writeln(‘Wrong input, please try again.’);
writeln;
write(‘Enter a Number from 1 to 26: ‘);
readln(Number);
end;
Это проверка на правильность ввода числа N. Если вырезать этот кусок, то просто не будет проверки на правильность ввода.
Код поправил в решении от Newton
было:
while (Number 26) do,
стало:
while ((1 >= Number) or (Number >= 26)) do