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

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

Войти
Регистрация
Восстановить пароль
 
Ксения7
1 / 1 / 0
Регистрация: 18.03.2013
Сообщений: 72
#1

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

28.03.2013, 20:51. Просмотров 1151. Ответов 8
Метки нет (Все метки)

Здравствуйте. Задача легкая,нужно создать массив из 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++):

Ошибка переполнения буфера - C++
При первом запуске програма работает, после второго появляеться ошибка переполнения буфера. В чем дело?#include &lt;iostream&gt; #include...

Вектор структур, в которых также векторы. Ошибка переполнения вектора - C++
Как реализовать такое дело: Есть структура MyStruct1 struct MyStruct1{ std::vector&lt;MyStruct2&gt; myStruct2; }; В которой...

Защита от переполнения - C++
Ребят помоги создать защиту от переполнения через функцию scanf_s и убрать нолики в конечном ответе, вот код: #include &lt;stdio.h&gt; ...

Флаг переполнения - C++
Доброго времени суток! Подскажите, как проверить какую-либо определенную переменную типа double на переполнение (значениe -1.#IND00,...

Переполнения безопастны? - C++
Насколько безопасна строчка: for(unsigned int b(UINT_MAX); ++b != UINT_MAX;) или такое нужно писать только так: unsigned int b(0);...

СИ++ и контроль переполнения - C++
Можно ли как-нибудь в VS включить контроль переполнения при математических вычислениях? Чтоб, например, возникало исключение. Или это можно...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
Это было не трудно, и в следующий раз правильно задавайте вопрос.
Ксения7
1 / 1 / 0
Регистрация: 18.03.2013
Сообщений: 72
28.03.2013, 21:38  [ТС] #9
хорошо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2013, 21:38
Привет! Вот еще темы с ответами:

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

Как отловить переполнения? - C++
Есть проект dll, в в нём экспортируемая функция, возвращающая BOOL, требуется при переполнении любой вещественной операции в теле этой...

Избавиться от переполнения буфера (asm) - C++
Всем привет, на вашем форуме первый раз) Имея базовые знания по C++ и Assembler решил сварганить такую штуку: // test.cpp: определяет...

Отлов исключения переполнения буфера - C++
Вот код #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;conio.h&gt; #include &lt;locale.h&gt; #include &lt;exception&gt; using namespace std; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.03.2013, 21:38
Ответ Создать тему
Опции темы

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