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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
romanroman
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 135
#1

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

15.10.2013, 00:47. Просмотров 295. Ответов 3
Метки нет (Все метки)

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 минут
???????
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2013, 00:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как подсчитать сумму всех info? (C++):

Для заданных n чисел подсчитать сумму всех положительных - C++
Напечатать программу, через цикл while: Для заданных n чисел подсчитать сумму всех положительных.

Ввести строку и подсчитать сумму всех букв в строке - C++
1. Пользователь вводит строку, выбирает символ и эти символы становятся большими 2.Ввести строку и подсчитать сумму всех букв в строке...

Для заданных n чисел подсчитать сумму всех положительных - C++
Написать программу через цикл for. Для заданных n чисел подсчитать сумму всех положительных.

Подсчитать сумму всех чисел натурального ряда от 9 до 89 кратных 3. - C++
Подсчитать сумму всех чисел натурального ряда от 9 до 89 кратных 3.

подсчитать сумму всех чисел первой строки начиная с первого пока сумма не превышает Т - C++
помогите с програмой в С++ В массиве А действительных чисел подсчитать сумму всех чисел первой строки начиная с первого пока сумма не...

Подсчитать сумму всех элементов стоящих между первым и вторым отрицательным числом массива - C++
есть условие: создать одномерный массив, подсчитать сумму всех элементов стоящих между первым и вторым отрицательным числом массива. ...

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

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

Добавлено через 29 секунд
либо в defainы
0
15.10.2013, 01:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2013, 01:11
Привет! Вот еще темы с ответами:

Ввести одномерный массив из n элементов. Вычислить сумму всех отрицательных чисел, их количество и сумму всех - C++
Ввести одномерный массив из n элементов. Вычислить сумму всех отрицательных чисел, их количество и сумму всех положительных чисел. Вот...

Как подсчитать контрольную сумму файла или вектора? - C++
1) Как подсчитать контрольную сумму подобного вектора? struct Trans { string Tag; string Rus; string Eng; inline...

Как подсчитать сумму цифр в массиве из двузначных чисел? - C++
как подсчитать сумму цифр в массиве из двузначных чисел? массив вводится в цикле от 10 до 99. помогите, пожалуйста(((

Как подсчитать сумму элементов данной последовательности через цикл? - C++
Зедение таково. Подсчитать сумму элементов последовательности: 1 + 1/2 - 2/3 + 3/4 - 4/5 +... + n-1/n ((((


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru