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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 42, средняя оценка - 4.69
Lil Crazy
5 / 5 / 1
Регистрация: 23.03.2009
Сообщений: 198
#1

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

12.04.2009, 11:44. Просмотров 5661. Ответов 6
Метки нет (Все метки)

Не могу записать введёную матрицу в файл:
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
#include <conio.h>
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
 
void main()
{
    //int mas[20][20];
    int i,j,n;
    int Etalon,sum;
    int Flag;
    FILE *OutputFile;
    char path_out[25];
 
    printf("Enter dimension of a square matrix: "); //ввод размерности
    scanf("%i",&n);
 
    //**mas=(int**)malloc(n*sizeof(int*));
 
    //динамически создаем двумерный массив
    int **mas=new int*[n];
 
    for (i=0;i<n;i++)  
        mas[i]=new int[n];
 
    for (i=0;i<n;i++) //вводим его
        for (j=0;j<n;j++)
        {
            printf("mas[%i][%i]=",i+1,j+1);
            scanf("%i",&mas[i][j]);
        }
 
    printf("Enter output file for result: "); //запрос имени выходного файла
    scanf("%s",path_out);  
 
    if ((OutputFile=fopen(path_out,"w+")) == NULL ) //если не удалось открыть файл, то
    {
        perror(path_out); //выводим об этом сообщение 
        getch();
    }
 
    printf("Initial matrix: \n"); //вывод исходной матрицы на экран и в файл
    for (i=0;i<n;i++)
    {
        for (j=0;j<n;j++)
        {
            printf("%5i",mas[i][j]);
            fprintf(OutputFile,mas[i][j]); // как записать введёную матрицу в текстовый файл???
            printf("\n");
        }
        
    }
 
    //нахождение эталонной суммы и сравнение с ней 
    Etalon=0; 
 
    for (i=0;i<n;i++)
        Etalon+=mas[i][i];
    Flag=1;
 
    i = 0;
    while ((i<n)&&Flag)
    {
        sum=0;
        for (j=0;j<n;j++)
           sum+=mas[i][j];
        if (sum!=Etalon)
           Flag=0;
        else
           i++;
    }
 
    j = 0;
    while ((j<n)&&Flag)
    {
        sum=0;
        for (i=0; i<n; i++)
            sum += mas[i][j];
        if (sum!=Etalon)
            Flag = 0;
        else
            j++;
    }
 
    if (Flag)
    {
        sum=0;
        for (i=0; i<n; i++)
           sum+=mas[i][n-i-1];
        if (sum!=Etalon)
           Flag=0;
    }
 
    if (Flag) //если да
    {
        printf("This matrix is a magic square\n");
        fprintf(OutputFile,"This matrix is a magic square");
    }
    else //если нет
    {
        printf("This matrix is not a magic square\n");
        fprintf(OutputFile,"This matrix is not a magic square");
    }
 
    fclose(OutputFile);
 
    free(mas);
 
    getch();
 
}
Программа спотыкается на этом месте:
C++
1
fprintf(OutputFile,mas[i][j]);
И компилятор пишет следующее:
HTML5
1
2
3
4
5
6
7
8
-------------------Configuration: Lab6 - Win32 Debug--------------------
Compiling...
Lab6.cpp
F:\Документы\Политех\Программирование\Лабы\№6\Lab6.cpp(48) : error C2664: 'fprintf' : cannot convert parameter 2 from 'int' to 'const char *'
        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.
 
Lab6.obj - 1 error(s), 0 warning(s)
Не понимаю как сделать
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gravity
557 / 551 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
12.04.2009, 11:57     Запись матрицы в файл #2
Код
fprintf(OutputFile,mas[i][j]); // как записать введёную матрицу в текстовый файл???
===>
Код
fprintf(OutputFile, "%4d", mas[i][j]);
Lil Crazy
5 / 5 / 1
Регистрация: 23.03.2009
Сообщений: 198
12.04.2009, 14:30  [ТС]     Запись матрицы в файл #3
Спасибо А как вывести матрицу в виде матрицы, то есть:
1 2 3
4 2 0
1 2 3
а то получается вывод или только в строчку или только в столбец
Gravity
557 / 551 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
12.04.2009, 14:42     Запись матрицы в файл #4
После вывода каждой строки матрицы делай переход на новую строку в файле, fprintf(OutputFile, "\n");
Lil Crazy
5 / 5 / 1
Регистрация: 23.03.2009
Сообщений: 198
12.04.2009, 15:01  [ТС]     Запись матрицы в файл #5
Не совсем понял. Вот код, что там надо поправить?
C++
1
2
3
4
5
6
7
8
9
10
11
printf("Initial matrix: \n"); //вывод исходной матрицы на экран и в файл
    for (i=0;i<n;i++)
    {
        for (j=0;j<n;j++)
        {
            printf("%5i",mas[i][j]);
            fprintf(OutputFile,"%4d",mas[i][j]);
            fprintf(OutputFile,"\n");
        }
        printf("\n");
    }
Gravity
557 / 551 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
12.04.2009, 15:07     Запись матрицы в файл #6
Код
for(i=0;i<n;i++) {
   for(j=0;j<n;j++) {
      printf("%5i",mas[i][j]);
      fprintf(OutputFile,"%4d",mas[i][j]);                     
   }
   printf("\n");
   fprintf(OutputFile,"\n");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2009, 15:23     Запись матрицы в файл
Еще ссылки по теме:

Матрицы, перегрузка, запись в файл C++
C++ Запись в файл
Запись матрицы в бинарный файл по строкам C++
Запись в файл C++
Считывание элементов матрицы из файла и запись ответов в другой текстовый файл C++

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

Или воспользуйтесь поиском по форуму:
Lil Crazy
5 / 5 / 1
Регистрация: 23.03.2009
Сообщений: 198
12.04.2009, 15:23  [ТС]     Запись матрицы в файл #7
Спасибо
Yandex
Объявления
12.04.2009, 15:23     Запись матрицы в файл
Ответ Создать тему
Опции темы

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