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

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

Войти
Регистрация
Восстановить пароль
 
Elfenlide
23 / 23 / 1
Регистрация: 15.04.2012
Сообщений: 183
#1

Считывание матрицы изз файла - C++

20.12.2012, 13:10. Просмотров 331. Ответов 3
Метки нет (Все метки)

у меня есть файл в котором лежит информация в таком виде:
3 //количество вершин
3 //количество дуг
A //название вершин
B
C
-1 0 1
1 -1
0 1 -1
//сама матрица (матрица инцидентности) в виде которой представлен граф ABC у которого идёт дуга из А в В, из В в С, из С в А.
Я открываю файл fstream in(file.txt);
затем циклом собираю из файла данные.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
for (size_t i = 0; i < acount; ++i) {
        int v1=-1;//-1 vertex
        int v2=-1;//1 vertex
 
        for (size_t j = 0; j < vcount; ++j) {
            int k; 
            in >> k;
 
            cout << k << " ";
 
            if (k==1) 
            {
                v2=j;
            }
 
            if (k==-1)
            {
                v1=j;
            }
        }
/* --- тут далее вызывается функция библиотек куда заносятся данные итд...для формирования с помощью библиотеки дуги между вершинами ...это не важно впринципе.*/
Вот тут в коде есть строка cout << k << " " ;
Она выводит каждый элемент по очереди который считывает из файла, в итоге считывание идёт по строке вот так:
-1 0 1 1 -1 0 1 -1 -1.
Тогда при таком считывании не правильно формируются дуги. если так считывать то дуги будут такие: A -> B, B -> C, C -> A.
Но должно быть: A -> B, B -> C, C -> A.
Как сделать считывание так, чтобы считывалось не по строке из файла а по столбцу?

Добавлено через 4 минуты
Проблема решена путём транспонирования матрицы в файле, не то чтобы хотелось но тоже результат. Однако если кто-то может подсказать другое решение буду очень благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2012, 13:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считывание матрицы изз файла (C++):

Считывание матрицы из файла - C++
Есть код, в котором создается динамический массив. Нужно этот массив заполнить из файла. Только размеры зараннее неизвестны. не могу никак...

Считывание матрицы из файла - C++
Помогите пожалуйста: Нужно считать из файла матрицу NxM. Размерность задается в 1ой строке файла. Очень нужно и как можно быстрей)

Считывание матрицы с файла - C++
int main() { setlocale(LC_ALL, &quot; &quot;); double**L; L = new double *; for (int i = 0; i&lt;N; i++) L = new...

Считывание вещественной матрицы из файла - C++
Я нашел такую прогу, которая считывает из текстового файла матрицу. Проблема в том, что первый раз оно выводит элементы так, как есть. То...

Построчное считывание матрицы из файла - C++
Написал код ifstream fout(&quot;1.txt&quot;); if (fout.is_open()) { int i,j, N=0; fout&gt;&gt;N; //Считываю значение N ...

Опытные программисты , нужно сделать считывание с файла матрицы 4*4 - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;conio.h&gt; using namespace std; int main() { int n; cout&lt;&lt;&quot;Vvedite...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
svkpro
8 / 8 / 0
Регистрация: 07.12.2012
Сообщений: 143
20.12.2012, 13:13 #2
теперь у вас цикл заходит в строку а вложенный двигается по столбцам нужно сделать на оборот - чтоб заходил в столбец а двигался по строкам этого столбца) понимаете?
Elfenlide
23 / 23 / 1
Регистрация: 15.04.2012
Сообщений: 183
20.12.2012, 14:03  [ТС] #3
Цитата Сообщение от svkpro Посмотреть сообщение
теперь у вас цикл заходит в строку а вложенный двигается по столбцам нужно сделать на оборот - чтоб заходил в столбец а двигался по строкам этого столбца) понимаете?
Понимаю, но не понимаю как записать такое\ ведь в файле всегда идёт вроде считывание по строке, потом каретка переходит на следующую строку.
но разве она может идти на строку первого символа потом на следующую строку второго элемента потом третьего, а потом вернутся на первую строку второго элемента....
svkpro
8 / 8 / 0
Регистрация: 07.12.2012
Сообщений: 143
20.12.2012, 22:55 #4
а что если считать в массив и работать уже с массивом?
Код
#include "stdafx.h"
#include <iostream>
#include <fstream>

using namespace std;

char mas[3][3];

int main()

{	ifstream inpf("mas.txt");
	if (!inpf.is_open())
	{
		cout<<"файл не найден!"<<endl;
	}
	
	//запись в массив
	for(int i = 0; i <3 ; i++){
		for(int j = 0; j <3; j++){
			inpf>>mas[i][j];
			}
	}
	inpf.close();
	for(int j = 0; j <3 ; j++){//вот ходьба по столбцам
		for(int i= 0; i<3; i++){
			cout<<mas[i][j];
			}cout<<endl;
	}
	
	system("pause");

	return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2012, 22:55
Привет! Вот еще темы с ответами:

Почему после считывания матрицы из файла начинается повторное считывание? - C++
Здравствуйте. ПРоблема такова, считывает размер матрицы и саму матрицу, после успешного считвания начинает по новой её считывать, хотя...

Считывание элементов матрицы из файла и запись ответов в другой текстовый файл - C++
Помогите пожалуйста написать программу для считывания элементов матрицы размером М х N из файла для вывода на экран, и записи ответа в...

Заменить считывание с клавиатуры на считывание из файла - C++
Помогите пожалуйста, ни разу не работал со считыванием из файла поэтому не понимаю как и что делать. Почитал в интернете, попробовал, не...

Считывание файла в массив и запись нового файла - C++
Консоль VS C++. Текстовый файл открывается как бинарный, и считывается по 100 байт в массив - и сразу они переписываются в другой файл. В...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.12.2012, 22:55
Ответ Создать тему
Опции темы

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