Форум программистов, компьютерный форум CyberForum.ru

Как подсчитать сумму всех info? - C++

Восстановить пароль Регистрация
 
romanroman
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 135
15.10.2013, 00:47     Как подсчитать сумму всех info? #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include <locale.h>
 
int main()
{
    setlocale(LC_ALL, "");
    int bytes[256];
    int i;
    long _size = 0;
    double p, info,z=0, entrop = 0, h = 0, h0, r, _r,n=0,q;
    FILE *fp;
    char path[128];
    unsigned char current_byte;
 
    for (i = 0; i < 256; i++)
        bytes[i] = 0;
    printf("Введите путь к файлу \n");
    scanf("%s", path);
    if (!(fp = fopen(path, "r")))
    {
        return 0;
    }
    fseek(fp,0,SEEK_END);
    if ((_size = ftell(fp)) == 0)
    {
        printf("File is empty.\n");
        fclose(fp);
        return 0;
    }
    fseek(fp,0,SEEK_SET);
    for (i = 1; i <= _size; i++)
    {
        current_byte = (unsigned char) fgetc(fp);
        bytes[current_byte]++;
    }
    fclose(fp);
    printf("Result:\n");
    for (i = 0; i < 256; i++)
    {
        if (i != 10 && i != 13 && i != 9 && bytes[i] != 0)
        {
 
            p = (double) bytes[i] / (double) _size;
            
            info = - (log10(p) / log10(2.0));
            
            
            entrop = entrop - p * ((log10(p) / log10(2.0)));
            h = h - (p * (log10(p) / log10(2.0)));
            n++;
 printf("%d%s%c%s%lf%s%lf\n", i,": ",i," (",p,"); information: ", info);
      
        }  
    }
 
 
    
    h0 = log10(n) / log10(2.0);
    r = h0 - h;
    _r = r / h0;
    q=_size-info;
   
    printf("Размер файла в байтах: %d\n", _size);
    printf("Избыточность файла: %lf\n",info);
    system("pause");
    return 1;
}
Добавлено через 6 минут
Есть кто живой??

Добавлено через 39 минут
???????
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2013, 00:47     Как подсчитать сумму всех info?
Посмотрите здесь:

C++ Ввести строку и подсчитать сумму всех букв в строке
C++ Подсчитать сумму всех чисел натурального ряда от 9 до 89 кратных 3.
C++ как подсчитать сумму цифр в массиве из двузначных чисел? массив вводится в цикле от 10 до 99.
C++ Подсчитать сумму всех элементов стоящих между первым и вторым отрицательным числом массива
C++ цикл While. Для заданных n чисел подсчитать сумму всех положительных
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
faustmangos
3 / 3 / 0
Регистрация: 02.10.2013
Сообщений: 34
15.10.2013, 01:00     Как подсчитать сумму всех info? #2
Вначале поставь условие задачи, а то не понятно ничего т.к. твой код слабо само-документирован
Да и конструкции на подобие этой "int bytes[256]" добавляют не понимания, не называй так если не знаешь что такое байт и инт
romanroman
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 135
15.10.2013, 01:02  [ТС]     Как подсчитать сумму всех info? #3
int bytes[256]-для вывода символов от 0 до 256-ти
faustmangos
3 / 3 / 0
Регистрация: 02.10.2013
Сообщений: 34
15.10.2013, 01:11     Как подсчитать сумму всех info? #4
глупо выделять 4 байта для хранения одного байта согласись
для хранения символов используй char

Добавлено через 1 минуту
в заголовках циклов куча непонятных цифорков, загони все в константы

Добавлено через 29 секунд
либо в defainы
Yandex
Объявления
15.10.2013, 01:11     Как подсчитать сумму всех info?
Ответ Создать тему
Опции темы

Текущее время: 05:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru