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

Помогите справится с ошибочкой - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Задачи с массивами и символьными строками http://www.cyberforum.ru/cpp-beginners/thread367297.html
Задание 1 В прямоугольной матрице, размерностью n*m, найти номера первых отрицательных элементов каждой строки (столбца). Задание 2 Заданы 2 массива по N целых чисел. Найти наименьшее среди чисел 1-го массива, которое не входит во 2-ой массив (считая, что такое число есть). Задание 3 В строке символов поменять местами символы на четных и нечетных позициях.
C++ Перевод десятичного числа в двоичное Доброго времени суток всем. Программа выполняет перевод десятиричного числа в двоичное, если остаток от деления a%b==0; записывает что b (в динамическом массиве p) равно нулю, если операция выполнялась в первый раз то b=b, и так попорядку. n в данном случае равно 2, то есть если мы представляем число 6 как 110, то b=0; b=1; b=1; два динамических массива создаются с целью того, чтобы потом... http://www.cyberforum.ru/cpp-beginners/thread367294.html
STL :: map C++
Столкнулся с такой проблемой: Нужно вставить в отсортированную map-таблицу элемент. Использую: myMap.insert(myIterator,pair<type1, type2>(val1,val2) ); \\Итератор указывает на тот элемент, за место которого нужно было вставить новый элемент Но во время отладки увидел что insert добавляет все в конец таблицы, хотя нужно было в середину. Может я как бы не правильно использовал функцию, ...
C++ Идеальное хеширование
Суть вопроса заключается вот в чем. В методичке по лабораторным рассказывается про идеальное хеширование. Идеальное хеширование Чаще всего хеширование используется из-за превосходной средней производительности, возможна ситуация, когда реально получить превосходную производительность хеширования в наихудшем случае. Такой ситуацией является статическое множество ключей, т.е. после того как...
C++ Дано 10 чисел, вводимых с клавиатуры. найти два крупнейших числа и их номера http://www.cyberforum.ru/cpp-beginners/thread367268.html
есть 10 чисел вводимых с клавиатуры. найти два крупнейших числа и их номера. int poz1, poz2, max1,max2;// using namespace std; cout<<"vvedit 10 chusel: \n"; max1=max2=0; cin >> b; if(b>max1) {max1 = b; poz1=1; poz2=2;} cin >> c; if(c>max1) {max2 = max1; max1 = c; poz2=2; poz1=1;} cin >> d;
C++ Ряд Тейлора. Нужна помощь Добрый день всем. Возникла такая проблема. Есть ряд An= (x в степени 2n+1)/(2n+1) Нужно ввести x нач. и x кон., шаг и точность. Вывести на экран таблицу значений, аргумент и кол-во слагаемых в операции Но есть еще приписка x по молулю<1 Помогите решить) подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
16.10.2011, 18:36     Помогите справится с ошибочкой
Цитата Сообщение от AvengerAlive Посмотреть сообщение
Обычная реализация дека. Само по себе работает. Странно то, что если добавлять и удалять по одному элементу, как я записал, то программа вылетает с ошибкой. Как это исправить?

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
#include <iostream>
using namespace std;
 
class Dek
{
 private:
  int *mem,*head;
  int size,maxsize;
 public:
  Dek() { head=mem=new int [10]; maxsize=10;size=0; }
  Dek(int kol_vo) {maxsize=kol_vo; head=mem=new int[maxsize]; size=0;}
  Dek(const Dek &y);
  ~Dek() { delete mem; head=NULL; size=maxsize=0; }
  int push_fr(int x){if(size<maxsize){*head=x; size++; head++; return 0;}else return -1;}
  int push_bc(int x){if(size<maxsize){ mem--; *mem=x; size++; return 0;}else return -1;}
  void show();
  int pop_fr(int *x){if(size>0){head--; *x=*head; size--; return 0;}else return -1;}
  int pop_bc(int *x){if(size>0){*x=*mem; mem++; size--; return 0;}else return -1;}
};
 
void Dek::show()
{ 
 int *w;
 for (w=mem;w<head;w++) {cout << *w << " "; }
}
 
Dek::Dek(const Dek &y)
{
 maxsize=y.maxsize;
 mem=new int [maxsize];
 for(size=0;size<y.size;size++) mem[size]=y.mem[size];
 head=mem+size;
}
 
int main(void)
{
 Dek ob(3);
 int x;
 for (x=0; x<1000; x++)
  {
   ob.push_fr(x);
   ob.show();
   ob.pop_bc(&x);
  }
 return 0;
}
Уважайте тех. к которым обращаетесь за помощью! Сообщите, какая ошибька возникает!

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