Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Распознавание.

Автор: mihas 28.08.2003 13:07

??? Help Me !!! Дан файл, содержащий произвольный текст. Выяснить, чего в нем больше - русских букв или цифр.

Автор: AlaRic 28.08.2003 21:19

С помощью множеств можно решить! Два множества: одно из русских букв, а другое из цифр. Посчитаешь сколько раз какое множество входит в текст файла и сравнить!

Автор: mvg 28.08.2003 22:29

дык я вроде эту задачу еще в обед того... ;). см. тему про "обрезание" массива

Автор: mihas 29.08.2003 18:20

Цитата
дык я вроде эту задачу еще в обед того... ;). см. тему про "обрезание" массива



Да огромное спасибо тебе!!! Программа заработала, только видимо из=за того что ты торопился небольшие ошибочки допустил ( например строки-константы не могут быть массивами) , вот рабочий код программы:

Код
program readfile;
var
nr,nb,i:longint;rus,num:string;
f:file of byte;b:byte;
s:string;
begin
rus:=& #39;АБВГДЕЁЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгде
жзиймлкнопрстуфхцчшщьыъэюя';
num:='123456789';
nr:=0;nb:=0;
assign(f,'text.txt');reset(f);
repeat
read(f,B);
for i:=1 to length(rus) do if chr(B)=rus[i] then nr:=nr+1;
for i:=1 to length(num) do if chr(B)=num[i] then nb:=nb+1;
until eof(f);
close(f);
s:='Букв больше';
if nb=nr then s:='Равное количество';
if nb>nr then s:='Цифр больше';
writeln(s);
readln;
end.

Автор: zx1024 29.08.2003 18:34

4 байта коту под хвост.

Код
n : longint;
...
for i:=1 to length(rus) do if chr(B)=rus[i] then n:=n+1;
for i:=1 to length(num) do if chr(B)=num[i] then n:=n-1;
...
s:='Букв больше';
if n=0 then s:='Равное количество';
if n<0 then s:='Цифр больше';