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

Не понятная ошибка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ ошибка http://www.cyberforum.ru/cpp-beginners/thread859372.html
помогите найти ошибку void create_list(Mine ** last, Mine ** start) { int first; printf("Enter first element: "); testint(&first); Mine *p = new Mine; p->elem=first; if(!*last) {
C++ Шифр Бэкона c++ Народ,помогите пожалуйста перевести шифр с паскаля на c++ :) program strug_production; var s_out, s_in, str,itogstroka,tekbukva: string; fa: text; ik, len, n: integer; begin assign(fa, 'c:\text.txt'); reset (fa); http://www.cyberforum.ru/cpp-beginners/thread859370.html
Какой функционал нужно обеспечить классу, который будет хранится в map-e C++
В мапе нужно хранить связный список - самописный контейнер на подобие list с STL Какие операторы и конструкторы нужно создать?
Хелп! родовой класс, который реализовывал бы очередь C++
Нужно разработать родовой класс, который реализовывал бы очередь. Не знаю даже приблизительно с чего начать(
C++ Перевсти с pascal http://www.cyberforum.ru/cpp-beginners/thread859361.html
Переведите пожалуйста текст с pascal на С++ var v1,t1,v2,t2,v3,t3,s1,s2,s3,sum:real; begin writeln('Введите время t1 и скорость v1'); readln(t1,v1); writeln('Введите время t2 и скорость v2'); readln(t2,v2); writeln('Введите время t3 и скорость v3'); readln(t3,v3); s1:=v1*t1;
C++ Третье по величине значение В массиве из 10 целых чисел, найти третье по величине(наибольшее) число. На входе: 1000 1 1 2 3 4 5 6 7 8 9 1000 2 338 304 619 95 343 496 489 116 98 127 3 931 240 986 894 826 640 965 833 136 138 4 940 955 364 188 133 254 501 122 768 408 5 42 468 335 501 170 725 479 359 963 465 подробнее

Показать сообщение отдельно
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
08.05.2013, 18:08     Не понятная ошибка
Здорова господа!
Вообщем проблема. Написал короче программку как бы имитация контейнеров с общим базовым классом. И пытаюсь туда запулить 10000 элементов. Но когда я их вывожу выводится только 4300 ну примерно где то так элементов и вылазит ошибка. Вот код самой программы.
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
//programma proizvoditel6nocti
#include <iostream>
using std::cout;
using std::endl;
#include <vector>
using std::vector;
#include <cstdlib>
using std::rand;
using std::srand;
#include <ctime>
using std::time;
 
//Vector iz 16.5.[9]
struct Object
{
    Object* pre;
    Object* next;
    //...
public:
    //konctryktor po ymolchaniyu
    Object():pre(0),next(0){}
 
    //virtual6nui dectryktor
    virtual ~Object(){};
};
 
class Container : public Object
{
public:
    struct Bad_op//klacc icklyuchenii
    {
        const char* p;
        Bad_op(const char* pp):p(pp){}
    };
    
    virtual void put(Object*){throw Bad_op("put");}
    virtual Object* get() {throw Bad_op("get");}
    virtual Object*& operator[](int){throw Bad_op("[]");}
    
    //...
};
 
class Vector1 : public Container
{
    Object* tek;//pervui element;
    int size;//razmer
public:
    //konctryktor preobrazovani9
    Vector1(int i):size(i),tek(0){}
 
    //dabavit6 elementu
    void put(Object* a)
    {
        //cout <<"Mu v put"<<endl;
        if(tek==0)
        {
            //cout <<"vector pyct"<<endl;
            if(size!=0)
                tek=a;
        }
        else
        {
            //cout <<"vector ect6 elementu"<<endl;
            Object* temp=tek;
            tek->next=a;
            a->pre=tek;
            tek=a;
        }
    }
 
    //indekc
    Object*& operator[](int a)
    {
        //cout <<"Mu cdec6"<<endl;
        if(a==0)
            return tek;
        else
        {
            if(a>0&&a<size)
            {
                int count=0;
                Object* t = opHelper(a,tek->pre,count);
                //cout <<"t= "<<t<<endl;
                return t;
            }
        }
        //return 0;
    }
 
    //opHelper
    Object*& opHelper(int& a, Object* Ptr,int& count)
    {
        if(Ptr!=0&&++count==a)
        {
            //cout <<"a= "<<a<<" cout= "<<count<<endl;
            //cout <<"MU TYT"<<endl;
            //exit(1);
            //cout <<"Ptr= "<<Ptr<<endl;
            return Ptr;
        }
        else if(Ptr!=0&&count!=a)
            opHelper(a,Ptr->pre,count);
        else
        {
            //cout <<"element ne cozdan"<<endl;
            exit(1);
        }
    }
    //...
};
 
class elem : public Object
{
public:
    int data;
    elem(int a):data(a){}
};
 
int main()
{
//proizvedem podcchet dl9 Vector iz 16.5.[9]
    Vector1 vec2(10000);
    for(int i=0;i<10000;i++)
    {
        elem* a= new elem(rand()%1023);
        //cout <<a.data<<endl;
        //a=(rand()%1024);
        vec2.put(a);
        if(i==9999)
            cout <<"i= "<<i<<endl;
    }
    //elem* pr=dynamic_cast<elem*>(vec2[7000]);
    //cout <<pr->data<<endl;
    //exit(1);
    //podcchet crednego arifmeticheckogo
    double sum=0;
    double sredV=0;
    for(int i=0;i<10000;i++)
    {
        //elem* pr=dynamic_cast<elem*>(vec2[i]);
        cout <<i<<endl;//do 4000 примерно выводит и тормозит.
        sum+=dynamic_cast<elem*>(vec2[i])->data;
    }
 
    return 0;
}
Он видно оно посчитало щас до 4380, а прошлые разы когда вся программа была полностью считала до 4170. Я от не пойму мб память израсходовала всю программа, а может быть слишком много рекурсивных вызовов функций в классе. Кто шарит может просто просветить в чом все таки ошибка, а то по тому что выскочило окошко я ничего не понял.

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