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

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

Войти
Регистрация
Восстановить пароль
 
shans
0 / 0 / 0
Регистрация: 09.02.2010
Сообщений: 43
#1

Записать масив в файл - C++

09.02.2010, 17:30. Просмотров 753. Ответов 12
Метки нет (Все метки)

Как записать двухмерный int массив в файл.Обычный C.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2010, 17:30     Записать масив в файл
Посмотрите здесь:

C++ Дан файл. Записать в другой файл строки, которые являются палиндромами.
записать масив структур в файл C++
Как из масива "а" записать данные в масив "б" но в обратном порядке C++
C++ Дан символьный файл f. Записать в файл g элементы файла f в обратном порядке
Динамический масив: записать в масив все делители числа n C++
C++ Считать количество строк в файле и записать в масив
C++ создать файл 1.part и записать в него первые x элементов массива. После чего, создать второй файл 2.part, куда записать оставшиеся в массиве элементы.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Genius Ignat
1234 / 772 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
09.02.2010, 18:20     Записать масив в файл #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
int main(){
int array[10] = {1,2,3,4,5,6,7,8,9,0};
FILE *f = fopen("C:\\my_file.txt", "w");
for(int i = 0; i < 10; i++)
{
fprintf(f, "%d ", array[i]);
}
fclose(f);
 
return 0;
}
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
09.02.2010, 18:31     Записать масив в файл #3
Цитата Сообщение от Genius Ignat Посмотреть сообщение
fprintf(f, "%d ", array[i]);
запишет в файл 1234567890, и как потом из этого 10 чисел получить? Не факт, что каждое число однозначным будет, да и вроде двухмерный массив просили...
shans
0 / 0 / 0
Регистрация: 09.02.2010
Сообщений: 43
09.02.2010, 18:56  [ТС]     Записать масив в файл #4
программа вылетает в конце и записывает в файл большие числа

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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
 
 
 
FILE *fp;
 
 
int pow1(int a,int c);
int minor (int [4][4],int);
 
int main(int argc, char *argv[])
{            
    int a[4][4];
    int i;
    int j;
    int c;
 
    printf("Enter The Matrix:\n");
 
    for(i=0;i<4;i++)
    {        
        for(j=0;j<4;j++)
        {
            scanf("%d",&a[i][j]);                             
        }        
    }
 
    printf("Matrix:\n");
    printf("%d %d %d %d\n%d %d %d %d\n%d %d %d %d\n%d %d %d %d\n",
        a[0][0],a[0][1],a[0][2],a[0][3],
        a[1][0],a[1][1],a[1][2],a[1][3],
        a[2][0],a[2][1],a[2][2],a[2][3],
        a[3][0],a[3][1],a[3][2],a[3][3]);
 
    int counter;
    int d=0;
 
    
    int s;
    int A;
    int h;
    for (counter=0;counter<4;counter++)
    {
        s =(pow1(-1,counter+2));
        A= (a[0][counter]);
        h=(minor(a,counter));
        d=s*A*h+d;                      
    }
 
    printf("\ndeterminant:%i",d);   
 
    
    FILE *f = fopen("file.txt", "w");
    
    for(i = 0; i < 4; i++){
    for(j = 0; j < 4; i++)
    {
    fprintf(f, "%d ", a[i][j]);
    }
    }
    fclose(f);
 
 
    system("PAUSE");   
    return 0;
    
    
    
    
}
 
int minor(int a[4][4],int r)
{        int m=0;
 
        switch(r) {
            case 0 :                
                m=(a[1][1]*a[2][2]*a[3][3]
                +a[1][2]*a[2][3]*a[3][1]
                +a[1][3]*a[2][1]*a[3][2]
                -a[1][1]*a[2][3]*a[3][2]
                -a[1][2]*a[2][1]*a[3][3]
                -a[1][3]*a[2][2]*a[3][1]);    
                printf("\n%i\n",m);
                break;
            case 1 :
 
                m=(a[1][0]*a[2][2]*a[3][3]
                +a[1][2]*a[2][3]*a[3][0]
                +a[1][3]*a[2][0]*a[3][2]
                -a[1][3]*a[2][2]*a[3][0]
                -a[1][0]*a[2][3]*a[3][2]
                -a[1][2]*a[2][0]*a[3][3]);
                printf("\n%i\n",m);
                break;
            case 2:
 
 
                m=(a[1][0]*a[2][1]*a[3][3]
                +a[1][1]*a[2][3]*a[3][0]
                +a[1][3]*a[2][0]*a[3][1]
                -a[1][1]*a[2][0]*a[3][3]
                - a[1][0]*a[2][3]*a[3][1]
                -a[1][3]*a[2][1]*a[3][0]);   
                printf("\n%i\n",m);
                break;
 
            case 3:           
                m=(a[1][1]*a[2][1]*a[3][2]
                +a[1][1]*a[2][2]*a[3][0]
                +a[1][2]*a[2][0]*a[3][1]                
                - a[1][2]*a[2][1]*a[3][0]
                -a[1][1]*a[2][0]*a[3][2]
                -a[1][0]*a[2][2]*a[3][1]); 
 
                printf("\n%i\n",m);
                break;
 
                   
        }
        return m;
}
int pow1(int a,int c){
 
    int p,counter;
    int d=1;
    for (counter=0;counter<c;counter++){
 
        d=a*d;}
 
    return  d;     
}
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
09.02.2010, 19:25     Записать масив в файл #5
shans, диржы!
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
typedef struct {
    size_t rows;
    size_t cols;
} Dim_t;
 
