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

Засорение памяти - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не работает seekp() http://www.cyberforum.ru/cpp-beginners/thread754137.html
Здорова господа!!! У меня вообщем проблемка я от отрываю файл для редактирования ios::app курсор в конце файла затем делаю seekp(0) курсор должен как бы переместиться в начало файла затем делаю отступ от начала на n-байт(символов) seekp(3) затем идет запись поверх имеющейся записи в файле ob6ekt <<"blabla" Казалось бы должно работать но почемуто у меня записывается в конец файла, а не в...
C++ build и Debug какя разница? создаю простейшй проект, нажимаю Ф8 (старт Debug) и появляется "Привет" в консоли, то же самое но нажимаю на Ф9 (Build и Run) и опять "Привет" так в чем разница и зачем между билдом и дебгером если реультат тот же?? гуглил!) Code::Blocks http://www.cyberforum.ru/cpp-beginners/thread754133.html
Разложение функции tgx в ряд Тейлора C++
Обыскался везде - не могу найти функцию на c++. которая раскладывала бы функцию tg(x) по ряду Тейлора. Помогите плиз. Сам написать пробовал - не понимаю Биноминальных чисел, хоть убей. Заранее спасибо:)
Поразрядная сортировка и его недостатки C++
Собствено сабж в "плохости" поразрядной сортировки. Ведь, если она отрабатывает за линейное время и не требует спец. аппаратной поддержки, а так же имеет устойчивую реализацию, то почему вместо неё чаще используют либо быструю сортировку Хоара, либо сортировку слиянием? Какие такие у неё недостатки, из-за которых прирост на logN считается малым?
C++ Используя рекурсивную функцию, выдать первые n элементов последовательности, которые больше заданного числа m http://www.cyberforum.ru/cpp-beginners/thread754041.html
Помогите срочно!!!Нужно написать программу рекурсией!!Но я рекурсию вообще не понимаю. Помогите пожалуйста!! Используя рекурсивную функцию, выдать первые n элементов последова- тельности = 5 - 20, = 2 n n-1 0 x ⋅ x x , которые больше заданного числа m. Заранее спасибо!! PS:Если возможно, с краткими комментариями !!
C++ Вычислить объем цилиндра по известному радиусу основания и высоте Написать программу, вычисляющую объем цилиндра по известному радиусу основания и высоте. Расчет должен производиться в функции, которая получает данные по ссылке и возвращает результат по ссылке. подробнее

Показать сообщение отдельно
nikitaevg
0 / 0 / 0
Регистрация: 23.07.2011
Сообщений: 57

Засорение памяти - C++

06.01.2013, 16:55. Просмотров 301. Ответов 5
Метки (Все метки)

Добрый день, так как я еще школьник и знаю очень мало, прошу не ругать. Написанная мной программа если запускать ее снова и снова(поставить goto в конце) начинает жрать все больше и больше оперативной памяти. Как это исправить? Это началось после добавления ф-ии put. Вот код:
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
// Otd.cpp: пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ
// пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ.
// 
 
#include "stdafx.h"
#include<iostream>
#include<ctime>
using namespace std;
/*int sea(int x,long int *mas,int kol)
{
    int t=1;
    for(int i=0;i<kol;i++)
        if(x==mas[i])
        {t=2;goto r;}
        r:;
 
    return t;
}*/
long int put(long int **matr,long int xn,long int yk,long dln)
{
    long int *si=new long int[dln*dln];
    long int x1,y1;
    x1=xn;
    long int s=0;
    long int dt=0;
    long int *dt1=new long int[dln*dln];
    long int dl=matr[xn][yk];
    if(dl==1&&dl==0)
        goto f;
    for(int i=1;i<=dln+1;i++)
    {
     while(i>=dln+1)
        {
            if(s==0)
                goto f;
            s--;
            
            i=si[s]+1;
            if(s==0)
            {x1=xn;dt=0;}
            else
            {x1=si[s-1];dt=dt1[s-1];}
 
        }
        if(matr[x1][i]+dt<dl&&i!=x1)
        {
            for(int j=0;j<s;j++)
                if(si[j]==i)
                    goto s;
            si[s]=i;
            dt+=matr[x1][i];
            dt1[s]=dt;
            x1=i;
            s++;
            i=0;
            if(matr[x1][yk]+dt<dl)
                dl=matr[x1][yk]+dt;
        }
        s:;
        
    }
    f:;
    return dl;
}
 
int main(void)
{
s2:;
    
    long int dn = 0;
    long int kgor = 0;
    long int kmer = 0;
    //cin >> dn >> kgor >> kmer;
    dn=rand()%20000+3;
    kgor=rand()%249+1;
    kmer=rand()%17+1;
    long int **p = new long int *[kgor+1];
    for (long int i = 0; i <= kgor; i++)
        p[i] = new long int[kgor+1];
    long int *dm=new long int[kmer];
    long int *nm=new long int[kmer];
    long int *km=new long  int[kmer];
    for (long int i = 1; i <= kgor; i++)
        for (long int j = 1; j <= kgor; j++)
            {//cin >> p[i][j];
                if(i==j)
                    p[i][j]=0;
                else
                    p[i][j]=rand()%(dn-1)+1;
        }
    for (long int i = 0; i < kmer; i++)
        {//cin >> dm[i] >> nm[i] >> km[i];
            dm[i]=rand()%(kgor-1)+1;
            nm[i]=rand()%(dn-2)+1;
            km[i]=rand()%(dn-nm[i])+nm[i];
    }
 
    long int tmp1 = 0;
    long int tmp2 = 0;
    long int tmp3 = 0;
    for (long int i = kmer - 1; i > 0; i--)
    {
        for (long int j = 0; j < i; j++)
        {
            if (nm[j] > nm[j + 1])
            {
                tmp2 = nm[j];
                nm[j]= nm[j + 1];
                nm[j + 1]= tmp2;
                tmp1 = dm[j];
                dm[j]= dm[j + 1];
                dm[j + 1]= tmp1;
                tmp3 = km[j];
                km[j] = km[j + 1];
                km[j + 1]= tmp3;
            }
        }
    }
 
    long int ds = 1;
    long int gor = 1;
    long int s = 0;
    long int *si = new long int[kmer];
    long int sf = 0;
    for (long int i = 0; i <= kmer; i++)
    {
        //cout<<i<<' '<<s<<endl;
        if (s > sf)
                sf = s;
        if (i >= kmer)
        {
        
             do
            {
                if (s == 0)
                    goto f;
                si[s] = 0;
                s--;
                if (s == 0)
                {
                    gor = 1;
                    ds = 1;
                    i = si[s];
                }
                else
                {
                    ds = km[si[s - 1]];
                    gor = dm[si[s - 1]];
                    i = si[s];
                }
            }
            while(i>=kmer);
        }
        else if (ds + put(p,gor,dm[i],kgor) <= nm[i])
            {
                if (km[i] + put(p,dm[i],1,kgor) <= dn)
                {
                    si[s] = i;
                    s++;
                    ds = km[i];
                    gor = dm[i];
                    
                }
            }
    }
  f:;
    cout << "ok";
    goto s2;
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru