Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2010, 09:36   #1
kaizer131
Пользователь
 
Регистрация: 21.03.2009
Сообщений: 52
Вопрос частотный анализ текста

Доброго времени суток!
Решаю задачу в С++ (среда Borland C++ 3.0)
Дан файл, содержащий текст, набранный заглавными английскими буквами. В нем содержатся также знаки препинания. Провести частотный анализ текста, т.е. указать (в процентах) сколько раз встречается та или иная буква.
Моё видение алгоритма:
1 Создаём массив , содержащий английский алфавит заглавными буквами;
2 Открываем файл для чтения;
3 Делаем цикл for по массиву с алфавитом;
4 Внутри этого цикла проходим посимвольно содержимое файла;
5 При совпадении символов увеличиваем временную переменную
6 Дойдя до конца файла, выводим процент по формуле
(временная переменная * 100)/ на количество букв в файле.
7 Повторяем цикл снова , перейдя на следующий элемент массива

Вот мой код (работает с ошибками), есть подозрение что нужно делать цикл прохождения по массиву внутри цикла прохождения по файлу, а не как у меня:
Код:
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <string.h>
#include <stdlib.h>

void main()
{
int ch,g=0,p=0;
char chs[]={'A','B','C','D','E','F','G','H','I','K','L','M','N','O','P',
'Q','R','S','T','V','X','Y','Z' };
int i=0;
FILE *f;
f=fopen("18.txt","r+");
fseek(f,0,SEEK_SET);
// вывожу содержимое файла
if (f==NULL)
{cout << "File not found";}
else
{

do
{
ch=fgetc(f);
cout << char(ch);
}

while (ch!=EOF);
fclose(f);
}

f=fopen("18.txt","r+");
fseek(f,0,SEEK_SET);
for (i=0;i<23;i++)
{

//Прохожу по файлу с сопоставлением символов
while (ch!=EOF)
{
ch=fgetc(f);
cout<< char(ch);
p++;

if (char(ch)==chs[i])
{
g++;
cout <<"("<< chs[i]<<")"<<"["<< g<<"]";

}

}
ch++;
//while (ch!=EOF);
}
fclose(f);

// Вывожу количество букв
cout << "\n\nKol vo :" << p;

getch();
clrscr();
}

И второй вопрос, предстоит решение задач по структурам, типа:

Дан файл Assort, содержащий сведения об игрушках: указывается название игрушки ее стоимость в рублях и возрастные границы (например, игрушка может преднаоначаться для детей от двух до пяти пет). Получить название самой дорогой игрушки, подходящей детям двух-трех лет.

На паскале с записями такое решал, на С++ ещё не касался, со структурами(обьявление) всё понятно, а вот как они взаимодействуют с файлом?Читал, что это реализуется потоками , так ли это и в какую сторону копать ?
Движение - жизнь. Остановка - ... ?
kaizer131 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
частотный словарь в sagitron Microsoft Office Excel 11 07.01.2010 20:55
Анализ текста программы на Delphi. Сколько раз встречается оператор. alex67 Помощь студентам 5 09.12.2009 16:24
Анализ текста GonZaleZ Общие вопросы C/C++ 11 16.09.2009 23:31
Анализ текста Neymexa Помощь студентам 10 13.01.2009 18:44
анализ и преобразование текста строки Черная тень Паскаль, Turbo Pascal, PascalABC.NET 6 10.01.2009 17:33