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

Освобождение памяти в классах - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка вектора по двум полям http://www.cyberforum.ru/cpp-beginners/thread1310868.html
Вектор состоит из структуры с двумя полями: день недели и время. Нужно отсортировать так, чтобы сначала в векторе хранились структуры, у которых день недели понедельник, потом, где день недели...
C++ Чтение текста из файла Здравствуйте. У меня есть задание по С++ и один из его аспектов - это поиск программой текстового файла внутри папки с проектом VS2013 и предложение ввести имя желаемого файла в командной строке.... http://www.cyberforum.ru/cpp-beginners/thread1310856.html
Вернуть двухмерный вектор с класса? C++
Как правильно вернуть матрицу созданною через вектора из класса, в котором она созданная? вот мой код: #include <iostream> #include <vector> using namespace std; int n=10, m=10; class MATRIX{...
Кому интересно писать задачки на Dev-с++, не проходим мимо с меня +) C++
Масив X(n) розбитий на m фрагментів. У цілочисельному масиві K(m) зберіга*ються довжини відповідних фрагментів (усі k різнi, їх сума дорівнює n). Впорядкувати масив K за зростанням, переставивши...
C++ Выделение диапазона в Excel http://www.cyberforum.ru/cpp-beginners/thread1310848.html
Всем доброго времени суток. Есть программа,которая копирует данные с 1 книги экселя в другую,с определенными параметрами,форматом,проверкой и тд. Столкнулся с проблемой форматирования ячеек(и...
C++ Разработать программу для вычисления определенного интеграла методом трапеций Разработать программу для вычисления определенного интеграла методом трапеций для функции типа: y=a*{e}^{b*sin(c*x)}+d . Коэффициенты a, b, c, d и границы интервала интегрирования считываются с... подробнее

Показать сообщение отдельно
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3912 / 2149 / 549
Регистрация: 18.10.2014
Сообщений: 3,756
25.11.2014, 23:44
По-прежнему написана белиберда.

Цитата Сообщение от Sapendo Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
template <class T>
int cQueue<T>:: del ()
{
    T temp=mas[0];
    for(int i=0;i<5;i++)
    {
        mas[i]=mas[i+1];
        if(i==4)
            mas[i]=temp;
    }
    return 1;
}
Выражение 'mas[i]=mas[i+1];' выходит за пределы массива размера 5 при 'i = 4'. Только выходит оно теперь по чтению, а не по записи. Ошибка теперь не отлавливается, и программа "как будто работает".

Присваивание 'mas[i]=temp;' должно стоять за пределами цикла. Нафиг оно нужно там в цикле?

Почему по прежнему игнорируется 'size', и вместо него используется 5???

Почему метод называется 'del', если он выполняет просто циклический сдвиг? Зачем он возвращает 1? Что символизирует эта 1?

В любом случае, вот как это должно было бы выглядеть

C++
1
2
3
4
5
6
7
8
9
10
11
12
template <class T>
int cQueue<T>::del ()
{
  T temp = mas[0];
 
  for (int i = 0; i < size - 1; ++i)
    mas[i] = mas[i + 1];
 
  mas[size - 1] = temp;
 
  return 1;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru