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

Выход за пределы массива. Исправить код - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ найти одинаковые элементы в массиве/Цикл http://www.cyberforum.ru/cpp-beginners/thread669373.html
void MyPro::myreplace(int a){ QStringList arrayNumbers_of_ChangeTextEdits; for (int i=0;i<arrayNumbers_of_ChangeTextEdits.count;i++){ if (!arrayNumbers_of_ChangeTextEdits.contains(QString::number(a))){ arrayNumbers_of_ChangeTextEdits.append(QString::number(a)) } } только вот arrayNumbers_of_ChangeTextEdits.count при первом входе равно 0 и не попадает в...
C++ Перечитать файл заново Я сначала пересчитал строки в файле, а потом хочу положить все эти строки в массив, для этого надо перечитать файл ещё раз, но у меня не получается возвратить указатель из положения -1 в положение 0: ifstream file (argv); int i=0; //счётчик текущей строки if (file.is_open()) { while (! file.eof() ) { getline (file,line); i++; ... http://www.cyberforum.ru/cpp-beginners/thread669366.html
C++ Вывод N первых чисел Люка
Последовательность чисел Люка задаётся следующими соотношениями: x0=2, x1=1, xn=xn-1+xn-2. Начало последовательности имеет следующий вид: 2, 1, 3, 4, 7, 11, 18, 29. Напишите программу, которая принимает с клавиатуры число N и выводит N первых чисел Люка.
При выполнении задания предусмотреть выбор вида функции (исправить код) C++
все вроде бы правильно... но когда делаю проверку ответы не сходятся... помогите пожалуйста найти ошибку в формулах При выполнении задания предусмотреть выбор вида функции f(x): sh(x), x^2 или e^x. Предусмотреть вывод информации о выбранной ветви вычислений. #include <iostream.h> #include <math.h> int main() { double x,y,f,a,s;
C++ Не могу разобраться в коде http://www.cyberforum.ru/cpp-beginners/thread669334.html
Здравствуйте! У меня есть код, помогите разобраться что означает каждый символ и функция. Заранее спасибо) файл f открыт и имеет структуру в 16 бит. особо непонятны записи выделенные знаком "!!" while ( !feof(f) ) { c1 = fgetc(f); _c1 = c1; !! slovo = _c1 << 8; c2 = fgetc(f); slovo += c2; ...
C++ Почему выводится весь массив Доброго времени суток! Прошу прощения за нубский вопорс, но окончательно запутался. В указателе на массив хранится АДРЕС первого элемента массива, так? Но почему тогда при выполнении кода int *p, str; p = str; cout << p; выводится адрес str, а при выполнении кода char *p, str; подробнее

Показать сообщение отдельно
cin_cout
25 / 25 / 7
Регистрация: 06.10.2012
Сообщений: 114
12.10.2012, 12:06     Выход за пределы массива. Исправить код
Вот такой результат исполнения кода:
5 17 22 10.5 11.23 12.87 6.64 9.82 15.35 - ввел числа в массив с клавиатуры

5 5 17
17 22 22
22 44 10.5
10.5 54.5 11.23
11.23 65.73 12.87
12.87 78.6 6.64
6.64 85.24 9.82
9.82 95.06 15.35
terminate called after throwing an instance of 'Range_error'
what(): Range error: 9

При компилировании никаких замечаний. При исполнении вылезаем за пределы вектора.
Как мы можем вылезти за его размеры, если в цикле заданы рамки i<dist.size() ?
И как тогда определять "последующий" элемент вектора для сравнения с предыдущим, для прочих итераций (нахождение максимального, минимального значений, сортировки)?
Где в моей логике рассуждений ошибка?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include "std_lib_facilities.h"
 
int main()
{
    vector<double> dist;
    double distance;
    while (cin>>distance)
        dist.push_back(distance); 
    double sumdist;
    
    for (int i=0;i<dist.size(); ++i) 
    {
        sumdist+=dist[i];
        cout << dist[i] << '\t' << sumdist << '\t' << dist[i+1] << '\n';
    }
        
    cout << " Среднее расстояние: " << sumdist/dist.size() << '\n';
 
    return 0;
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru