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

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

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

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

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

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

записать масив структур в файл - C++
Люди помогите написать код, записи структуры в файл!!!!!!! FILE* file = fopen("Myt!!.txt", "w"); for (i=0;i<n;i++) { ...

Динамический масив: записать в масив все делители числа n - C++
Нужно записать в масив все делители числа n програма запускается но видает ошибку доступа к памяти... помогите разобраться #include...

Считать символ с файла и записать в масив - C++
Где ошибка? Почему когда запускаю виндовс прерывает выполнение программы? #include <stdio.h> int main() { FILE...

Считать количество строк в файле и записать в масив - C++
есть класс Book #ifndef BOOK_H_ #define BOOK_H_ #include<iostream> #include<string> using namespace std; class Book { ...

Масив структур + бинарный файл - C++
Помогите написать программу. Нужно создать массив структур. Каждая структура состоит из следующих элементов: производитель, товар,...

создать файл 1.part и записать в него первые x элементов массива. После чего, создать второй файл 2.part, куда записать оставшиеся в массиве элементы. - C++
Не могу понять почему не работает вот этот кусок текста. ofstream q ("1.part"); for (int i=0; i<10; ++i) { q << mas ; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Genius Ignat
1236 / 774 / 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;
}
0
easybudda
Модератор
Эксперт CЭксперт С++
9625 / 5573 / 947
Регистрация: 25.07.2009
Сообщений: 10,708
09.02.2010, 18:31 #3
Цитата Сообщение от Genius Ignat Посмотреть сообщение
fprintf(f, "%d ", array[i]);
запишет в файл 1234567890, и как потом из этого 10 чисел получить? Не факт, что каждое число однозначным будет, да и вроде двухмерный массив просили...
0
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;     
}
0
easybudda
Модератор
Эксперт CЭксперт С++
9625 / 5573 / 947
Регистрация: 25.07.2009
Сообщений: 10,708
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);
}
0
shans
0 / 0 / 0
Регистрация: 09.02.2010
Сообщений: 43
09.02.2010, 19:38  [ТС] #6
блин, я сколько не осилю, можно как нибудь проще отредактировать мою программу?
0
easybudda
Модератор
Эксперт CЭксперт С++
9625 / 5573 / 947
Регистрация: 25.07.2009
Сообщений: 10,708
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; }
а это вообще что?
0
Darky
Быдлокодер
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
09.02.2010, 20:01 #8
Цитата Сообщение от easybudda Посмотреть сообщение
а это вообще что?
По-моему, это минор, ужасно криво оформленный, "в лоб"
0
easybudda
Модератор
Эксперт CЭксперт С++
9625 / 5573 / 947
Регистрация: 25.07.2009
Сообщений: 10,708
09.02.2010, 20:08 #9
Цитата Сообщение от Darky Посмотреть сообщение
По-моему, это минор...
Хм... Спасибо, конечно - погуглив узнал, что такое "минор матрицы"
shans, вроде надо было её (матрицу) в файл записать, к чему тут это странное заклинание?
0
shans
0 / 0 / 0
Регистрация: 09.02.2010
Сообщений: 43
09.02.2010, 20:15  [ТС] #10
ну скажите как попроще записать матрицу, в файл.Мне просто после всех операций нужно записать матрицу и определитель в файл.
0
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;
}
должно сработать
0
shans
0 / 0 / 0
Регистрация: 09.02.2010
Сообщений: 43
09.02.2010, 21:56  [ТС] #12
большое спасибо,всё работает, в чем была моя ошибка?
0
Knightt
5 / 5 / 2
Регистрация: 09.02.2010
Сообщений: 11
09.02.2010, 23:43 #13
если честно, не в курсе где ошибка... вроде "пробел" стоял... единственное не было fprintf(f, "\n");
, чтоб новую строку матрицы с новой строки в файле печатать..
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2010, 23:43
Привет! Вот еще темы с ответами:

Масив на 18 действ. Упорядочить по возростанию масив - C++
Ребята помогите пожалуйста с С++ Builder 1.Масив на 18 действ. Упорядочить по возростанию масив 2.Масив на 18 действ. Вычислить...

Как из масива "а" записать данные в масив "б" но в обратном порядке - C++
#include &lt;vector&gt; #include &lt;iostream&gt; #include &lt;numeric&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; int...

Дан символьный файл f. Записать в файл g элементы файла f в обратном порядке - C++
Помогите написать программу

Дан символьный файл f. Записать в файл g компоненты файла f в обратном порядке - C++
Собственно само задание. 4). Дан символьный файл f. Записать в файл g компоненты файла f в обратном порядке


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

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

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