String43. Дана строка, состоящая из русских слов, набранных заглавными буквами и разделенных пробелами (одним или несколькими). Найти количество слов, которые содержат хотя бы одну букву «А».
Решение:
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 |
program String43; var S:String; i,Num,NumA:integer; begin Write('S: '); Readln(S); i:=1; Num:=0; NumA:=0; While (i<=Length(S)) do begin if (S[i]=' ') then begin if NumA>0 then inc(num); NumA:=0; end; if S[i]=chr(128) then inc(NumA); //Если кодировка в консоли и в IDE совпадают, условие можно заменить на S[i]='А' inc(i); end; Writeln(Num); end. |
Другие задачи из раздела String можно посмотреть здесь.
не работает. всегда показывает ноль.
Здесь скорее всего всё дело в русских буквах.
Я писал прогу для кодировки ASCII, но возможно у вас Юникод.
Тогда chr(128) не равняется символу А.
Попытайте в 22 строчке заменить «S[i]=chr(128)», на S[i]=’А’.
Можно ещё вывести на экран значение символа А.
Выполните такую команду:
И когда она запуститься введите первым символом А. И энтер.
Тогда вы узнаете какой год имеет этот символ в вашей кодировке.
И указываем его вместо 128 в chr(128).
Последнее слово из одного символа ‘А’ не засчитывает. 16 строка изменить на