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

Запись двумерного массива в файл - C++

Восстановить пароль Регистрация
 
kol
20 / 6 / 1
Регистрация: 30.01.2015
Сообщений: 135
11.07.2015, 19:26     Запись двумерного массива в файл #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
//magicQuad.h
#ifndef MAGICQUAD_H
#define MAGICQUAD_H
#include <iostream>
using std::cout;
using std::endl;
class magicQuad
{
private:
    // n = 4
    static const int SUM = 34; // sum = n(n^2+1)/2
    int a,b,c; // sum = 4a+6(b+c)
    int ** result;
 
    /*  result matrix
     *  a ------------- a + 3b + c ---- a + 3c ------- a + 3b + 2c
     *  a + b + 3c ---- a + 2b + 2c --- a + b -------- a + 2b +c
     *  a + 3b -------- a + c --------- a + 3b + 3c -- a + 2c
     *  a + 2b + 3c --- a + b + 2c ---- a + 2b ------- a + b + c
     */
public:
    magicQuad();
    void resultMatrix();
    void findQuad();
    ~magicQuad();
protected:
    void printQuad();
};
 
#endif // MAGICQUAD_H
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
//magicUqad.cpp
#include "magicquad.h"
 
magicQuad::magicQuad()
{
    a = 0;
    b = 0;
    c = 0;
 
    result = new int * [4];
    for(int i=0;i< 4;i++) result[i] = new int[4];
    resultMatrix();
}
 
void magicQuad::resultMatrix()
{
    result[0][0] = a;
    result[0][1] = a + 3*b + c;
    result[0][2] = a + 3*c;
    result[0][3] = a + 3*b + 2*c;
 
    result[1][0] = a + b + 3*c;
    result[1][1] = a + 2*b + 2*c;
    result[1][2] = a + b;
    result[1][3] = a + 2*b + c;
 
    result[2][0] = a + 3*b;
    result[2][1] = a + c;
    result[2][2] = a + 3*b + 3*c;
    result[2][3] = a + 2*c;
 
    result[3][0] = a + 2*b + 3*c;
    result[3][1] = a + b + 2*c;
    result[3][2] = a + 2*b;
    result[3][3] = a + b + c;
}
 
void magicQuad::findQuad()
{
    while(a != 16) // n = 4; n^2 = 16
    {
        a++;
        if((SUM - 4*a)%6 == 0) // SUM - 4*a = 6(b+c)
        {
            int temp = (SUM-4*a)/6;
            while(b<temp)
            {
                b++;
                c = temp - b;
                resultMatrix();
                printQuad();
                cout << endl;
            }
            b = 0;
            c = 0;
        }
    }
}
 
void magicQuad::printQuad()
{
    for(int i=0;i<4;i++)
    {
        for(int j =0;j<4;j++) cout << result[i][j] << "\t";
        cout << endl;
    }
}
 
magicQuad::~magicQuad()
{
    for(int i =0;i<4;i++) delete [] result[i];
    delete [] result;
}
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
//main.cpp
#include "magicquad.h"
#include <fstream>
 
 
int main()
{
    magicQuad any;
    any.findQuad();
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2015, 19:26     Запись двумерного массива в файл
Посмотрите здесь:

C++ Запись массива в файл
Сортировка двумерного массива и заголовочный файл C++
Вывод двумерного массива в бинарный файл C++
Запись массива в файл C++
C++ Запись двумерного массива в файл
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
daert
1 / 1 / 2
Регистрация: 09.05.2014
Сообщений: 41
11.07.2015, 20:00     Запись двумерного массива в файл #2
А где сам вывод в файл то? Функция printQuad() выводит на экран данные

вывести в файл можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <fstream>
...
ofstream out("output.txt");
void magicQuad::printQuad()
{
    for(int i=0;i<4;i++)
    {
        for(int j =0;j<4;j++) out << result[i][j] << "\t";
        out << endl;
    }
out.close();
}
kol
20 / 6 / 1
Регистрация: 30.01.2015
Сообщений: 135
11.07.2015, 20:14  [ТС]     Запись двумерного массива в файл #3
daert, В том то и проблема что я не знаю где его вставить. Так как ты написал не работает. Программа вычисляет все варианты массива, для получения магического квадрата и печатает их пока не переберет все abc.
Не совсем понял где мне разместить ofstream out("output.txt"). Если размещаю в h фаиле выдает ошибку.
daert
1 / 1 / 2
Регистрация: 09.05.2014
Сообщений: 41
12.07.2015, 11:23     Запись двумерного массива в файл #4
Какую ошибку выдаёт? а вы пробовали этот код в cpp добавить? ведь туда он и должен идти, т.к. функция printQuad() там описана
Yandex
Объявления
12.07.2015, 11:23     Запись двумерного массива в файл
Ответ Создать тему
Опции темы

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