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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.63
iliapl
11 / 11 / 1
Регистрация: 04.11.2009
Сообщений: 29
#1

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

25.11.2009, 18:19. Просмотров 2236. Ответов 14
Метки нет (Все метки)

Так,вообще вот исходный файл(F:\****\****\input.txt):
3 3
1 2 3
4 5 6
7 8 9
Первые два числа это размеры матрицы,остальные эта сама матрица.Использовать fin и fout.Нужно считать матрицу и записать её в файл (F:\****\****\output.txt).
C++
1
2
3
4
5
#include <fstream>
int main()
{
?????????
}
вопрос - как это сделать...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
25.11.2009, 18:30     Считывание и запись матрицы из/в файл #2
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
#include <fstream>
#include <iostream>
 
 
int main()
{
    std::ofstream fout("output.txt");
    if ( !fout.is_open() ) {    std::cerr << "Can't open output file!" << std::endl;    exit(1); }
    
    std::ifstream fin("input.txt");
    if ( !fin.is_open() ){ std::cerr << "Can't open input file!" << std::endl;  exit(1);    }
 
    int col, row, temp;
    fin>>col>>row;
    
 
    while (!fin.eof())
    {
        fin>>temp;
        fout<<temp;
    }
 
    return 0;
}
iliapl
11 / 11 / 1
Регистрация: 04.11.2009
Сообщений: 29
25.11.2009, 18:34  [ТС]     Считывание и запись матрицы из/в файл #3
а можно пояснить что есть что?=)И можно ли
std:: ..... std:: убрать замечательными словами
C++
1
using namespace std;
?
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
25.11.2009, 18:45     Считывание и запись матрицы из/в файл #4
Цитата Сообщение от iliapl Посмотреть сообщение
а можно пояснить что есть что?=)И можно ли
std:: ..... std:: убрать замечательными словами
C++
1
using namespace std;
?
конечно можно,
строки 7-11 открытие файлов с проверкой возможности сей операции, копипастнул из свежей темы 13-14 считывает количество солбцов и строк

17-21 читает оставшиеся символы и перегоняет их в фаил

вообще как мне кажется надо ещё что-то с данными делать, а то данные о матрици бесхозные оказались
iliapl
11 / 11 / 1
Регистрация: 04.11.2009
Сообщений: 29
25.11.2009, 18:57  [ТС]     Считывание и запись матрицы из/в файл #5
Смотрите,вообщем мой вариант,но тут без записи в файл,просто чтение файла и вывод на экран

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
#include <fstream>
#include <iostream>
#include <conio.h>
using namespace std;
void MatrixSize(int &n,int &m)
{
    ifstream fin("F:\\input.txt");
    fin>>n>>m;
}
void ReadData(int **A,int n,int m)
{
    ifstream fin("F:\\input.txt");
 
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
{
fin>>A[i][j];
}
}
void OutputData(int **A,int n,int m)
{
    for (int i=0;i<n;i++)
        for (int j=0;j<m;j++)
        {
            cin>>A[i][j];
        }
}
void main()
{
    int n,m,**A;
    MatrixSize(n,m);
    A=new int*[n];
        for(int i=0; i<n; i++)
            A[i]=new int[m];
    ReadData(A,n,m);
    OutputData(A,n,m);
    for(int i=0; i<n; i++)
        delete [] A[i];
    delete [] A;
    getch();
}
выдаёт какую то ошибочку((
Ваш способ мне понятен,но мне всё таки нужно что бы он в масив записывал...
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
25.11.2009, 19:01     Считывание и запись матрицы из/в файл #6
так чего ты сразу молчал, кстати, и в твоём и моём коде нет закрытия открытых файлов,
что ой как не хорошо. щас посмотрю чего у тебя ещё есть
iliapl
11 / 11 / 1
Регистрация: 04.11.2009
Сообщений: 29
25.11.2009, 19:06  [ТС]     Считывание и запись матрицы из/в файл #7
так вроде в варианте fin и fout они как то сами закрываются)Мне так препод говорил))если мы используем Си-шный вариант,т.е. fprint и fscan, то там закрывать файл надо,а если c++-cный вариант fin и fout, то там не надо)
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
25.11.2009, 19:09     Считывание и запись матрицы из/в файл #8
строка 26 надо cout

но прога всё равно не рабочая

