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

Запись файла в массив и чтение из него - C++

Восстановить пароль Регистрация
 
Chiakiii
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 38
06.12.2011, 23:51     Запись файла в массив и чтение из него #1
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
#include <conio.h>
#include <stdio.h>
 
 
 
void vvodznach ( int n, int m, double A[15][15] )
{
    int i, j;
        for ( i = 0; i < n; i++ )
                for ( j = 0; j < m; j++ )
                {
                        printf( "A[%d][%d]=", i, j );
                        scanf( "%lf", &A[i][j] );
                }
 
}
double zapolnenie ( int n, int m, double A[15][15])
 {
        int i;
        int j;
        printf( "\nIZMENENNIY MASSIV\n" );
        for ( i = 0; i < n; i++ )
                for ( j = 0; j < m; j++ )
                {
 
                        if ( i <= j ) {
                                A[i][j] = ( 1.0 / ( ( i * i ) + 2.0 ) );
                        }
                        else {
                                A[i][j] = ( 1.0 / ( i + j ) );
                        }
                       
                }
                printf( "A[%d][%d] = \n",i,j );
        for (i=0; i<n; i++)
            {  for (j=0; j<m; j++)
                       { printf( "%7.2f  ", A[i][j] );
                     
        }
        printf("\n");
    }
} 
double sum (int n, int m, double A[15][15])
{
        int i;
        int j;
        double s;
    
       
        s = 0;
 
        for ( i = 0; i < n; i++ )
        {
                s += A[i][j];
        }
        return s;
}
 
int SaveArray(double A[], int n, char const *frame)
{
    FILE *F = fopen(frame, "wt");
    if(F==NULL) 
    {
        return 0;
    }
    fprintf(F,"%d \n",n);
    for(int i=0; i<n; i++)
    {
        fprintf(F,"%lf\t  ",A[i], sizeof ( double ) *n*n);
    }
    fclose(F);
    
    return 1;
}
 
int main ()
{
        int m, n, i, j;
        double A[15][15];
        double s;
        
        printf("Vvedite razmer massiva...\n");
        printf("\n");
        printf("N=", n);
        scanf("%d", &n);
        printf("M=", m);
        scanf("%d",&m);
        printf("\n");
        if ((n<4)|(n>15)|(m<4)|(m>15))
        printf ("Neverniy razmer massiva\n");
        else
        {
            //vvodznach ( n, m, A);
            zapolnenie (n, m, A);
            printf( "\nVVEDITE NOMER STOLBCA [0..M] = " );
            scanf( "%d", &j );
            s=sum (n, m, A);
            printf( "SUMMA[%d] = %7.2f", j, s);
            SaveArray ( A[n], n, "qq1.txt" );
        }
        getch ();
}

В файл записывает, но там какой-то мусор. Подскажите, где ошибка?

Добавлено через 4 часа 19 минут
Нету идей?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2011, 23:51     Запись файла в массив и чтение из него
Посмотрите здесь:

Си, Запись и Чтение из файла. C++
Запись и чтение с файла C++
Запись структурного массива в файл и чтение из него C++
Чтение из файла и запись в массив на с++ C++
C++ Чтение чисел из файла и запись в массив
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
07.12.2011, 08:17     Запись файла в массив и чтение из него #2
C++
1
        fprintf(F, "%f\t  ", A[i]);
сохраняешь то ты его всё равно неправильно
потому что неправильно передаёшь в функцию
Chiakiii
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 38
14.12.2011, 11:00  [ТС]     Запись файла в массив и чтение из него #3
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
#include <conio.h>
#include <stdio.h>
#define N 10
 
 
 
void vvodznach ( int n, int m, double A[15][15] )
{
    int i, j;
        for ( i = 0; i < n; i++ )
                for ( j = 0; j < m; j++ )
                {
                        printf( "A[%d][%d]=", i, j );
                        scanf( "%lf", &A[i][j] );
                }
 
}
double zapolnenie ( int n, int m, double A[0][0])
{
    printf( "\nIZMENENNIY MASSIV\n" );
    
    for (int i = 0; i < n; i++ )
    {
        for (int j = 0; j < m; j++ )
        {
            if ( i <= j ) 
            {
                A[i][j] = ( 1.0 / ( ( i * i ) + 2.0 ) );
                printf("%lf ",A[i][j]);
            }
            else 
            {
                A[i][j] = ( 1.0 / ( i + j ) );
                printf("%lf ",A[i][j]);
            }
                       
        }
        printf("\n");
    }
    printf("----------------------------------\n");
} 
double sum (int n, int m, double A[0][0])
{
        int i;
        int j;
        double s;
    
       
        s = 0;
 
        for ( i = 0; i < n; i++ )
        {
            s += A[i][j];
        }
       return s;        
}
 
int SaveArray(double A[0][0],int n,int m,char const *fname)
{
 FILE*f= fopen(fname,"wt");
 if(f==NULL) 
    {
        return 0;
    }
 for(int i=0; i<n; i++)
    { 
        for(int j=0; j<m; j++)
        {
            printf("A[%d][%d] = %lf ",i,j,A[i][j]);
            fprintf(f, "%lf", A[i][j]);
        }
        fprintf(f,"\n");
        printf("\n");
    }
 fclose(f);
 return 1;
}
 
int main ()
{
    int m, n, i, j;
        
    double s;
        
    printf("Vvedite razmer massiva...\n\nN = "); scanf("%d", &n);
    printf("M = "); scanf("%d",&m); 
    printf("\n");
    
        double A[0][0];
        if ((n<4)|(n>15)|(m<4)|(m>15))
        printf ("Neverniy razmer massiva\n");
        else
        {
            zapolnenie (n, m, A);
            SaveArray(A, n, m, "qq2.txt");
            printf( "\nVVEDITE NOMER STOLBCA [0..M] = " );
            scanf( "%d", &j );
            
            s=sum (n, m, A);
            printf( "SUMMA[%d] = %7.2f", j, s);
            
            
            
        }
        getch ();
}
Сохраняет в файл только элементы последней строки. Помогите кто-нибудь, не пойму никак.
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
14.12.2011, 11:27     Запись файла в массив и чтение из него #4
неправильно создаёшь массив в main()
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
14.12.2011, 12:13     Запись файла в массив и чтение из него #5
Chiakiii, попробуй
C++
1
double arr[15][15];
Yandex
Объявления
14.12.2011, 12:13     Запись файла в массив и чтение из него
Ответ Создать тему
Опции темы

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