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

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

Войти
Регистрация
Восстановить пароль
 
antid0t
4 / 4 / 0
Регистрация: 23.02.2011
Сообщений: 42
#1

Найти причину вылета программы - C++

01.04.2011, 20:28. Просмотров 509. Ответов 4
Метки нет (Все метки)

Вообщем написал программу, вроде бы все правильно (так говорит компилятор), но программа вылетает с ошибкой "Отправить отчет/Не отправлять", вообщем вы все ее знаете.

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <stdio.h>
#include <iostream.h>
#include <fstream.h>
 
 
int n3x3(int nmas[3][3]) {
    
    int np[3][5], ns[6], d;  // calculating 3x3 minor
    for (int i=0; i<3; i++) {
        for (int j=0; j<3; j++) {
            ns[i]=1;
            ns[i+3]=1;
            np[i][j]=nmas[i][j];}}  // 3x5 matrix  
    for (i=0; i<3; i++){
        for(int j=3; j<5; j++) {
            np[i][j]=nmas[i][j-3]; } }
    int k=2;  // Hiden cycle
    for ( i=0; i<3; i++) {
        for (int j=0; j<3; j++) {
            ns[j]=ns[j]*np[i][i+j]; 
            ns[j+3]=ns[j+3]*np[k][i+j]; }
        k--; }
    d=ns[0]+ns[1]+ns[2]-ns[3]-ns[4]-ns[5];
    
    return d; }
 
 
void main() {
    int nSystem[3][4], nDet[3][3], nDetr, nFloat, nAnswer[3];
    ifstream fin("System.txt");
    cout<< "Make sure that you have already entered\n"
        << "Your system's matrix in 'System.txt' file in root directory.\n";
    for (int i=0; i<3; i++) {
        for (int j=0; j<4; j++) {
            fin >> nSystem[i][j];
            if (j!=3) {
                nDet[i][j]=nSystem[i][j]; }}}
    nDetr=n3x3(nDet);
    for (int k=0; k<3; k++) {
        for (int i=0; i<3; i++) {
            for (int j=0; j<3; j++) {
                nDet[i][j]=nSystem[i][j];
                nDet[i][k]=nSystem[i][3]; }}
    nFloat=n3x3(nDet);
    nAnswer[k]=nFloat/nDetr; }
    cout<< "Theres your answer:"
        << "\nX = " << nAnswer[0]
        << "\nY = " << nAnswer[1]
        << "\nZ = " << nAnswer[2]
        << "\nThere it is. Do you like it? [1/0]: "; // Pause button
    cin >> nDetr;
    return; }
Путем пошагового написания я выяснил что причина вылета кроется в 45-ой строчке, но почему - для меня загадка.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2011, 20:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти причину вылета программы (C++):

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

Собрать стек со словами, у которых первая и последняя буква совпадают: выяснить причину падения программы - C++
Помогите найти из-за чего идет краш программы. Иногда работает, иногда крашит, я просто незнаю с чем это связано :( Само задание: Из...

Найти причину возникновения ошибки - C++
Выбрасывает здесь ошибку (if (Mart&gt;Max)) не знаю почему #include&lt;stdio.h&gt; #include&lt;math.h&gt; #include&lt;iostream&gt; ...

Не могу найти причину ошибки ! - C++
#include&lt;locale.h&gt; #include&lt;stdio.h&gt; #include&lt;iostream&gt; #include&lt;time.h&gt; #include&lt;algorithm&gt; #include&lt;vector&gt; using namespace...

не работает функция, не могу найти причину - C++
Всех с праздником! Задача: Необходимо написать программу состоящую из нескольких функция - принимающая данные в массив, выводящая...

Помогите найти причину ошибок в коде - C++
#include &lt;stdio.h&gt; // библиотека, содержащая описание // операторов ввода/вывода #include &lt;conio.h&gt; // библиотека, содержащая...

4
Unforgiven_00
60 / 60 / 3
Регистрация: 12.10.2010
Сообщений: 129
01.04.2011, 21:17 #2
Еще бы "System.txt" сюда.
0
ValeryS
Модератор
6729 / 5138 / 484
Регистрация: 14.02.2011
Сообщений: 17,240
01.04.2011, 21:18 #3
nAnswer[k]=nFloat/nDetr; }
может выход за пределы массива k>2 но вроде не похоже
nDetr может равен 0
исключение деление на 0
или лови исключение или обрабатывай переменную
C++
1
2
if(nDetr)
 nAnswer[k]=nFloat/nDetr;
1
Unforgiven_00
60 / 60 / 3
Регистрация: 12.10.2010
Сообщений: 129
01.04.2011, 21:20 #4
Да, это деление на ноль.
Unhandled exception at 0x013120d0 in tst.exe: 0xC0000094: Integer division by zero.
1
antid0t
4 / 4 / 0
Регистрация: 23.02.2011
Сообщений: 42
01.04.2011, 21:40  [ТС] #5
Хм, спасибо.
0
01.04.2011, 21:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2011, 21:40
Привет! Вот еще темы с ответами:

Задачка для новичков#1: найти причину UB в коде и исправить его согласно условию - C++
Привет молодые коллеги, нашёл у себя под диваном интересную задачку - она лёгкая для гуру ( поэтому вы увидите ниже ответы на задачку...

Инициализация поля класса (строки в стиле Си): найти причину возникновения ошибки и исправить эту ошибку - C++
Начинаю учить C++ и хочу сделать что-то типо &quot;игры&quot; в текстовом варианте. Вот столкнулся с проблемой - хранение бонусов при ответе,...

Найти причину ошибки "fatal error LNK1120: неразрешенных внешних элементов: 1" - C++
Добрый день, код по условию задачи выбивает ошибку &quot; fatal error LNK1120: неразрешенных внешних элементов: 1&quot; В чем проблема? ...

Структура (вывести время вылета по возрастанию) - C++
Всем привет. Люди добрые помогите вывести время вылета по возростанию моя переменная (vv) #include &lt;iostream.h&gt; #include &lt;string.h&gt; ...


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

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

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