Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 07.09.2018
Сообщений: 5
1

Vector subscript out of range

10.09.2018, 05:45. Просмотров 1762. Ответов 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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include "pch.h"
#include <iostream>
#include <vector>
#include <math.h>
 
using namespace std;
 
double part_fr(double num)
{
    double fr, in;
    fr = modf(num, &in);
    return fr;
}
 
double part_in(double num)
{
    double in, fr;
    fr = modf(num, &in);
    return in;
}
 
bool find_el(double n, vector<double>& vec)
{
    for (double i = 0; i < vec.size(); i++)
        if (vec[i] == n) return true;
    return false;
}
 
int main()
{
    //setlocale(LC_ALL,"Russian");
    int n, sum = 0;                                                 //number of cities
    cout << "Input number of cities" << endl;
    cin >> n;
    int num = n, sumofnum = 0;
    while (num > 0)                                           //find digit of number
    {
        sumofnum++;
        num = num / 10;
    }
 
    std::vector <std::vector <int> > city;
    for (int i = 0; i < n; i++)                                 //read distance between
    {                                                       //cities to the chart
        std::vector  <int> temp;
        std::cout << "Input distance between " << i + 1 << " city and other in right order" << endl;
        for (int j = 0; j < n; j++)
        {
            int a;
            std::cin >> a;
            temp.push_back(a);
        }
    }
    vector <vector <double> > name;
    for (int i = 0; i < n; i++)                                 //read names of cities
    {                                                       //to the chart
        vector <double> temp2;
        for (int j = 0; j < n; j++)
            name[i][j] = city[i][j];
    }
 
    for (int i = 0; i < n; i++)                                 //read names of cities
    {                                                       //to the chart
        vector <double> temp2;
        for (int j = 0; j < n; j++)
        {
            if (city[i][j] != 0) name[i][j] = i + j * pow(0.1, sumofnum);
        }
    }
    // finish input operations
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            cout << city[i][j] << ' ';
    
    vector <int>  list_city;
    vector <double>  list_name;
    int list_note;
    for (int i=0; i<n; i++)                                   //fill the list
        for (int j=0; j<n; j++)                               //with ways and
        {                                                   //number of ways
            list_note=city[i][j];
            list_city.push_back(list_note);
            list_note=name[i][j];
            list_name.push_back(list_note);
        }
 
    for(int i=0; i<list_city.size(); i++)
    {
        for(int j=i+1; i<list_city.size(); i++)
            if (list_city[i]<list_city[j])                      //locate data in
            {                                                   //right order
                swap(list_city[i],list_city[j]);
                swap(list_name[i],list_name[j]);
            }
        if (list_city[i]==0)
        {
            list_city.erase(list_city.begin()+i);
            list_name.erase(list_name.begin()+i);
        }
    }
    //right lists are ready
    int ost=list_city.size();
    while (ost>n-1)
    {
        double i=0, a, b;
        a=part_in(list_name[i]);
        b=part_fr(list_name[i]);                                            //actual
        if (find_el(a, list_name) && find_el(b, list_name))
        {
            list_city.erase(list_city.begin()+i);
            list_name.erase(list_name.begin()+i);
            ost--;
        }
        i++;
    }
    //delete all odd elements
    for (int i=0; i<list_city.size(); i++)
        sum=sum+list_city[i];
    cout<<sum;
    return 0;
}
0
Миниатюры
Vector subscript out of range  
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.09.2018, 05:45
Ответы с готовыми решениями:

Struct / Vector / Expression: vector subscript out of range
Добрый вечер. Имеется структура: struct Contact { public: string name; vector&lt;string&gt;...

Vector subscript out of range
Помогите пожалуйста, выводит такую ошибку , не пойму почему #include&lt;iostream&gt;...

Vector subscript out of range
Доброе утро, прочитал статью про векторы и решил создать один из них, однако при выводе он выдаёт...

Vector subscript out of range
int main() { srand( time(0) ); vector &lt;int&gt; m(10000); int i,n,c,max; while(i&lt;=10000) {...

3
(80 / 20 || 50 / 50) = x
1653 / 1125 / 433
Регистрация: 16.08.2014
Сообщений: 4,709
Записей в блоге: 1
10.09.2018, 06:07 2
Цитата Сообщение от Steph_ Посмотреть сообщение
Не понимаю что происходит, объясните пожалуста
выход за пределы выделенной памяти, границы вектора нарушил

Добавлено через 3 минуты
Steph_, почему счетчик цикла типа double?
C++
1
for (double i = 0; i < vec.size(); i++)
1
0 / 0 / 0
Регистрация: 07.09.2018
Сообщений: 5
10.09.2018, 06:09  [ТС] 3
Цитата Сообщение от _stanislav Посмотреть сообщение
Steph_, почему счетчик цикла типа double?
глаз замылился не заметил
0
(80 / 20 || 50 / 50) = x
1653 / 1125 / 433
Регистрация: 16.08.2014
Сообщений: 4,709
Записей в блоге: 1
10.09.2018, 06:22 4
Лучший ответ Сообщение было отмечено Steph_ как решение

Решение

Steph_,
C++
1
2
3
4
5
6
7
    vector <vector <double> > name;
    for (int i = 0; i < n; i++)                                 //read names of cities
    {                                                       //to the chart
        vector <double> temp2;
        for (int j = 0; j < n; j++)
            name[i][j] = city[i][j]; // тут вылетает первая ошибка out_of_range
    }
Добавлено через 50 секунд
пустой вектор name, а ты к нему по индексу уже хочешь обратиться

Добавлено через 1 минуту
и зачем там vector <double> temp2;

Добавлено через 3 минуты
Steph_, у тебя вектор std::vector <std::vector <int> > city; в этот цикл пустой заходит, получается ты n раз из пустого city в пустой name копировать хочешь

Добавлено через 5 минут
Steph_, мне кажется что ты слишком большой кусок откусить хочешь, пиши по маленьким кускам кода, а то так тяжело учиться, сразу шлепать большие куски кода, и потом ошибки искать.

Добавлено через 51 секунду
написал маленький кусок кода, протестировал, работает, дальше следующий кусочек и так далее.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.09.2018, 06:22

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

vector subscript out of range
Доброго времени суток! Подскажите пожалуйста, где именно я ошибся, вроде не должен он за пределы...

Vector subscript out of range
Привет, друзья, у меня следующая проблема: if (!MeteorVec.empty()) { for (int i = 0; i &lt;...

Vector subscript out of range
Реализация карманной сортировки: #include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;vector&gt; ...

expression vector subscript out of range
Появляется ошибка при компиляции expression vector subscript out of range.Нужна помощь. Сортировка...

Ошибка vector subscript out of range
Пишет &quot;vector subscript out of range&quot; Смысл этой задачи найти число с максимальной суммой...

Ошибка vector subscript out of range
Всем корректного. Читаю Страуструпа. В конце главы есть задание: в первый вектор вводятся люди(их...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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