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

Не пойму че не так... - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как создать многопоточность http://www.cyberforum.ru/cpp-beginners/thread334970.html
В сети гуглил, но так банального ответа для себя не нашёл, как размногопоточить приложение, в delphi делал так function getnumberbux: integer; begin if ind <> Listview1.items.Count then ...
C++ Данные по адресу памяти У меня есть адрес например 0x11E9B62C как узнать что по нему записанно? http://www.cyberforum.ru/cpp-beginners/thread334923.html
C++ Закрываеться программа
/* Всё там есть */ #include <iostream> using namespace std; //C++ прога начинаеца с функции main(). int main() { double fut, metr; cout << "vvedi skoka futov: ";
C++ Заполнить двумерный массив следующим образом
120 ... 112 111 ... ... ... ... 20 ... 12 11 10 ... 2 1
C++ Структура в функции с++ http://www.cyberforum.ru/cpp-beginners/thread334918.html
Привет всем, кто всегда готов помочь. Подскажите пожалуйста, в чем ошибка в коде. Если надо, я могу рассказать условие задания, но я думаю, что это не важно. Вот мой код: #include <cstring>...
C++ Сформировать одномерный массив, каждый элемент которого равен наибольшему по модулю элементу соответствующей строки двумерного массива. Дан двумерный массив целых чисел. Сформировать одномерный массив, каждый элемент которого равен наибольшему по модулю элементу соответствующей строки двумерного массива. подробнее

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

Не пойму че не так... - C++

21.07.2011, 10:47. Просмотров 300. Ответов 4
Метки (Все метки)

Хай чуваки! написал прогу, а она не заходит в одно из условий. Помогите!!!
Мне дана матрица коэффициентов системы линейных уравнений в необычном виде:
Исходная СЛУ
4x1 + 2x2 + 9x3 = 1
x2 + 6x3 = 7
4x1 + 2x3 = 0
коэффициенты исходной СЛУ
(1;4)(2;2)(3;9)
(2;1)(3;6)
(1;4)(3;2)
Каждая строка файла содержит информацию о ненулевых коэффициентах одного уравнения СЛУ.
Количество строк в файле соответствует количеству уравнений СЛУ.
Порядковый номер строки в файле соответствует номеру уравнения i.

Каждая строка файла состоит из групп чисел (j ; k(i;j))
• Первое число в группе – это значение номера j коэффициента k(i;j) при неизвестном x(j) в уравнении i
• Второе число в группе – это значение коэффициента k(i;j)

Количество таких групп в строке файла (т.е. количество ненулевых коэффициентов в уравнении) может быть любое – от 1 до n, где n – количество неизвестных в СЛУ.

Это только пример. У меня же матрица порядка 3638. Мне надо из этой матрицы получить обычную матрицу системы. Вот так она выглядит:
4 2 9
0 1 6
4 0 2
Написал прога, а она почему то работает только для небольших матриц. Запускаю на матрицу порядка 3638 и в качестве результата получаю просто нулевую матрицу.
Вот код:
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
int main()
{
    // Удаление ненужных разделителей  "(", ")", ";", ","
    // Добавление последним элементом строки - "0"
    // "0" выступит в качестве разделителя в одномерном векторе stringMatrix
    char a;
    ifstream fin1 ("1.txt");
    ofstream ofs2 ("2.txt");
    while (!fin1.eof())
    {
        a = fin1.get();
        if (fin1.eof()) break;
        if ( a == '(' ){ ofs2 << ""; } else 
        if ( a == ';' || a == ')' ){ ofs2 << " "; } else 
        if ( a == ',' ){ ofs2 << "."; } else
        if ( a == '\n' ){ ofs2 << "0" << "\n";}
        else { ofs2 << a; }
    }
    fin1.close(); 
    ofs2.close();
 
    // Построение нулевой матрицы с помощью кучи
    int range = 4;
    double **matrix = new double*[range];
    for (int i = 0; i < range; i++) 
    {
        matrix[i] = new double[range]();
    }
 
    // считывание в одномерный вектор элементов 3.txt
    double b;
    vector <double> stringMatrix;
    ifstream fin2("2.txt");
    ofstream ofs3("3.txt");
    while ( fin2 >> b )
    {
        stringMatrix.push_back(b);
    }
 
    // Итоговая матрица коэфициентов
    int schetchik = 0;
    int string = 0;
    int column;
    while ( schetchik < stringMatrix.size() )
    {
        if ( stringMatrix[schetchik] != 0 )
        {
            column = stringMatrix[schetchik] - 1;
            matrix[string][column] = stringMatrix[schetchik+1];
            schetchik = schetchik + 2;
        } else 
        {
            schetchik++; string++;
        }
    }
 
    // Вывод матрицы коэффициентов - способ 2
    for ( int i =0; i < range; i++)
    {
        copy ( matrix[i], matrix[i] + range, ostream_iterator<double>( ofs3, " "));
    ofs3.put('\n');
    }
    ofs3.close ();
 
    // Освобождение памяти
    for ( int i =0; i < range; i++)
    delete[] matrix[i];
    delete[] matrix;
}
Работаю с текстовыми файлами, так что кидаю и их
1.txt - матрица порядка 4 (просто тестовая)
2.txt - промежуточный результат вычислений
3.txt - итоговая квадратная матрица
4.txt - матрица порядка 3638 (её то и нужно в квадратную превратить)
0
Вложения
Тип файла: rar 1-2-3-4.rar (22.9 Кб, 7 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru