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

Компилятор шутит. Как его успокоить? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Перегрузка функций http://www.cyberforum.ru/cpp-beginners/thread766619.html
Задание: Написать перегруженные функции и основную программу, которая их вызывает. а) для массива целых чисел находит количество нечетных элементов; б) для строки находит количество слов в ней. Вот код: #include <iostream> #include <conio.h> // #include <stdio.h> using namespace std; int func (char S )
C++ Поиск ключа в бинарном дереве поиска Здравствуйте! Помогите ещё с задачками) 1.Поиск ключа в бинарном дереве поиска (точное соответствие). 2. Поиск ключа в бинарном дереве поиска (меньше или равно). 3. Поиск ключа в бинарном дереве поиска (строго меньше). Если возможно - с кодом http://www.cyberforum.ru/cpp-beginners/thread766613.html
C++ Параллельное программирование: нахождение интеграла
Нужно распараллелить метод средних прямоугольников. Долго не мучаясь, решил воспользоваться OpenMP, вот что получилось: // intagral_omp.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <omp.h> #include <iostream>
C++ перевести число в масив символів двійкового коду
Покажите пример пожалуйста как это сделать ? и как его словами можно описать? Добавлено через 35 минут И вот ответьте на вопрос пожалуйста. що повертає рядок з одного символу по інший с++?
C++ Можно ли обобщить оператор delete ? http://www.cyberforum.ru/cpp-beginners/thread766555.html
Здравствуйте! Есть некоторый класс в котором есть указатель которому присваивается некоторое значение "из-вне" так сказать, так вот его деструктор должен освобождать память на которую указывает этот указатель. Но классу ничего не известно о тому на что указывает этот указатель (массив/переменная), и надо как-то удалять, если использовать для этого: delete pointer; не вызовет ли это у меня...
C++ Передача в функцию метод класса Не получается передать в функцию метод класса... hge->System_SetState(HGE_FRAMEFUNC,&GameManager::UpdateScene); hge->System_SetState(HGE_RENDERFUNC,&GameManager::RenderScene); Выпадает ошибка: e:\source\visualstudio2008\project\phenomen\phenomen\source\c_gamemanager.cpp(18) : error C2664: 'void HGE::System_SetState(hgeBoolState,bool)' : cannot convert parameter 1 from... подробнее

Показать сообщение отдельно
ogcjm
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 34
19.01.2013, 23:11     Компилятор шутит. Как его успокоить?
Ниже приведён код, который по алгоритму Фано должен строить коды. В функции Fano компилятор сам по себе, там где это отмечено в коментарии изменят совершенно не то, что ему говорят. В чём может быть дело?
Вот код:

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
#define MAX_CODE 8
//функция вычисления медианы массива freq
//отсортирвоанного по убыванию
int Median(const int freq[], int start, int end){
    int sumL, sumR;
    int d, i, m;
 
    //считаем сумму в левой части
    sumL = 0;
    for(i = start; i < end; i++)
        sumL += freq[i];
 
    //сумма в правой части на 1 шаге
    sumR = freq[end];
 
    //ищем медиану
    m = end;
    do{
        d = sumL - sumR;
        m--;
        sumL -= freq[m];
        sumR += freq[m];
    }while(abs(sumL - sumR) <= d);
 
    return m;
}
 
//freq - массив вероятностей букв
//start и end - индексы начала и конца обрабатываемой части массива freq
//code - массив, в который записываются элементарный коды букв
//k - длина уже построенных кодов в обрабатываемой части массива code
void Fano(const int freq[], int start, int end, char code[][MAX_CODE + 1], int k){
    int i, m;
 
    if(end > start){
        m = Median(freq, start, end);
 
        for(i = start; i <= m; i++)
            code[i][k] = '0';
        for(; i <= end; i++)
            code[i][k] = '1';       //при первом вызове функции, вот здесь меняется freq[1]
        k++;                        //в последующих рекурсивных вызовах изменяются и другие элементы
 
        Fano(freq, start, m, code, k);
        Fano(freq, m + 1, end, code, k);
    }
}
 
int main(void){
    const int size = 4;
    const int freq[size] = {60, 25, 10, 5};
    char code[][MAX_CODE + 1] = {0};
    
    Fano(freq, 0, size - 1, code, 0);
 
    for(int i = 0; i < size; i++){
        cout << "freq: " << freq[i] << endl;
        cout << "code: " << code[i] << endl << endl;
    }
 
    return 0;
}
Добавлено через 11 минут
Причём, надо заметить, что параметр объявлен как const и это не мешает компилятору. Что это?

Добавлено через 2 минуты
Вот ещё одна странность, если в main объявления массивов freq и code поменять местами, то элементы массива freq не изменяются, не изменяются но всё равно есть ошибка связанная уже с массивом code.

Добавлено через 5 минут
Вот нашёл способ исправления. Надо указать первую размерность тоже в массиве code. Но чем была вызвана ошибка мне непонятно, пока.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru