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

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

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

Переполнение массива - C++

12.02.2013, 23:11. Просмотров 978. Ответов 11
Метки нет (Все метки)

Добрый день господа.
Столкнулся с очередной проблемой и не знаю как решить.
Где то в этой программе происходит переполнение массива A. Помогите найти мою ошибку, пожалуйста. :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
#include <iostream>
#include <math.h>
#include <conio.h>
 
using namespace std;
#define SIZE 3
#define x A[0]
#define y A[1]
#define a A[2]
#define b A[3]
 
int main( )
{
    float A[SIZE],d,c,result;
    cin >> A[0]; //x
    cin >> A[1]; //y
    cin >> A[2]; //a
    cin >> A[3]; //b
    if ((a == b) || (y <= 0)) 
    {
        printf("Incorrect data");
    } else {
        d = ((4 - x * x) * tan(2)) / (sqrt(a) - sqrt(b));
        c = sin(pow((1 + pow((log(y) / log(3)), 1/3)), 4));
    
        if (d*d + c*c <= 10) 
            result = d + c;
        else 
            result = sqrt(abs(d + c));
 
        printf("%0.3f\n", result);
    }
    _getch();
    return 0;
}
Кому интересно, что за формулы:
https://www.dropbox.com/s/741guqixgd4q2hl/123.jpg
https://www.dropbox.com/s/l3e0iwfyhkn2xoe/124.jpg
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2013, 23:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переполнение массива (C++):

Переполнение массива - C++
Товарищи, имею такой вопрос- есть у меня часть кода, которая отвечает за загрузку из интерне xml файла и созраняющая его в массив. Все...

Снова про переполнение массива - C++
#include &lt;iostream&gt; using namespace std; int main () { char ar; cin &gt;&gt; ar; cout &lt;&lt; ar; return 0; ...

Исключительная ситуация (переполнение массива сверху) - C++
Изучаем сейчас исключительные ситуации и нужно привести пример , т.е. вызвать исключительную ситуацию для переполнения массива сверху или...

Переполнение стека в рекурсивной функции сортировки большого массива - C++
Написал рекурсивную функцию сортировки массива, с массивами небольших размеров все работает как надо, а вот если сортирую побоьлше (60000...

Переполнение - C++
Доброго времени суток! Есть код: void menu() { IndexList Universal; List *tmp = NULL; int punkt_menu; char *value =...

Переполнение - C++
При вводе слишком большого числа (например: 4444444444444444) программа зацикливается и постоянно выводит &quot;Ошибка. Введенный элемент...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
12.02.2013, 23:18 #2
Что такое "переполнение массива"?
1
R0adTr1p
0 / 0 / 1
Регистрация: 12.02.2013
Сообщений: 11
12.02.2013, 23:19  [ТС] #3
Run-Time Check Failure #2 - Stack around the variable 'A' was corrupted.
0
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
12.02.2013, 23:21 #4
Вы задаете SIZE 3, а у самого 4 элемента в массиве.
0
R0adTr1p
0 / 0 / 1
Регистрация: 12.02.2013
Сообщений: 11
12.02.2013, 23:23  [ТС] #5
Прошу прощения, был не совсем честен с вами.
У меня так же есть примеры ввода и вывода:
Ввод 1
2 3 4 5
Вывод 1
-0.288

Весь парадокс в том, что программа выдает верный ответ, а затем выдает как раз то сообщение:
Run-Time Check Failure #2 - Stack around the variable 'A' was corrupted.
0
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
12.02.2013, 23:24 #6
Оу, я просто код не читал. Когда вы указываете в квадратных скобках 3, вы просто создаете массив из трёх элементов, следовательно если вы обратитесь к третьему элементу — вы нарушите границы массива.
0
Wolkodav
604 / 457 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
12.02.2013, 23:25 #7
C++
1
#define SIZE 4
0
R0adTr1p
0 / 0 / 1
Регистрация: 12.02.2013
Сообщений: 11
12.02.2013, 23:26  [ТС] #8
Извольте, но разве нумерация массивов начинается с единицы?
0
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
12.02.2013, 23:26 #9
R0adTr1p, в Си — с нуля, следовательно, в С++ — тоже.
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
12.02.2013, 23:28 #10
Цитата Сообщение от R0adTr1p Посмотреть сообщение
Извольте, но разве нумерация массивов начинается с единицы?
начинается - с нуля
заканчивается, если можно так выразится, на SIZE-1 включительно
1
Simpson_
15 / 15 / 3
Регистрация: 06.02.2013
Сообщений: 55
12.02.2013, 23:28 #11
R0adTr1p, float A[SIZE] значит что создаётся массив вещественных чисел на SIZE элементов
0
R0adTr1p
0 / 0 / 1
Регистрация: 12.02.2013
Сообщений: 11
12.02.2013, 23:31  [ТС] #12
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
начинается - с нуля
заканчивается, если можно так выразится, на SIZE-1 включительно
Все понятно.) Спасибо. Что то я снубил
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2013, 23:31
Привет! Вот еще темы с ответами:

Переполнение дека - C++
Здравствуйте. Не могу понять где переполняется чертов дек.Суть программы заключается в том, что при нажатии определенных кнопок выполняется...

Переполнение стека - C++
Хочу полюбопытствовать. Вычитал недавно, что на стек выделяется ограниченная область памяти, и в языке Си это 4 Кб. Вопрос: Если мне...

Переполнение стека - C++
Всем привет. Помогите, пожалуйста с решением одной проблемы. Мне нужно в программе обрабатывать большие объемы текста. 10 000 000 символов....

Переполнение стека - C++
Всем добрый вечер. Я создаю вектор, который имеет большой размер: порядка 256000000. Этот вектор имеет тип float, т.к. функция, куда я...


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

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

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