Вопрос № 18680: Уважаемые эксперты, столкнулся с небольшой проблемкой, помогите пожалуйста решить.
Дан типизированный файл типа file of char, требуется написать процедуру, которая выводила бы количество каждого алфавитно-цифрового символа. Заранее благодарю. ...
Вопрос № 18680
Уважаемые эксперты, столкнулся с небольшой проблемкой, помогите пожалуйста решить.
Дан типизированный файл типа file of char, требуется написать процедуру, которая выводила бы количество каждого алфавитно-цифрового символа. Заранее благодарю.
Отправлен: 24.03.2005, 11:01
Вопрос задал: Lonelywolf (статус: Посетитель)
Всего ответов отправлено: 7
Отвечает: DSota
Здравствуйте, Lonelywolf!
Где-то уже на этот вопрос отвечали...
Приложение:
Ответ отправил: DSota (статус: Студент)
Отправлен: 24.03.2005, 11:39
Отвечает: sir henry
Здравствуйте, Lonelywolf!
Для хранения результатов подсчета можно завести массив, в котором индекс массива соответствует ASCI коду символа. Считываете символ из файла, определяете его код и делаете инкремент соответствующей ячейки массива.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 24.03.2005, 13:32
Отвечает: michael91
Здравствуйте, Lonelywolf!
сделай массив, как в приложении для каждого символа с #32 до #255
и при чтении очередного символа увеличивай значение в элементе массива, соответствующем коду этого символа
Приложение:
Ответ отправил: michael91 (статус: 2-ой класс)
Отправлен: 24.03.2005, 17:01
Ответ отправил: mvp (статус: 1-ый класс)
Отправлен: 24.03.2005, 18:36
Отвечает: Malish
Здравствуйте, Lonelywolf!
Как выводить. Можно находить количество каждого элемента ASII кодировки, а можно 0..9, 'A'..'Z' и 'a'..'z'. И все работает с file of char. Вот только переведешь в процедуру, думаю с этим проблем не будет. Программа точно работает. Если возникнут вопросы пиши.
uses crt;
var
F : file of char;
var C:char;
{A : array [0..255] of integer;{Po vsem znacheniyam ASII}
Cif:array [0..9] of integer; {0..9}
Mal_buk:array [0..25] of integer; {A..Z}
Bol_buk:array [0..25] of integer; {a..z}
i, B : BYTE;
begin
CLRSCR;
{for i:=0 to 255 do
A[i]:=0;}
for i:=0 to 9 do
Cif[i]:=0;
for i:=0 to 25 do
Mal_buk[i]:=0;
for i:=0 to 25 do
Bol_buk[i]:=0;
{$I-}
Assign(F, 'D:1.txt');
Reset(F);
{$I+}
if IOResult <> 0 then
Writeln('Net isxodnogo fayla')
else
begin
{ while not Eof(F) do {Statisticaa po vsem simvolam ASII-kodam}
{ begin
Read(F,C);
A[BYTE(C)]:=A[BYTE(C)]+1;
end;
{Chitaem iz fayla i raskidivaem po massivam}
while not Eof(F) do {A..Z, 0..9, a..z}
begin
Read(F,C);
B:=BYTE(C);
if (B>=48)and(B<=57) then
Cif[B-48]:=Cif[B-48]+1;
if (B>=65)and(B<=90) then
Mal_buk[B-65]:=Mal_buk[B-65]+1;
if (B>=97)and(B<=122) then
Bol_buk[B-97]:=Bol_buk[B-97]+1;
end;
{Vivodim na ekran vse massivi}
for i:=0 to 9 do
begin
Write('"',CHR(i+48),'"','-',Cif[i],' ');
end;
WriteLN;
for i:=0 to 25 do
begin
Write('"',CHR(i+65),'"','-',Mal_buk[i],' ');
end;
WriteLN;
for i:=0 to 25 do
begin
Write('"',CHR(i+97),'"','-',Bol_buk[i],' ');
end;
end;
readln;
Close(F);
end.
;)
Ответ отправил: Malish (статус: 4-ый класс)
Отправлен: 24.03.2005, 21:39
Отвечает: Strory
Здравствуйте, Lonelywolf! Первое, что приходит в голову: создаём массив: var chars: array [0..255] of integer;
Теперь вот так считаем:
for i := 1 to FileSize(InputFile) do begin Read(ch); inc(chars[ord(ch)]); end;
Теперь в массиве содержатся счётчики каждого символа. –– Who is DOS? DOS's dead, baby, DOS's dead... С уважением, Strory.
Ответ отправил: Strory (статус: Студент)
Отправлен: 24.03.2005, 22:06
Отвечает: Master135
Писать все сказать честно в лом, но ищи по ASCII кодам символов они все рядом, так что можно в цикле...
Ответ отправил: Master135 (статус: 2-ой класс)
Отправлен: 25.03.2005, 00:41