Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 15.08.2016
Сообщений: 40
1

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Как сделать так чтобы вектор не выходил за диапазон?
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.08.2016, 11:33
Ответы с готовыми решениями:

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

Выходит за диапазон
ошибка появляется после компиляции при запуске, предыдущее всё работает, до места где нужно вводить...

Сгенерировать вектор V из 1000 элементов. Диапазон значений от -50 до 50 (в примере исп rnd)
Требуется сгенерировать вектор V из 1000 элементов (некий набор экспериментальных или...

Обработать выделенный диапазон ячеек, результат записать в смежный диапазон
Напишите в среде Excel макрос, который в выделенном диапазоне ячеек должен выполнять заданные...

6
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
25.08.2016, 11:36 2
Цитата Сообщение от Protss Посмотреть сообщение
k != ivec[ivec.size()]
Какой смысл этого условия?
1
2276 / 1767 / 741
Регистрация: 27.07.2012
Сообщений: 5,250
25.08.2016, 11:38 3
Цитата Сообщение от Protss Посмотреть сообщение
Как сделать так чтобы вектор не выходил за диапазон?
Не писать подобного: ivec[ivec.size()].
1
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
25.08.2016, 11:44 4
Protss, для прохода по вектору используй итераторы, ну или цикл for по диапазону
1
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
2276 / 1767 / 741
Регистрация: 27.07.2012
Сообщений: 5,250
25.08.2016, 13:10 6
Потому что скобочки надо уважать:
C++
1
cout << ((ivec[k] % 2 != 0) ? ivec[k]*=ivec[k] : ivec[k]=ivec[k]);
1
1 / 1 / 3
Регистрация: 24.08.2016
Сообщений: 18
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.08.2016, 13:50
Помогаю со студенческими работами здесь

Найти диапазон который соответствует дате и данный диапазон имеет более старшую дату
Добрый день! Подскажите как лучше решить данную задачу - Задача - найти диапазон который...

Диапазон чисел - какой диапазон у каждой переменной
все int, можете написать какой диапазон у каждой переменной типа а1= a1 = rand()%7; b1 =...

Вставить диапазон с 1-го листа на 2-ой и удалить диапазон
Добрый день, всем. Посоветуйте каким образом сделать своеобразную кнопку отмены после вставки...

Будет ли корректно вычисление random если не указать в скобках диапазон и какой диапазон будет по умолчанию?
Ребят , что будет , если написать s:=random не указывая в скобках диапазона , будет ли корректно...

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

СМА Ariston AWM129EU не выходит на отжим, СМА AWM129 не выходит на отжим после замены проги
После замены электронного модуля на СМА Ariston AWM129EU 08054830(к сожалению, остальная часть цифр...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru