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

Исследование быстродействия алгоритма - исправить ошибки в коде - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Написать Windows-приложение — графическую иллюстрацию графика уравнения, y = 3 x-1 http://www.cyberforum.ru/cpp-beginners/thread1175892.html
Написать Windows-приложение — графическую иллюстрацию графика уравнения, y = 3 x-1, и обратного к нему (т.е. значения координат х заменяются на у и наоборот). Создать меню с командами Enter, Choose, Show_one, Show_two, About, Exit. Команда Exit завершает работу приложения. Команда About открывает окно с ин¬формацией о разработчике. В начале работы должна автоматически выполняться команда...
C++ Как нарисовать окружность и треугольник в консоли? Программная модель движения шариков в замкнутом пространстве. Пользователь вменю выбирает любую фигуру из: квадрат, треугольник, круг. Фигура рисуется на весь экран и в ней поочередно появляется 10 шариков, разного цвета,которые перемещаются хаотично, не вылетая за рамки фигуры. При нажатии Enter появляется меню, в котором пользователь может выбрать другую фигуру или выйти. мне надо выполнить... http://www.cyberforum.ru/cpp-beginners/thread1175889.html
Vcl.h: No such file or directory C++
Программа не может открыть библиотеку vcl.h Работаю на Dev C++ 5.6.3 OC: Windows 8.1. пмоогите!!
Дружественная функция подсчета площадей C++
Требуется для класса «круг» (определяется радиусом) и «треугольник»(определяется тремя точками на плоскости) написать дружественную функцию подсчета площадей этих фигур. Проверить возможность вписывания (описания) в (около) треугольник (треугольника) В общем простенькую программу для подсчета площадей написал, а вот как переделать с дружественной функцией - не совсем понял, пробовал,...
C++ Написать програму работы со списком структур http://www.cyberforum.ru/cpp-beginners/thread1175843.html
Здравствуйте:) Помогите пожалуйста найти или написать программу, которая будет соответствовать критериям: 1) Сформировать структуру из: ≥ 4 строковых полей; ≥ 3 числовых полей; 2) Сформировать двунаправленный список; 3) Составить функции добавления в список, просмотра списка, удаления из списка по заданному параметру; 4) Составить функции расчета или подсчета статистики (≥4). Вот код...
C++ Запись и считывания бинарного дерева с текстового документа Подскажите как записать и считать бинарное дерево с текстового документа! Вот рабочая программа, кому надо смотрите пользуйтесь: //--------------------------------------------------------------------------- #include <clx.h> #include <stdio.h> #include <conio.h> #include <string.h> #include <iostream.h> #pragma hdrstop... подробнее

Показать сообщение отдельно
romasimeiz
6 / 6 / 0
Регистрация: 11.04.2011
Сообщений: 260
14.05.2014, 17:56     Исследование быстродействия алгоритма - исправить ошибки в коде
Добрый день!
Прошу подсказать несколько технических моментов ибо в c++ новичок.
Сделал по методичке лабораторную работу, по поиску значений. Всё работает, разобрался.
Затем возникла задача исследовать быстродействие алгоритма.
Всё по той же методичке добавил в программу ещё некоторые функции для исследования, но непонятны технические моменты. Выдало 6 ошибок, я понимаю, что они связаны с типами, списками и т.д. Но не могу понять что и почему. Видимо что то неправильно объявил.
Объясните пожалуйста что не так.

Кусок файла *.h :

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
template <class K, class I> class E
{
    K   ke;
    I   it;
    bool  valid;
public:
    E() : valid( false ) {}
    E( const K& ke_, const I& it_ ) : ke( ke_ ), it( it_ ), valid( true ) {}
    
    const K& key() const { return ke; }
 
    I& item() { return it; }
    void set_item( const I& it_ ) { it = it_; }
 
    bool is_valid() const { return valid; }
 
    bool operator==( const E& e ) const { return ke == e.ke; }  
    bool operator<( const E& e ) const { return ke < e.ke; }    
};
class lab05
{
    typedef int t_item;
    typedef int K;
    typedef int I;  
    typedef std::pair<K,I> elem;
    typedef std::vector<elem> t_cont;
    typedef std::vector<E<K, I> > T;
    static E bad_elem; // error C2955: E: для использования класса шаблон требуется список аргументов шаблон см. объявление 'E' 
                                 
    t_item rnd( t_item range, t_item bias = 0 ) const
    { return rand() * range / RAND_MAX + bias; }
 
    typedef vector<t_item> t_items;
 
    t_items m_Items;
    int m_iLeft, m_iRight, m_iPrev;
    int m_iPtr;
    t_item  m_Key;
    int m_iStep[2];
    int m_iRes[2];
    t_cont cont;
    void binary_search();
    void linear_search();
    int calc_mid() const { return ( m_iRight - m_iLeft ) / 2 + m_iLeft; }
    void move_right_border( int x ) { m_iPrev = m_iRight; m_iRight = x; }
    void move_left_border( int x ) { m_iPrev = m_iLeft; m_iLeft = x; }
    &E find_rand_test( const K& ke_,  T& tab, int& count ); // error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "find_rand_test"
// и ещё две одинаковых с сообщением : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию 
//сюда же  warning C4183: find_rand_test: отсутствие возвращаемого типа; предполагается функция-член, возвращающая 'int'
Файл реализации:

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
E& lab05::find_rand_test( const K& ke_,  T& tab, int& count )
    { // здесь error C2556: E &lab05::find_rand_test(const lab05::K &,lab05::T &,int &): перегруженная функция отличается от 'int lab05::find_rand_test(const lab05::K &,lab05::T &,int &)' только возвращаемым типом  см. объявление 'lab05::find_rand_test'
 
// ещё одна : error C2040: lab05::find_rand_test: "E &(const lab05::K &,lab05::T &,int &)" отличается по уровням косвенного обращения от "int (const lab05::K &,lab05::T &,int &)"
 
        for( T::iterator i = tab.begin(), e = tab.end(); e != i; ++i )
        {   ++count;
            if( i->key() == ke_  ) return *i;
        }
        return bad_elem;
    }
 
int lab05::find_test_key( const t_cont& cont ) 
{ 
return cont[rand() % cont.size()].key();  // error C2039: key: не является членом "std::pair<_Ty1,_Ty2>"
}
 
void lab05::make_seq( t_cont& cont, int N )
{
        cont.clear();
        cont.reserve( N );
        for( int i = 0; i < N; ++i )
        {
            int el = rand();
            cont.push_back( elem( el, el ) );
        }
}
 
void lab05::test( fstream& res, int N, t_cont& cont )
{
    int numTests = 4;
    make_seq( cont, N );
    int cmp_count = 0;
    for( int t = 0; t < numTests; ++t )
    {
        int k = find_test_key( cont );
        find_rand_test( k, cont, cmp_count );
    }
    cmp_count /= numTests;
    res << N << " " << cmp_count << std::endl;
}
 
void lab05::Input( int N, t_item Range, t_item Bias )
{
    t_cont cont;
    std::fstream res( "test.log", std::ios_base::trunc | std::ios_base::out );
    m_Items.clear();
    m_Items.reserve( N );
    int S=5;
    int minN = 2;
    int deltaN = 1;
    srand( std::clock() );
    for( int n = 0; n < S; ++n )
    {
    int N = minN + n * deltaN;
    
    }
 
    for( int i = 0; i < N; ++i )
        m_Items.push_back( rnd( Range, Bias ) );
 
    stable_sort( m_Items.begin(), m_Items.end() );
}

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