Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Издеваемся над матрицами


Автор: Elanor 20.2.2003, 01:10
Итак, ребяты
что мы имеем?
есть текстовый файл вида

matrix of system:
number of lines and of columns is: 5
.426338 1.446329 1.549385 1.090958 .1644897
.7058948 2.114897 4.686707 .9781208 4.913401
.4321915 .5612787 8.636734 10.86299 5.613901
1.132233 3.561226 6.236092 2.069079 5.077891
1.138086 2.676176 13.32344 11.84111 10.5273
free members:
7.77345
32.81205
62.37718
40.5855
95.18923

причем каждый раз размер матрицы может меняться(файл рандомен)
вопрос: как это все считать из файла, если матрица у нас массив
типа matrix[i][j]
для любопытсвующих - потом я с этим буду еще Жордановы исключения проводить
но пока не могу именно считать... withstupid.gif
ну.. ежу понятно.. что свободные члены я сохраню как отдельный массив.. или их добавить к матрице? как лучше? на С++ мы только со строковыми данными работали.. а тут такое вот

Автор: Step 20.2.2003, 01:25
ты скажи, тебе, что данные из файла нужно преобразовать во флоат и занести в матрицу или я чето не так понял...

Автор: Elanor 20.2.2003, 01:48
ну..хоть бы и во флоат
или в риал..
загвоздка еще в самом строении файла -
да, строку пропущу..да во второй цифру возьму как размер..
но именно как взять матрицуconfused.gif

Автор: AntonSaburov 20.2.2003, 02:12
Что значит "взять матрицу"
Создавать массив динамически. У меня даже как-то библиотека была написана для матриц.
И сложение, и умножение, и транпонирование, и обратная матрица.

И все это прекрасно работает.

Автор: Fantasist 20.2.2003, 02:12
Цитата
но именно как взять матрицу



Для этого лучше всего файловый поток подходит. Типа так:

Код

ifstream is("имя файла");

double **matrix;

int n=0;

//читаем размер матрицы в n


               //выделяем память
matrix = new double*[n];
for (int i=0; i<n; ++i)
 matrix[i] = new double[n];

for (i=0; i<n; ++i)
 for (int j=0; j<n; ++j)
  is>>matrix[i][j];

              //освобождаем память




Скорее всего такой вариант ожидается от новичка. Потому как хранение матрицы в том виде в котором я привел очень неудобно и мне не нравиться совершенно.

Автор: Elanor 22.2.2003, 17:23
да в догонку, пока эту тему не насовсем опустили:
вот к примеру..выделила я какой-то желемент аij- проделала с матрицей какую-нить фигню..
а как можно потом запретить для чтения строку i и столбец j - это какая то команда или стоит писать определенный цикл?

Автор: podval 23.2.2003, 01:50
Цитата
как можно потом запретить для чтения строку i и столбец j

Вставить проверку на неравенство i и j.

Автор: Nastya 24.2.2003, 00:47
Цитата
а как можно потом запретить для чтения строку i и столбец j - это какая то команда или стоит писать определенный цикл?



Кому запретить?
В своей програм ме можно просто не читать имено эту строку или столбец
Если сторонним программам?
То не как. Разве что скрыть весь файл или запертить записовать в весь файл.

Автор: Paradox 25.2.2003, 15:16
A еще можно сделать не просто матрицу из эт-тов типа float а сделать ее из ол-тов структуры
{ float element
bool ReadingPermission }

Автор: Molnienosetz 6.3.2003, 03:42
AntonSaburov!
У тебя как обратную матрицу считает? У меня через рекурсию - я ждать запарился (пока посчитает).

Автор: Leha 17.2.2005, 23:58
Помогите, пожалуйста, кто-нибудь решить задачу на рекурсию. Если есть благотворители пишите [email protected]. Буду очень признателен, Алексей. smile

Автор: Doc_d0s 19.2.2005, 20:27
Есть ф-ия fseek()дык считай перве строки и посчитай их длину, а потом поставь fseek'ом указатель в конец этих строк smile

Автор: Quartz 23.10.2005, 15:20
А как реализовать решение системы уравнений методом Жордановых исключений???

Автор: Tarasik 23.10.2005, 16:52
Doc_d0sпомоги построить функцию int quest(char mas[],int n)
возвращающую количество букв или цыфр в масивеmas[], n-где размер массива
Добавлено @ 16:54
Doc_d0s построить функцию int quest(char mas[],int n)
возвращающую количество букв или цыфр в масивеmas[], n-где размер массива

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)