Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/79: Рейтинг темы: голосов - 79, средняя оценка - 4.57
12 / 12 / 1
Регистрация: 04.11.2009
Сообщений: 29

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

25.11.2009, 18:19. Показов 15755. Ответов 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()
{
?????????
}
вопрос - как это сделать...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.11.2009, 18:19
Ответы с готовыми решениями:

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

Считывание и запись в файл
решил задачу на с, го её нужно перевести на с++. у меня возникли проблемы с считыванием и записью в файл. помогите пожалуйста! Вот код на...

Считывание и запись в файл
Короче пытаюсь считать из одного файла цифру и записать ее в другой файл На то что после // не обращайте внимания эт я для себя писал))) ...

14
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
25.11.2009, 18:30
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;
}
0
12 / 12 / 1
Регистрация: 04.11.2009
Сообщений: 29
25.11.2009, 18:34  [ТС]
а можно пояснить что есть что?=)И можно ли
std:: ..... std:: убрать замечательными словами
C++
1
using namespace std;
?
0
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
25.11.2009, 18:45
Цитата Сообщение от iliapl Посмотреть сообщение
а можно пояснить что есть что?=)И можно ли
std:: ..... std:: убрать замечательными словами
C++
1
using namespace std;
?
конечно можно,
строки 7-11 открытие файлов с проверкой возможности сей операции, копипастнул из свежей темы 13-14 считывает количество солбцов и строк

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

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

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();
}
выдаёт какую то ошибочку((
Ваш способ мне понятен,но мне всё таки нужно что бы он в масив записывал...
0
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
25.11.2009, 19:01
так чего ты сразу молчал, кстати, и в твоём и моём коде нет закрытия открытых файлов,
что ой как не хорошо. щас посмотрю чего у тебя ещё есть
0
12 / 12 / 1
Регистрация: 04.11.2009
Сообщений: 29
25.11.2009, 19:06  [ТС]
так вроде в варианте fin и fout они как то сами закрываются)Мне так препод говорил))если мы используем Си-шный вариант,т.е. fprint и fscan, то там закрывать файл надо,а если c++-cный вариант fin и fout, то там не надо)
0
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
25.11.2009, 19:09
строка 26 надо cout

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

Добавлено через 1 минуту
ты когда массив считываешь данных, забываешь что у тебя остались m и n в начале файла а в
void ReadData(int **A,int n,int m) ты его заново открываешь и первыми читаешь их
0
12 / 12 / 1
Регистрация: 04.11.2009
Сообщений: 29
25.11.2009, 19:12  [ТС]
мммм...и что делать
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
25.11.2009, 19:41
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 над Вами просто издевается ;)

0
12 / 12 / 1
Регистрация: 04.11.2009
Сообщений: 29
25.11.2009, 19:51  [ТС]
easybudda, такс,а можно так,что бы мой код изменить/добавить что то и он работал?Я прост оваш код если честно не понимаю вообще(я полтора месяца только программирую,поэтому не любой код могу прочитать)
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
25.11.2009, 19:56
Цитата Сообщение от iliapl Посмотреть сообщение
а можно так,что бы мой код изменить/добавить что то и он работал?
Если Вы про этот
C++
1
2
3
4
5
#include <fstream>
int main()
{
?????????
}
код, то я по сути так и сделал а с какого места непонятно?
0
12 / 12 / 1
Регистрация: 04.11.2009
Сообщений: 29
25.11.2009, 19:57  [ТС]
Цитата Сообщение от 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();
}
выдаёт какую то ошибочку((
Ваш способ мне понятен,но мне всё таки нужно что бы он в масив записывал...
я про этот)
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
25.11.2009, 20:06
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 надо учитывать, что первые два числа в файле - размер матрицы, и их пропускать надо...
0
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
25.11.2009, 20:07
Цитата Сообщение от easybudda Посмотреть сообщение

Не по теме:

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

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

забыл добавить "и скромный к тому же"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.11.2009, 20:07
Помогаю со студенческими работами здесь

считывание и запись в файл
вот написал программу на C++ builder в консоли, считывающую два числа и записывающую в файл их сумму. но она не работает, помогите советом....

Считывание и запись в файл
В Си. В файле data.txt даны квадратная матрица A и вектор X, соответствующих размерностей. Написать и протестировать функцию: а)...

Считывание и запись определителя матрицы
в файле записан массив , его надо считать и найти его определитель, и записать его в другой файл. программа не хочет считывать данные. ...

Запись/считывание vector в/из файл
Здравствуйте. Есть массив векторов. Необходимо их в бинарном виде записать, а потом считать из файла без сторонних библиотек. Использую...

Считывание и запись в файл по 8 байт
Вообщем такая беда как считать по 8 байт из одного файла и засунуть в другой,читать файл нужно по частям по 8 байт ,если на последнее...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru