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

Ошибка переполнения массива - C++

Восстановить пароль Регистрация
 
Ксения7
1 / 1 / 0
Регистрация: 18.03.2013
Сообщений: 72
28.03.2013, 20:51     Ошибка переполнения массива #1
Здравствуйте. Задача легкая,нужно создать массив из 1000000 элементов,и найти 1000001,и вывести сообщение что не найден такой элемент. Но вылетает ошибка переполнения overflow. как от нее избавиться?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main()
{
const n=1000000;
int  i,x=1000001, ;
int a[n-1];
 
for (i = 0; i < n; i++)  a[n]= i++;
 
for (i = 0; i <n; i++) {
while (a[i]!= x && i<n)
i++;
}
if (a[i]!=x) {
   printf ("not find");
}
 
getchar();
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2013, 20:51     Ошибка переполнения массива
Посмотрите здесь:

C++ проверка переполнения double
39+ (-39) будет ли установлен флаг переполнения? C++
СИ++ и контроль переполнения C++
C++ Ошибка переполнения буфера
Защита от переполнения C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
danil0111
3 / 3 / 0
Регистрация: 04.10.2012
Сообщений: 22
28.03.2013, 21:01     Ошибка переполнения массива #2
Цитата Сообщение от Ксения7 Посмотреть сообщение
if (a[i]!=x) {
printf ("not find");
}
Нужно в if сравнивать не ячейку массива, а индекс.

Добавлено через 3 минуты
Даже немного не так.

Во всех циклах и ветвлениях нужно сравнивать не ячейки массивов, а индекс ячейки то есть переменную i.
Ксения7
1 / 1 / 0
Регистрация: 18.03.2013
Сообщений: 72
28.03.2013, 21:04  [ТС]     Ошибка переполнения массива #3
а если требуется заполнить данный массив из 1000000 элементов значениями от 1 до 1000000, и найти в массиве значение равное 1000001? немного неверно изначально задала вопрос,сори.
danil0111
3 / 3 / 0
Регистрация: 04.10.2012
Сообщений: 22
28.03.2013, 21:10     Ошибка переполнения массива #4
Цитата Сообщение от Ксения7 Посмотреть сообщение
а если требуется заполнить данный массив из 1000000 элементов значениями от 1 до 1000000, и найти в массиве значение равное 1000001? немного неверно изначально задала вопрос,сори.
Индекс ячейки?

Добавлено через 1 минуту
Или "'элемент найден"??
Ксения7
1 / 1 / 0
Регистрация: 18.03.2013
Сообщений: 72
28.03.2013, 21:14  [ТС]     Ошибка переполнения массива #5
вернее сказать само значение ячейки,а не индекс

Добавлено через 2 минуты
массив создается упорядоченно значениями от 1 до 1 млн.,нужно найти в нем значение 1000001,которого в нем и нет
danil0111
3 / 3 / 0
Регистрация: 04.10.2012
Сообщений: 22
28.03.2013, 21:25     Ошибка переполнения массива #6
Тогда либо массив делать больше (1000001>1000000, вот ошибка переполнения массива), либо заполнять массив чтобы индекс был меньше значения (в данном случае на один).

Добавлено через 57 секунд
Цитата Сообщение от danil0111 Посмотреть сообщение
Тогда либо массив делать больше (1000001>1000000, вот ошибка переполнения массива), либо заполнять массив чтобы индекс был меньше значения (в данном случае на один).
Извиняюсь, интернет немного лагает.

Добавлено через 4 минуты
напишу псевдокодом:
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
...
while (...){
//перечисление элементов массива
if (i<x){
cout<<"данный элемент не существует"
break; //выход из цикла
}
}
Добавлено через 43 секунды
Как-то так.
Ксения7
1 / 1 / 0
Регистрация: 18.03.2013
Сообщений: 72
28.03.2013, 21:31  [ТС]     Ошибка переполнения массива #7
спасибо!
danil0111
3 / 3 / 0
Регистрация: 04.10.2012
Сообщений: 22
28.03.2013, 21:36     Ошибка переполнения массива #8
Это было не трудно, и в следующий раз правильно задавайте вопрос.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2013, 21:38     Ошибка переполнения массива
Еще ссылки по теме:

C++ Флаг переполнения
Вектор структур, в которых также векторы. Ошибка переполнения вектора C++
C++ Как отловить переполнения?

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

Или воспользуйтесь поиском по форуму:
Ксения7
1 / 1 / 0
Регистрация: 18.03.2013
Сообщений: 72
28.03.2013, 21:38  [ТС]     Ошибка переполнения массива #9
хорошо
Yandex
Объявления
28.03.2013, 21:38     Ошибка переполнения массива
Ответ Создать тему
Опции темы

Текущее время: 12:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru