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

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

Войти
Регистрация
Восстановить пароль
 
maSt
5 / 5 / 1
Регистрация: 28.02.2010
Сообщений: 166
#1

Куча была повреждена, работа с указателями - C++

18.11.2012, 23:57. Просмотров 1072. Ответов 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
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
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
 
int main()
{
    int iloscproblem;
    cin >> iloscproblem; 
    do 
    {
        int ilosc;
        cin >> ilosc;
        int *coag=(int*)malloc(ilosc*sizeof(int));
        int *koniec=coag+ilosc;
        unsigned int rst=(ilosc+2)%3;
        int *RST=(int*)malloc(rst*sizeof(int));
        for(int *i=coag;i<koniec;i++)
        {
            cin>>*i;
        }
        unsigned int minus=0,counter=1;
        cin >> minus;
        for(int *i=coag+minus,*w=i-1;i<koniec;i++,counter++) //
        {
            if(counter<minus) 
            {
                *(w++)=*i;
            }
            else // 
            {
                counter=0; 
                ilosc--;
            }
        }
        unsigned int iloscpodpr=0;
        cin >> iloscpodpr;
        do
        {
            koniec = coag+ilosc;
            unsigned int dzielnik,modulo;
            cin >> dzielnik;
            cin >> modulo;
            int *rstm=RST; 
         for(int *i=coag,*w=i;i<koniec;i++) 
           {
            if(((*i)%dzielnik)==modulo) 
            {
                *(rstm++)=*i;
            }
            else
            {
                *(w++)=*i; 
            }
           }
         unsigned int meoww=rstm-RST;
 
         ilosc = ilosc - meoww;
         meoww%=3;
           if(meoww) 
           {
               do
               {
                   *(rstm++)=0;
               }
               while(meoww++<3); 
           }// S i T + zera
         unsigned int count=0,l=0;
         for(int *r=RST,*s=r+1,*t=s+1,rev=0;r<rstm;r+=3,s+=3,t+=3) // 
           {
                cout << *r << " "; 
               if (r==RST)
               {
               l = 0;
               }
               else
               {
               l=*s-rev;
               }
            if((rev= *r + (l))>0) // R(i)=S(i)-R(i-1) 
              {
               cout << *t << " ";   // Здесь программа вылетает  с ошибкой "куча была повреждена"
               count++; 
              }
           }
          cout<<endl<<count<<endl;
        }
        while(iloscpodpr--);
         if(RST) free(RST); 
      if(coag) free(coag);
    }
    while (iloscproblem--);
 
return 0;
 
}
Написал программу.
вкратце - нам дают некоторое количество чисел , мы удаляем из данного нам ряда каждое n-ое число ,
потом делим на 3 массива и выводим 3. Но при выводе выдает ошибку.повреждена куча.
может так нельзя выводить указатели или что тут не так?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2012, 23:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Куча была повреждена, работа с указателями (C++):

Куча была повреждена и прочие радости - C++
В каждом байте BMP изображения программа подменяет последние несколько бит на биты какого-то файла (отдельно есть алгоритм, извлекающий эту...

Куча была повреждена. При выделении памяти - C++
Всем привет. Вот в этой строчке(83) : XY-&gt;NextXY = new StructXY; Не понимаю что не так. После её работы выдаёт что куча повреждена. ...

Повреждена куча - C++
Запускаю - если ввожу любое число больше 2х, то все работает. Но если пишу количество: 2, программа не воспроизводит результат. И пишет,...

Повреждена куча при работе с динам. памятью. Почему? Как исправить? - C++
Приветствую всех! Такая проблема: Вот есть код. В нем периодически появляются ошибки, а иногда и не появляется, и все хорошо работает....

Работа с указателями - C++
Доброго времени суток, нужна помощь. Данный две задачи, обе работают правильно: Дан целочисленный массив размера N. Преобразовать...

Работа с указателями - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; void fun(int *p) { int *temp=new int; *temp=15; delete p; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Эксперт CЭксперт С++
13233 / 7505 / 846
Регистрация: 27.09.2012
Сообщений: 18,433
Записей в блоге: 3
Завершенные тесты: 1
19.11.2012, 00:05 #2
Вообще же ничего не понятно... разбираться долго. Что вводить то нужно?
0
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
19.11.2012, 00:10 #3
Наверняка проблема в том, что у вас RST недостаточного размера. По 17-18 строке он у вас максимум на два инта. И в строке 70 t указывает чёрти куда, а не на выделенную память. Так что чините логику работы.

Не по теме:

И, умоляю, 1) не используйте в Си++ malloc()/realloc()/free(); 2) выучите английский.

1
maSt
5 / 5 / 1
Регистрация: 28.02.2010
Сообщений: 166
19.11.2012, 00:20  [ТС] #4
спасибо, буду чинить.
английский и так знаю, если что , переменные имеют польские названия)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2012, 00:20
Привет! Вот еще темы с ответами:

работа с указателями - C++
Помогите решить задачу в С++ (я в этом начиющий): 1)Из положительных значений двух целочисленных массивов различной размерности...

работа с указателями - C++
небольшая проблемка, никак не могу разобраться с указателями. Я так понял что создавая массив лучше если сразу сдалешь на него указатель и...

работа с указателями - C++
Вспоминаю с++ и в связи с этим возникло несколько вопросов. 1) если сделать так : myobj *obj = new myobj(); то потом можно...

Работа с указателями - C++
Здравствуйте! Есть массив созданный ГСС. Надо написать функция которая вычисляет сколько в нем четных чисел, выделяет память под них и...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.11.2012, 00:20
Ответ Создать тему
Опции темы

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