#define FILE_NAME "matrix.bin"
 
int main(void){
    Dim_t out_matrix_dim, in_matrix_dim; /* для чистоты эксперимента */
    int **out_matrix, **in_matrix, i, j;
    FILE *f;
    
    srand(time(NULL));
    
    /* исходная матрица */
    out_matrix_dim.rows = 5;
    out_matrix_dim.cols = 10;
    if ( ( out_matrix = (int**)calloc(out_matrix_dim.rows, sizeof(int*)) ) == NULL ){
        perror("Bad memory!\n");
        exit(1);
    }
    for ( i = 0; i < out_matrix_dim.rows; ++i ){
        if ( ( out_matrix[i] = (int*)calloc(out_matrix_dim.cols, sizeof(int)) ) == NULL ){
            perror("Bad memory!\n");
            exit(1);
        }
    }
    printf("\nOriginal:\n");
    for ( i = 0; i < out_matrix_dim.rows; ++i )
        for ( j = 0; j < out_matrix_dim.cols; ++j )
            printf( ( j < out_matrix_dim.cols - 1 ) ? "%d " : "%d\n", ( out_matrix[i][j] = rand() % 10 ) );
    
    if ( ( f = fopen(FILE_NAME, "wb") ) == NULL ){
        perror("Can't open output file!\n");
        exit(1);
    }
    
    if ( fwrite(&out_matrix_dim, sizeof(Dim_t), 1, f) != 1 ){
        perror("Can't write to file!\n");
        exit(1);
    }
    for ( i = 0; i < out_matrix_dim.rows; ++i ){
        if ( fwrite(out_matrix[i], sizeof(int), out_matrix_dim.cols, f) != out_matrix_dim.cols ){
            perror("Can't write to file!\n");
            exit(1);
        }
    }
    fclose(f);
    f = NULL;
    
    /* чтение записанного */
    if ( ( f = fopen(FILE_NAME, "rb") ) == NULL ){
        perror("Can't open input file!\n");
        exit(1);
    }
    if ( fread(&in_matrix_dim, sizeof(Dim_t), 1, f) != 1 ){
        perror("Can't read from file!\n");
        exit(1);
    }
    /* проверка размеров */
    if ( out_matrix_dim.rows != in_matrix_dim.rows || out_matrix_dim.cols != in_matrix_dim.cols ){
        perror("Shit happens!\n");
        exit(1);
    }
    if ( ( in_matrix = (int**)calloc(in_matrix_dim.rows, sizeof(int*)) ) == NULL ){
        perror("Bad memory or something!\n");
        exit(1);
    }
    for ( i = 0; i < in_matrix_dim.rows; ++i ){
        if ( ( in_matrix[i] = (int*)calloc(in_matrix_dim.cols, sizeof(int)) ) == NULL ){
            perror("Bad memory!\n");
            exit(1);
        }
        if ( fread(in_matrix[i], sizeof(int), in_matrix_dim.cols, f) != in_matrix_dim.cols ){
            perror("Can't read from file!\n");
            exit(1);
        }
    }
    /* вывод */
    printf("\nFrom file:\n");
    for ( i = 0; i < in_matrix_dim.rows; ++i )
        for ( j = 0; j < in_matrix_dim.cols; ++j )
            printf( ( j < in_matrix_dim.cols - 1 ) ? "%d " : "%d\n", in_matrix[i][j]);
    
    /* очистка памяти */
    for ( i = 0; i < in_matrix_dim.rows; ++i ){
        free(in_matrix[i]);
        free(out_matrix[i]);
    }
    free(in_matrix);
    free(out_matrix);
    
    exit(0);
}
shans
0 / 0 / 0
Регистрация: 09.02.2010
Сообщений: 43
09.02.2010, 19:38  [ТС]     Записать масив в файл #6
блин, я сколько не осилю, можно как нибудь проще отредактировать мою программу?
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
09.02.2010, 19:57     Записать масив в файл #7
Цитата Сообщение от shans Посмотреть сообщение
можно как нибудь проще отредактировать мою программу?
Можно, но хлопотно...