Добавлено через 1 минуту
ты когда массив считываешь данных, забываешь что у тебя остались m и n в начале файла а в
void ReadData(int **A,int n,int m) ты его заново открываешь и первыми читаешь их
iliapl
11 / 11 / 1
Регистрация: 04.11.2009
Сообщений: 29
25.11.2009, 19:12  [ТС]     Считывание и запись матрицы из/в файл #9
мммм...и что делать
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
25.11.2009, 19:41     Считывание и запись матрицы из/в файл #10
iliapl, вот Вам програмка
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
#include <fstream>
#include <iostream>
 
 
int main()
{
    size_t row, col, i, j;
    
    std::ofstream fout("output.txt");
    if ( !fout.is_open() ) {
        std::cerr << "Can't open output file!" << std::endl;    
        exit(1); 
    }
        
    std::ifstream fin("input.txt");
    if ( !fin.is_open() ){
        std::cerr << "Can't open input file!" << std::endl;      
        exit(1);        
    }
 
    fin >> row >> col;
    if ( fin.bad() ){
        std::cerr << "Error while reading file!" << std::endl;
        exit(1);
    }
    
    if ( !col || !row ){
        std::cerr << "Wrong data!" << std::endl;
        exit(1);
    }
        
    int **matrix;
    matrix = new int* [row];
    for ( i = 0; i < row; i++ )
        matrix[i] = new int [col];
    
    for ( i = 0; i < row; i++ ){
        for ( j = 0; j < col; j++ ){
            fin >> matrix[i][j];
            if ( fin.bad() ){
                std::cerr << "Error while reading file!" << std::endl;
                exit(1);
            }
        }
    }
    
    fin.close();
    
    for ( i = 0; i < row; i++ ){
        for ( j = 0; j < col; j++ ){
            std::cout << matrix[i][j] << ( ( j < col - 1 ) ? ' ' : '\n' );
            fout << matrix[i][j] << ( ( j < col - 1 ) ? ' ' : '\n' );
            if ( fout.bad() ){
                std::cerr << "Error while writing data!" << std::endl;
                exit(1);
            }
        }
    }
    
    fout.close();
 
    for ( i = 0; i < row; i++ )
        delete [] matrix[i];
    delete [] matrix;
 
    return 0;
}
Цитата Сообщение от iliapl Посмотреть сообщение
так вроде в варианте fin и fout они как то сами закрываются)Мне так препод говорил))если мы используем Си-шный вариант,т.е. fprint и fscan, то там закрывать файл надо,а если c++-cный вариант fin и fout, то там не надо)
Учителю своему привет передавайте...

Не по теме:

а TanT над Вами просто издевается

iliapl
11 / 11 / 1
Регистрация: 04.11.2009
Сообщений: 29
25.11.2009, 19:51  [ТС]     Считывание и запись матрицы из/в файл #11
easybudda, такс,а можно так,что бы мой код изменить/добавить что то и он работал?Я прост оваш код если честно не понимаю вообще(я полтора месяца только программирую,поэтому не любой код могу прочитать)
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
25.11.2009, 19:56     Считывание и запись матрицы из/в файл #12
Цитата Сообщение от iliapl Посмотреть сообщение
а можно так,что бы мой код изменить/добавить что то и он работал?
Если Вы про этот
C++
1
2
3
4
5
#include <fstream>
int main()
{
?????????
}
код, то я по сути так и сделал а с какого места непонятно?
iliapl
11 / 11 / 1
Регистрация: 04.11.2009
Сообщений: 29
25.11.2009, 19:57  [ТС]     Считывание и запись матрицы из/в файл #13
Цитата Сообщение от iliapl Посмотреть сообщение
Смотрите,вообщем мой вариант,но тут без записи в файл,просто чтение файла и вывод на экран

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
#include <fstream>
#include <iostream>
#include <conio.h>
using namespace std;
void MatrixSize(int &n,int &m)
{
    ifstream fin("F:\\input.txt");
    fin>>n>>m;
}
void ReadData(int **A,int n,int m)
{
    ifstream fin("F:\\input.txt");
 
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
{
fin>>A[i][j];
}
}
void OutputData(int **A,int n,int m)
{
    for (int i=0;i<n;i++)
        for (int j=0;j<m;j++)
        {
            cin>>A[i][j];
        }
}
void main()
{
    int n,m,**A;
    MatrixSize(n,m);
    A=new int*[n];
        for(int i=0; i<n; i++)
            A[i]=new int[m];
    ReadData(A,n,m);
    OutputData(A,n,m);
    for(int i=0; i<n; i++)
        delete [] A[i];
    delete [] A;
    getch();
}
выдаёт какую то ошибочку((
Ваш способ мне понятен,но мне всё таки нужно что бы он в масив записывал...
я про этот)
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
25.11.2009, 20:06     Считывание и запись матрицы из/в файл #14
iliapl, ну тут прямо с начала много непонятного... Например:
C++
1
2
3
4
5
void MatrixSize(int &n,int &m)
{
        ifstream fin("F:\\input.txt");
        fin>>n>>m;
}
то есть файл, из которого должны данные читаться, открывается в сомнительного назначения функции, после чего ещё раз открывается в следующей функции?
C++
1
2
3
void ReadData(int **A,int n,int m)
{
        ifstream fin("F:\\input.txt");
Если так уж хочется, чтоб данные отдельными функциями из файла читались, нужно сначала этот файл в main открыть, проверить, что открылся, а потом. как параметр дополнительный, в функцию передавать. И правильно Вам Tant говорил - внутри ReadData надо учитывать, что первые два числа в файле - размер матрицы, и их пропускать надо...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2009, 20:07     Считывание и запись матрицы из/в файл
Еще ссылки по теме:
C++ Запись/считывание vector в/из файл
C++ Считывание и запись в файл по 8 байт
C++ Запись в файл и его считывание
Считывание и запись структур в бинарный файл C++
C++ Считывание\запись int из файла\в файл

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

Или воспользуйтесь поиском по форуму:
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
25.11.2009, 20:07     Считывание и запись матрицы из/в файл #15
Цитата Сообщение от easybudda Посмотреть сообщение

Не по теме:

а TanT над Вами просто издевается

ничего подобного, это заяление порочащее моё доброе имя, я вообще самый добрый и отзывчивый

забыл добавить "и скромный к тому же"
Yandex
Объявления
25.11.2009, 20:07     Считывание и запись матрицы из/в файл
Ответ Создать тему
Опции темы

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