Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 41
от 29.03.2005, 12:10

Администратор:Калашников О.А.
В номере:Вопросов: 1, Ответов: 7


Вопрос № 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
Здравствуйте, Lonelywolf!
Предлагаю воспользоваться множествами

Приложение:

Ответ отправил: 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.pasplus
Отписаться

В избранное