Выяснить, чего в тексте больше: букв или цифр - Pascal
Формулировка задачи:
Дан текстовый файл, содержащий произвольный текст. Выяснить, чего в нем больше: букв или цифр.
Каждый раз когда тестишь прогу то буквы за цифры принимает то наоборот а бывает так что введешь какую то комбинацию букв и цифр где букв больше а прога выдает что одинаково...не понятно где косяк
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var t:file of char;
a,s,b,c:integer; x,y:char;
begin
assign(t,'text.txt');
rewrite(t);
readln(x);
write(t,x);
a:=0;
s:=0;
reset(t);
while not eof(t) do begin
read(t,y);
if y in ['0'..'9'] then
a:=a+1 else
if y in ['А'..'Я','а'..'я'] then
s:=s+1;
end;
close(t);
if a>s then writeln('Chisel bolshe') else
if a<s then writeln('bukv bolshe') else
if a=s then writeln('odinakovo');
readln;
end.Решение задачи: «Выяснить, чего в тексте больше: букв или цифр»
textual
Листинг программы
const
DIGITS: Set Of Char = ['0'..'9'];
LETTERS: Set Of Char = ['a'..'z', 'A'..'Z', 'А'..'п', 'р'..'ё']; //по поводу русских букв - не помню точно.
var
f: File Of Char;
c: Char;
dCount, lCount: LongWord;
begin
dCount := 0; lCount := 0;
Assign(f, 'f.txt'); ReSet(f);
while (Not EoF(f)) do
begin
Read(f, c);
if (c in LETTERS)
then
Inc(lCount)
else
if (c in DIGITS)
then
Inc(dCount);
end;
Close(f);
if (lCount > dCount)
then
Write('1Букв больше!')
else
if (lCount < dCount)
then
Write('2Цифр больше!')
else
Write('3Одинаково!');
end.
Объяснение кода листинга программы
- Объявление констант:
DIGITS- множество символов от'0'до'9'LETTERS- множество символов от'a'до'z', от'A'до'Z'и от'А'до'п', а также от'р'до'ё'(по-видимому, множество русских букв)
- Объявление переменных:
f- файл символовc- символdCountиlCount- переменные типа LongWord для подсчета количества цифр и букв соответственно
- Инициализация переменных:
dCountустанавливается в 0lCountустанавливается в 0
- Открытие файла для чтения:
- Файл
f.txtоткрывается
- Файл
- Чтение символов из файла и подсчет количества цифр и букв:
- Пока не достигнут конец файла, символ
cсчитывается из файла - Если
cпринадлежит множествуLETTERS, количество буквlCountувеличивается на 1 - В противном случае, если
cпринадлежит множествуDIGITS, количество цифрdCountувеличивается на 1
- Пока не достигнут конец файла, символ
- Закрытие файла:
- Файл закрывается
- Вывод результата:
- Если количество букв больше чем количество цифр, выводится сообщение
1Букв больше! - Если количество цифр больше чем количество букв, выводится сообщение
2Цифр больше! - В противном случае, выводится сообщение
3Одинаково!
- Если количество букв больше чем количество цифр, выводится сообщение