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

Нужно считать матрицу - C++

Восстановить пароль Регистрация
 
Stas0n
3 / 4 / 0
Регистрация: 13.07.2011
Сообщений: 313
15.07.2011, 11:12     Нужно считать матрицу #1
Доброго времени суток!
Тут такая проблема. У меня есть файл txt, в котором коэффициенты матрицы расположены так:
1 4
2 1 3 6
1 5 3 2 234 5
Мне же надо записать в файл, но уже в таком виде:
1 4 0 0 0 0
2 1 3 6 0 0
1 5 3 2 234 5
Как это можно реализовать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
co6ak
Кошковед
 Аватар для co6ak
403 / 496 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
15.07.2011, 11:16     Нужно считать матрицу #2
если знаешь размер матрицы - добивать нулями при отсутствии данных.
если не знаешь - хз
Stas0n
3 / 4 / 0
Регистрация: 13.07.2011
Сообщений: 313
15.07.2011, 11:27  [ТС]     Нужно считать матрицу #3
Уже) вообще у матрицы порядок 3500. но я пока что код пишу тестю для порядка 3
Просто пока что не очень получается.. хотел бы чтоб наброски кода кинули
CAHTEXHUK
Заблокирован
15.07.2011, 11:35     Нужно считать матрицу #4
считать строки в вектора. Одна строка - один вектор
посчитать максимум количества элементов (vector.size())
дополнить нулями вектора, если это необходимо
записать в фаил
Stas0n
3 / 4 / 0
Регистрация: 13.07.2011
Сообщений: 313
15.07.2011, 11:39  [ТС]     Нужно считать матрицу #5
Долго получается.. я сразу - считываю из одного и записываю в другой файл
Вот мой код:
ifstream fin2 ("2.txt");
ofstream ofs3 ("3.txt");
char b;
int order = 3; // порядок матирцы
int n=0;
while (!fin2.eof())
{
b = fin2.get();
if (fin2.eof()) break;
if ( b == ' ' ){ ofs3 << b << " "; n++;}
if ( b == '\n' )
{
for ( int i=0; i < order*2 - n; i++ )
{
ofs3 << "0 ";
}
ofs3 << endl;
}
}
Вот только что-то он не выводит нечего...
CAHTEXHUK
Заблокирован
15.07.2011, 12:05     Нужно считать матрицу #6
зачем тебе посимвольное считывание. Оператор>> или getline здесь более уместны

Добавлено через 1 минуту
мой способ универсальнее будет
Alexanches
86 / 7 / 1
Регистрация: 04.06.2010
Сообщений: 80
15.07.2011, 12:37     Нужно считать матрицу #7
я бы создал двумерный массив char** запихнул бы сперва все в него потом бы уже в матрицу про помощи atoi..
это если не знаешь порядок матрицы)
Stas0n
3 / 4 / 0
Регистрация: 13.07.2011
Сообщений: 313
15.07.2011, 12:41  [ТС]     Нужно считать матрицу #8
Довольно долго получится...
Alexanches
86 / 7 / 1
Регистрация: 04.06.2010
Сообщений: 80
15.07.2011, 12:45     Нужно считать матрицу #9
зато просто)

написал функцию resize
потом считал все в char**
написал ф-ю определения самой длинной строки будущей матрицы
перевел все в числовой вид) и готово в принципе то)
Stas0n
3 / 4 / 0
Регистрация: 13.07.2011
Сообщений: 313
15.07.2011, 12:47  [ТС]     Нужно считать матрицу #10
Тут основной упор на время вычисления...
Alexanches
86 / 7 / 1
Регистрация: 04.06.2010
Сообщений: 80
15.07.2011, 12:54     Нужно считать матрицу #11
В смысле на время действия программы? это да, если очень большая матрица будет, тут не поспоришь..
Stas0n
3 / 4 / 0
Регистрация: 13.07.2011
Сообщений: 313
15.07.2011, 13:00  [ТС]     Нужно считать матрицу #12
Вот вот. Не подскажешь - так правильно писать:
int n;
cout << n;
double array[n][n];
Просто хочу создать двумерный массив даблов...
ругается))))
Alexanches
86 / 7 / 1
Регистрация: 04.06.2010
Сообщений: 80
15.07.2011, 13:09     Нужно считать матрицу #13
не динамический массив создается лишь при помощи констант, то есть
const int=3;
или в начале файла в директивах написать #define n 3
тогда можно будет написать double array[n][n];

кстати cout это вывод..
нужно писать cin..
Stas0n
3 / 4 / 0
Регистрация: 13.07.2011
Сообщений: 313
15.07.2011, 13:15  [ТС]     Нужно считать матрицу #14
В чем тут ошибка? Просто хочу вывести матрицу в квадратном виде:
ofstream ofs3("3.txt");
for ( int i = 0; i < 3; i++)
{
for ( int j = 0; j < 3; j++)
{
if ( j == 3 ) { ofs3 << b[i][j] << "\n" << endl; }
else { ofs3 << b[i][j] << " "; }
}
}
выводит в строчку...(
CAHTEXHUK
Заблокирован
15.07.2011, 13:26     Нужно считать матрицу #15
а дважды объявлена.

Добавлено через 1 минуту
в файловых потоках никакого char** и atoi не надо. Там есть форматированный ввод-вывод, который я уже предлагал

Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
for ( int i = 0; i < 3; i++)
 {
 for ( int j = 0; j < 3; j++)
 {
 ofs3 << b[i][j];
 }
ofs3 << endl;
 }
про теги форматирования не забывайте
Alexanches
86 / 7 / 1
Регистрация: 04.06.2010
Сообщений: 80
15.07.2011, 13:27     Нужно считать матрицу #16
не знаю мы в универе вектора писали сами и в конце 2 курса
а задачи типа этой решали на 1 курсе в 1 семестре
и что такое вектор тогда еще даже не слышали)
а про вектора которые уже есть в каких то библиотеках у нас было в лекциях 2 строчки)
так что подозреваю ты предлагаешь работу с вектором человеку который про это даже не слышал))
CAHTEXHUK
Заблокирован
15.07.2011, 13:30     Нужно считать матрицу #17
это легко исправить. Новичкам проше работать с векторами, чем с указателями в большинстве случаев
Alexanches
86 / 7 / 1
Регистрация: 04.06.2010
Сообщений: 80
15.07.2011, 13:33     Нужно считать матрицу #18
что представляет собой вектор ? мне кажется я чего то путаю..
это класс где хотя бы есть поля: массив чего то и его размер?)
CAHTEXHUK
Заблокирован
15.07.2011, 13:40     Нужно считать матрицу #19
тут вобще то другой вопрос обсуждается,
http://www.cplusplus.com/reference/stl/vector/
размер и ёмкость он содержит
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2011, 13:43     Нужно считать матрицу
Еще ссылки по теме:

считать матрицу C++
Считать матрицу из Excel C++
C++ Считать матрицу в динамический массив

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

Или воспользуйтесь поиском по форуму:
Alexanches
86 / 7 / 1
Регистрация: 04.06.2010
Сообщений: 80
15.07.2011, 13:43     Нужно считать матрицу #20
ну да) мой способ проще твой быстрее) пусть выбирает чего ему удобнее)
Yandex
Объявления
15.07.2011, 13:43     Нужно считать матрицу
Ответ Создать тему
Опции темы

Текущее время: 16:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru