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

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

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

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

20.12.2012, 13:10. Просмотров 321. Ответов 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++
Считывание матрицы из файла C++
Опытные программисты , нужно сделать считывание с файла матрицы 4*4 C++
Считывание вещественной матрицы из файла C++
C++ Считывание и транспонирование матрицы
Построчное считывание матрицы из файла C++
Считывание из файла C++
Считывание матрицы с файла C++
Считывание элементов матрицы из файла и запись ответов в другой текстовый файл C++
C++ Почему после считывания матрицы из файла начинается повторное считывание?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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;
}
Yandex
Объявления
20.12.2012, 22:55     Считывание матрицы изз файла
Ответ Создать тему
Опции темы

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