Цитата Сообщение от shans Посмотреть сообщение
C
1
printf("%d %d %d %d\n%d %d %d %d\n%d %d %d %d\n%d %d %d %d\n", a[0][0],a[0][1],a[0][2],a[0][3], a[1][0],a[1][1],a[1][2],a[1][3], a[2][0],a[2][1],a[2][2],a[2][3], a[3][0],a[3][1],a[3][2],a[3][3]);
это хорошо, когда массив 4х4, а не 100500х100500


Цитата Сообщение от shans Посмотреть сообщение
C
1
2
int minor(int a[4][4],int r) 
{ int m=0; switch(r) { case 0 : m=(a[1][1]*a[2][2]*a[3][3] +a[1][2]*a[2][3]*a[3][1] +a[1][3]*a[2][1]*a[3][2] -a[1][1]*a[2][3]*a[3][2] -a[1][2]*a[2][1]*a[3][3] -a[1][3]*a[2][2]*a[3][1]); printf("\n%i\n",m); break; case 1 : m=(a[1][0]*a[2][2]*a[3][3] +a[1][2]*a[2][3]*a[3][0] +a[1][3]*a[2][0]*a[3][2] -a[1][3]*a[2][2]*a[3][0] -a[1][0]*a[2][3]*a[3][2] -a[1][2]*a[2][0]*a[3][3]); printf("\n%i\n",m); break; case 2: m=(a[1][0]*a[2][1]*a[3][3] +a[1][1]*a[2][3]*a[3][0] +a[1][3]*a[2][0]*a[3][1] -a[1][1]*a[2][0]*a[3][3] - a[1][0]*a[2][3]*a[3][1] -a[1][3]*a[2][1]*a[3][0]); printf("\n%i\n",m); break; case 3: m=(a[1][1]*a[2][1]*a[3][2] +a[1][1]*a[2][2]*a[3][0] +a[1][2]*a[2][0]*a[3][1] - a[1][2]*a[2][1]*a[3][0] -a[1][1]*a[2][0]*a[3][2] -a[1][0]*a[2][2]*a[3][1]); printf("\n%i\n",m); break; } return m; }
а это вообще что?
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
09.02.2010, 20:01     Записать масив в файл #8
Цитата Сообщение от easybudda Посмотреть сообщение
а это вообще что?
По-моему, это минор, ужасно криво оформленный, "в лоб"
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
09.02.2010, 20:08     Записать масив в файл #9
Цитата Сообщение от Darky Посмотреть сообщение
По-моему, это минор...
Хм... Спасибо, конечно - погуглив узнал, что такое "минор матрицы"
shans, вроде надо было её (матрицу) в файл записать, к чему тут это странное заклинание?
shans
0 / 0 / 0
Регистрация: 09.02.2010
Сообщений: 43
09.02.2010, 20:15  [ТС]     Записать масив в файл #10
ну скажите как попроще записать матрицу, в файл.Мне просто после всех операций нужно записать матрицу и определитель в файл.
Knightt
5 / 5 / 2
Регистрация: 09.02.2010
Сообщений: 11
09.02.2010, 20:29     Записать масив в файл #11
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
int main(){
// матрица размером a*b
 
FILE *f = fopen("C:\\my_file.txt", "w");
for(int i = 0; i < a; i++)
{
 for (int j = 0;j < b; j++)
      fprintf(f, "%d ", array[i][j]);  // тут после d обязателен пробел
 fprintf(f, "\n");
}
fclose(f);
 
return 0;
}
должно сработать
shans
0 / 0 / 0
Регистрация: 09.02.2010
Сообщений: 43
09.02.2010, 21:56  [ТС]     Записать масив в файл #12
большое спасибо,всё работает, в чем была моя ошибка?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2010, 23:43     Записать масив в файл
Еще ссылки по теме:

Масив структур + бинарный файл C++
C++ Масив на 18 действ. Упорядочить по возростанию масив
Дан целочисленный файл А. Записать в файл В все кратные трём числа из А C++
Считать символ с файла и записать в масив C++

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

Или воспользуйтесь поиском по форуму:
Knightt
5 / 5 / 2
Регистрация: 09.02.2010
Сообщений: 11
09.02.2010, 23:43     Записать масив в файл #13
если честно, не в курсе где ошибка... вроде "пробел" стоял... единственное не было fprintf(f, "\n");
, чтоб новую строку матрицы с новой строки в файле печатать..
Yandex
Объявления
09.02.2010, 23:43     Записать масив в файл
Ответ Создать тему
Опции темы

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