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

Неизвестная ошибка(скорее всего с размером массива\памяти) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вектор потоков http://www.cyberforum.ru/cpp-beginners/thread803696.html
В программе мне требуется иметь доступ одновременно к большому количеству файлов ( чтение ). Чтение я осуществляю через ifstream. Сначала пробовал сделать так vector <ifstream> streams; for ( int i = 0 ; i < num_files ; i++ ) { string name; name += ( (char)(i+48) + ".txt" );// имя файла, из которого будет осуществляться чтение streams.push_back(ifstream(name)); } ...
C++ С вариативной частью Разработать структуру с вариативной частью для представления информации о студенте (различать бюджетников и контрактников). Общая информация для всех студентов: ф.и.о., средняя успеваемость в диапазоне от 0 до 100 баллов. Вариативная часть: для бюджетников - размер стипендии, для контрактников – годовая стоимость контракта. Стипендия вещественного типа, контракт – целого. Создать массив... http://www.cyberforum.ru/cpp-beginners/thread803685.html
fatal error C1083: Cannot open include file: 'Date.h': No such file or directory C++
Всем добрый вечер! У меня проблема. Мне нужно, чтобы мой класс содержал обьект другого класса как элемент данных, я его добавила в проект, но компилятор ругается #ifndef EMPLOYEE_H // в этом файле я включаю "Date.h" #define EMPLOYEE_H #include <string> using std::string; #include <iostream> using std::ostream;
подскажите, как правильно составить алгоритм C++
Есть 3 планеты, которые вращаются вокруг звезды. Массу, скорость и радиус планет я ввожу с клавиатуры. 5. Рассчитать, на каком расстоянии друг от друга будут находиться планеты для заданного времени t, прошедшего с момента появления звездолета в системе. (планеты в начале на одной прямой стоят) Я так понял, надо как-то находить угол отклонения от первоначальной точки?
C++ Массивы. Программа на поиск минимального Хи квадрата и вывода соответствующей модели http://www.cyberforum.ru/cpp-beginners/thread803627.html
Помогите найти ошибку=) Программа на поиск минимального Хи квадрата и вывода соответствующей модели...компиляцию проводит...однако при построении пишет что: Необработанное исключение в "0x010227d7" в "XiKvadrat.exe": 0xC00000FD: Stack overflow. Как понимаю это из-за вылета за края массива....либо определение массива слишком большое...я для примера набила файлы с парочкой строками...все равно та...
C++ исправте код помогите исправить код, плиз. #include <iostream> #include <string.h> using namespace std; enum type_t{BOOK, JOURNAL}; struct Izdanie { char title; char publish; подробнее

Показать сообщение отдельно
JuiK
0 / 0 / 0
Регистрация: 09.03.2013
Сообщений: 3

Неизвестная ошибка(скорее всего с размером массива\памяти) - C++

09.03.2013, 02:33. Просмотров 291. Ответов 4
Метки (Все метки)

Программа должна решать СЛУ методом Гаусса, не нужно конкретных значений, а просто свести к треугольному виду, и упростить(с фундаментальной системой возиться считаю бредом)

Пример: К-ство неизвестных 2 К-ство строк 4
Вводим значения: 1 1 2 2 3 3 4 4
Получаем ответ:
1 = 1
0 = 0
0 = 0
0 = -inf

Раньше, алгоритм работал, но когда я начал "защищать" программу от нулевых столбцов и нулевых элементов на диагонали появилось это загадочное @-inf@. Всегда в последней строке, после первого элемента,
например:
1 2 3 = 6
0 2 3 = 5
3 -inf -inf = -inf
(числа взяты с головы, главное, показано как ведет себя -inf)
Деления на ноль вроде отсутствует, а потому я решил откинуть предположение с бесконечностью.
Я так понимаю, где то ошибка с размером цикла/массива.
Написано было в Xcode.

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <iostream>
 
using namespace std;
 
int main() {
    
    setlocale(LC_ALL, "Russian");
    cin.precision(2);
    int heigth, length;
    cout << "Введите количество неизвестных: ";
    cin >> length;
    cout << "Введите количество строк: ";
    cin >> heigth;
    
    double **matrix = new double*[heigth]; // Выделение памяти для массива
    for (int i = 0; i < heigth; i++) {
        matrix[i] = new double[length+1];
    }
    
    double **new_matrix = new double*[heigth]; // Выделение памяти для массива
    for (int i = 0; i < heigth; i++) {
        new_matrix[i] = new double[length+1];
    }
    
    for ( int i = 0; i < heigth; i++) {            //заполнение матрицы
        for ( int j = 0; j < (length+1); j++) {
            if (j != (length)) {
                cout << "Введите коефициент " << i+1 << " строки " << j+1 << " столбца ";
                cin >> matrix[i][j];
            }
            else {
                cout << "Введите значение, которому равно " << i+1 << " уравнение ";
                cin >> matrix[i][j];
            }
        }
    }
    
    for (int h = 0; h < heigth; h++) {        //метод Гаусса
        int zero = 0;
        int count = 0;
        int count2 = 0;
        int border = heigth;
        for (int k = 0; k < length+1; k++) {
           while (matrix[h][k] == 0) {                //защита от нулевых столбцов
                zero++;
                if (zero == border) {
                    k++;
                    count2++;
                    break;
                }
                else {for (int g = 0; g < (length+1); g++) {    //смена строки, если на диагонали 0 элемент
                    swap(matrix[k][g], matrix[k+1][g]);
                    }
                }
            }
        
            for (int i = count; i < heigth-1; i++) {            //алгоритм
                for (int j = count2; j < (length+1); j++) {
                    new_matrix[h][j] = (matrix[h][j]/matrix[h][k]);
                    new_matrix[i+1][j] = (matrix[i+1][j] - new_matrix[h][j]*(matrix[i+1][k]/new_matrix[h][k]));
                }
            }
            k++;
            count++;
            count2++;
            border--;
            break;
        }
    }
 
   for ( int i = 0; i < heigth; i++) {     //вывод матрицы на экран
        for ( int j = 0; j < (length+1); j++) {
            if (j != length) {
                cout << new_matrix[i][j] << " ";
            }
            else {
                cout << "= " << new_matrix[i][j];
            }
        }
        cout << endl;
    }
    
    delete [] matrix;
    delete [] new_matrix;
    
    return 0;
}
PS За освобождение памяти не ругать, еще руки не дошли до этого куска кода и было сделано временно для моего удобства.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru