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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Protss
0 / 0 / 0
Регистрация: 15.08.2016
Сообщений: 40
#1

Вектор выходит за диапазон - C++

25.08.2016, 11:33. Просмотров 184. Ответов 6
Метки нет (Все метки)

Здравствуйте.
Как сделать так чтобы вектор не выходил за диапазон?
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
#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
    int k;
 
    vector<int> ivec = { 2,3,4,5,6 };
 
 
    for (int k=0; k != ivec[ivec.size()]; ++k)
    {
        cout << (ivec[k] % 2 != 0) ? "Good luck" : "False";
 
        if (ivec[k] % 2 != 0)
            ivec[k]*=ivec[k];
 
        else ivec[k] =ivec[k];
    }
 
 
    for (auto c : ivec)
 
 
    {
        cout << c << endl;
    }
    system("pause");
 
 
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2016, 11:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вектор выходит за диапазон (C++):

Rand() выходит за диапазон - C++
Две функции: inline void Playing_card::set_random_suit() { std::srand(time(NULL)); suit_ = Card_suit(rand() % spades + clubs);...

Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов - C++
Привет! Задача следующая. Нужно реализовать класс &quot;вектор&quot; с конструкторами, которые позволяют создать нулевой вектор и вектор с...

Создать иерархию классов вектор и безопасный вектор с проверкой выхода за пределы - C++
Создать иерархию классов вектор и безопасный вектор с проверкой выхода за пределы. Безопасный вектор определяет переменные нижний и верхний...

Почему матрица на вектор умножается быстрее чем вектор на матрицу? - C++
Почему матрица на вектор умножается быстрее чем вектор на матрицу?

Есть квадратная матрица А порядка n и вектор b с n элементами. Получить вектор Аb. - C++
Привет. Не могу разобратся, вот задание: Есть квадратная матрица А порядка n и вектор b с n элементами. Получить вектор Аb.

матрица на вектор, вроде правильно, а вектор на матрицу? посмотрите пожалуйста? - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; int main() { ...

6
Hikari
Хитрая блондиночка $)
1449 / 956 / 285
Регистрация: 21.12.2015
Сообщений: 3,798
25.08.2016, 11:36 #2
Цитата Сообщение от Protss Посмотреть сообщение
k != ivec[ivec.size()]
Какой смысл этого условия?
1
John Prick
803 / 736 / 145
Регистрация: 27.07.2012
Сообщений: 2,108
Завершенные тесты: 3
25.08.2016, 11:38 #3
Цитата Сообщение от Protss Посмотреть сообщение
Как сделать так чтобы вектор не выходил за диапазон?
Не писать подобного: ivec[ivec.size()].
1
Ferrari F1
613 / 507 / 101
Регистрация: 27.01.2015
Сообщений: 2,951
Записей в блоге: 1
Завершенные тесты: 1
25.08.2016, 11:44 #4
Protss, для прохода по вектору используй итераторы, ну или цикл for по диапазону
1
Protss
0 / 0 / 0
Регистрация: 15.08.2016
Сообщений: 40
25.08.2016, 12:20  [ТС] #5
Понятно, а я думал что вектор все равно выходит за диапазон k=5, но условие останавливает его. Но факт что он выходит)
А я тут нагородил, нужно ivec.size()

Добавлено через 9 минут
Скажите, а почему у меня выводится при k=0 010104, а при остальных k ( 9,16....)?

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
#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
    int k;
 
    vector<int> ivec = { 2,3,4,5,6 };
 
 
    for (int k=0; k != ivec.size(); ++k)
    {
        cout << (ivec[k] % 2 != 0) ? ivec[k]*=ivec[k] : ivec[k]=ivec[k];
 
    }
 
 
    for (auto c : ivec)
 
 
    {
        cout << c << endl;
    }
    system("pause");
 
 
 
    return 0;
}
Добавлено через 22 минуты
Кликните здесь для просмотра всего текста
с помощью итераторов, такой же вывод
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
#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
    int k;
 
    vector<int> ivec = { 2,3,4,5,6 };
 
 
    for (auto beg=ivec.begin(); beg != ivec.end(); ++beg)
    {
        cout << (*beg % 2 != 0) ? *beg*=*beg : *beg=*beg;
 
    }
 
 
    for (auto c : ivec)
 
 
    {
        cout << c << endl;
    }
    system("pause");
 
 
 
    return 0;
}
0
John Prick
803 / 736 / 145
Регистрация: 27.07.2012
Сообщений: 2,108
Завершенные тесты: 3
25.08.2016, 13:10 #6
Потому что скобочки надо уважать:
C++
1
cout << ((ivec[k] % 2 != 0) ? ivec[k]*=ivec[k] : ivec[k]=ivec[k]);
1
keeperkira
1 / 1 / 1
Регистрация: 24.08.2016
Сообщений: 15
25.08.2016, 13:50 #7
ivec[ivec.size()]

тут и происходит выход за диапазон. размер массива у тебя равен 5. значит запись имеет вид ivec[5];а это уже 6 элемент массива
C++
1
2
3
4
5
6
ivec[0] //1
ivec[1]//2
ivec[2]//3
ivec[3]//4
ivec[4]//5
ivec[5]// 6 элемен, ошибка!!!
решение ivec[ivec.size()-1]
0
25.08.2016, 13:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.08.2016, 13:50
Привет! Вот еще темы с ответами:

Создать иерархию классов вектор(longint) и безопасный вектор с проверкой выхода за пределы - C++
Помогите не знаю как сделать! Создать иерархию классов вектор(longint) и безопасный вектор с проверкой выхода за пределы. Безопасный...

Вектор с неизвестным количеством чисел преобразовать в другой вектор, где числа будут стоять по возрастанию - C++
Вектор с неизвестным количеством чисел нужно превратить в другой вектор, где числа будут стоять по возрастанию. Мне код не столько нужен,...

Считать вектор из файла, записать вектор в файл - C++
Доброго времени суток. Программа должна считывать числа из заданного файла, потом записывать в другой файл вектор, в котором каждый элемент...

задан вектор С, который состоит из 12 действительных чисел. Сформировать вектор D, нечетные элементы которого есть целая часть нечетных - C++
задан вектор С, который состоит из 12 действительных чисел. Сформировать вектор D, нечетные элементы которого есть целая часть нечетных...


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

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

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