Найти вероятность появления каждой буквы в файле - C (СИ)
Формулировка задачи:
берем 2 файла с разными текстами,ищем в каждом файле,какая вероятность появления каждой буквы
если вероятность символа в тексте А равна вероятности в тексте Б,то поменять местами их и занести в файл С.
есть слово в первом файле "карандашр"
вероятность буквы "а" = 37,5%
есть словово втором файле "порошокак"
тут вероятность буквы "о" тоже 37,5
т.е их все поменять местами и записать в файл С
"а" поменять с "о"
"к" поменять с "р"
з.ы. и еще,подскажите,как быть с погрешностью?
ведь вероятность появления символов мб 2,34% ,а друга 2,37% как сделать,чтобы они поменялись
т.е. с учетом погрешности
int xoq()
{
int n=0;
float a[256],b[256];
file_out = fopen("output.txt", "w");
// fputc (buf,file_out);
for(n='A'; n<='z'; n++){
fseek(file_out,(b[k]),SEEK_SET);
if (((b[k]/p)*100)==((a[n]/p)*100)) // p - это счетчик всех символов в файле ,
fputc (a[n],file_out); //((a[n]/p) -вероятность появления каждого символа
}
fclose (file_out);
}Решение задачи: «Найти вероятность появления каждой буквы в файле»
textual
Листинг программы
#define E 0.025
if(a[i] + E > b[i] && b[i] > a[i] - E){
// значит погрешность допустимая
}
Объяснение кода листинга программы
- У нас есть массив
aи массивb, которые, как предполагается, содержат частоты появления букв в файле. #define E 0.025- это определение константыE, которая представляет собой допустимую погрешность.- В условии
if(a[i] + E > b[i] && b[i] > a[i] - E)мы проверяем, является ли разница междуa[i]иb[i]допустимой погрешностью. - Если это так, то мы знаем, что погрешность допустимая, и мы можем продолжить работу с этими значениями.
- Если это не так, то мы должны принять меры для обработки недопустимой погрешности.