Форум программистов, компьютерный форум 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...
C++ Перечитать файл заново Я сначала пересчитал строки в файле, а потом хочу положить все эти строки в массив, для этого надо перечитать файл ещё раз, но у меня не получается возвратить указатель из положения -1 в положение 0:... 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. Напишите программу, которая...
При выполнении задания предусмотреть выбор вида функции (исправить код) C++
все вроде бы правильно... но когда делаю проверку ответы не сходятся... помогите пожалуйста найти ошибку в формулах При выполнении задания предусмотреть выбор вида функции f(x): sh(x), x^2 или...
C++ Не могу разобраться в коде http://www.cyberforum.ru/cpp-beginners/thread669334.html
Здравствуйте! У меня есть код, помогите разобраться что означает каждый символ и функция. Заранее спасибо) файл f открыт и имеет структуру в 16 бит. особо непонятны записи выделенные знаком "!!"...
C++ Почему выводится весь массив Доброго времени суток! Прошу прощения за нубский вопорс, но окончательно запутался. В указателе на массив хранится АДРЕС первого элемента массива, так? Но почему тогда при выполнении кода int *p,... подробнее

Показать сообщение отдельно
cin_cout
26 / 26 / 7
Регистрация: 06.10.2012
Сообщений: 119

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

12.10.2012, 12:06. Просмотров 817. Ответов 7
Метки (Все метки)

Вот такой результат исполнения кода:
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;
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru