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

Разделение программы на несколько файлов - C++

Восстановить пароль Регистрация
 
CMTV
0 / 0 / 0
Регистрация: 04.07.2013
Сообщений: 36
04.07.2013, 06:11     Разделение программы на несколько файлов #1
Всем доброго времени суток!

Возникла проблема - я написал небольшую програмку в main.

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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
int main ()
{
    system("color A");
    int x=0;
    int y=0;
    char act;
    int ch;
    int score=0;
    char map[10][10];
    for(int i=0;i<10;i++)
    {
        for(int j=0;j<10;j++)
        {
            map[i][j]=0;
        }
    }
    map[0][0]=1;
    while (1)
    {
        system("cls");
        for(int i=0;i<10;i++)
        {
            for(int j=0;j<10;j++)
            {
                printf("%d",map[i][j]);
            }
            printf("\n");
        }
        printf("Exit: 0\n");
        printf("Control: Up, Down, Left, Right\n");
        printf("Score: %d\n",score);
        act = _getch();
        ch = static_cast<int>(act);
        switch(static_cast<int>(act))
        {
            case '0':
                return 0;
                break;
            case 75:
                map[x][y]=0;
                y--;
                map[x][y]=1;
                break;
            case 77:
                map[x][y]=0;
                y++;
                map[x][y]=1;
                break;
            case 80:
                map[x][y]=0;
                x++;
                map[x][y]=1;
                break;
            case 72:
                map[x][y]=0;
                x--;
                map[x][y]=1;
                break;
        }
        if(map[4][4])
        {
            score++;
        }
    }
    system("PAUSE");
    return 0;
}
Но я хотел бы создать файл MapGen.cpp к примеру и запихнуть в него это действие:
C
1
2
3
4
5
6
7
8
9
int map[10][10];
    for(int i=0;i<10;i++)
    {
        for(int j=0;j<10;j++)
        {
            map[i][j]=0;
        }
    }
    map[0][0]=1;
Но никак не пойму, как это сделать. Вроде бы надо в MapGen.cpp прописать функцию но как и какую?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2013, 06:11     Разделение программы на несколько файлов
Посмотрите здесь:

Разделение программы C++
C++ Разделение кода на несколько файлов
C++ Разделение программы на интерфейс и реализацию
как связать несколько файлов одной программы C++
Разделение программы на файлы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
l_lenskaya
 Аватар для l_lenskaya
10 / 10 / 2
Регистрация: 02.07.2013
Сообщений: 52
04.07.2013, 06:46     Разделение программы на несколько файлов #2
в MapGen.cpp пишешь функцию, в которой выплняется твой код, в основной программе в начале файла подключаешь MapGen.cpp:
Кликните здесь для просмотра всего текста
C++
1
#include "MapGen.cpp"

файл MapGen.cpp будет выглядеть примерно так:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
void function(int * map)
{
int map[10][10];
    for(int i=0;i<10;i++)
    {
        for(int j=0;j<10;j++)
        {
            map[i][j]=0;
        }
    }
    map[0][0]=1;
}

В основном файле там где нужно вызываешь функцию function() со ссылкой на свой массив.

О способах передачи в функцию массива можно почитать тут.
CMTV
0 / 0 / 0
Регистрация: 04.07.2013
Сообщений: 36
04.07.2013, 07:58  [ТС]     Разделение программы на несколько файлов #3
Все получилось, кроме вызова функции в main. В теме по ссылке не совсем разобрался.

Добавлено через 48 минут
Также, в MapGen.cpp

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <stdlib.h>
 
void MapGen(int * map)
{
int map[10][10];
    for(int i=0;i<10;i++)
    {
        for(int j=0;j<10;j++)
        {
            map[i][j]=0;
        }
    }
    map[0][0]=1;
}
Ругается на [j] и на [0]=1 - выражение должно иметь тип указателя на объект
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
04.07.2013, 08:37     Разделение программы на несколько файлов #4
Цитата Сообщение от l_lenskaya Посмотреть сообщение
в MapGen.cpp пишешь функцию, в которой выплняется твой код, в основной программе в начале файла подключаешь MapGen.cpp:
щас научишь
нельзя подключать cpp файлы, если конечно не хочешь потом получить кучу проблем
файл делится на заголовочный (*.h) в котором описываются функции
и реализации (*.cpp) в котором определяются функции
вот так это примерно может выглядеть

C++
1
2
//ClearMap.h
void MyClearMap(int sizeI,int sizeJ,int map[][10])
передать функции статический двумерный массив нетривиальная задача
здесь указан один из способов, указать явно размер
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//ClearMap.c
#include "ClearMap.h"
void MyClearMap(int sizeI,int sizeJ,int map[][10])
{
 for(int i=0;i<sizeI;i++)
    {
        for(int j=0;j<sizeJ;j++)
        {
            map[i][j]=0;
        }
 
   }
map[0][0]=1;
};
разумеется файл ClearMap.c должен быть создан и подключен к проекту, в каждом компиляторе это делается по своему

C++
1
2
3
4
5
// main.c
#include "ClearMap.h"
............
int mp[10][10];
MyClearMap(10,10,mp);
CMTV
0 / 0 / 0
Регистрация: 04.07.2013
Сообщений: 36
04.07.2013, 08:48  [ТС]     Разделение программы на несколько файлов #5
Теперь вроде все хорошо, но при попытке запустить пишет, что произошли ошибки:

1>------ Построение начато: проект: Game, Конфигурация: Release Win32 ------
1> Game.cpp
1>Game.cpp(6): error C2144: синтаксическая ошибка: перед "int" требуется ";"
1> MapGen.cpp
1>MapGen.cpp(5): error C2144: синтаксическая ошибка: перед "void" требуется ";"
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

MapGen.cpp
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "GameLib.h"
 
void MapGen(int sizeI,int sizeJ,int map[10][10])
{
    sizeJ=10;
    for(int i=0;i<sizeI;i++)
    {
        for(int j=0;j<sizeJ;j++)
        {
            map[i][j]=0;
        }
 
    }
    map[0][0]=1;
}
Game.cpp
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include "GameLib.h"
 
int main()
{
    system("color A");
    int x=0;
    int y=0;
    char act;
    int ch;
    int score=0;
    int map[10][10];
    MapGen(10,10,map);
    while (1)
    {
        system("cls");
        for(int i=0;i<10;i++)
        {
            for(int j=0;j<10;j++)
            {
                printf("%d",map[i][j]);
            }
            printf("\n");
        }
        printf("Exit: 0\n");
        printf("Control: Up, Down, Left, Right\n");
        printf("Score: %d\n",score);
        act = _getch();
        ch = static_cast<int>(act);
        switch(static_cast<int>(act))
        {
            case '0':
                return EXIT_SUCCESS;
                break;
            case 75:
                map[x][y]=0;
                y--;
                map[x][y]=1;
                break;
            case 77:
                map[x][y]=0;
                y++;
                map[x][y]=1;
                break;
            case 80:
                map[x][y]=0;
                x++;
                map[x][y]=1;
                break;
            case 72:
                map[x][y]=0;
                x--;
                map[x][y]=1;
                break;
        }
        if(map[4][4])
        {
            score++;
        }
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
GameLib.h
C
1
2
3
4
5
6
7
8
9
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
// Выход из программы
#define EXIT_SUCCESS 0
 
// MapGen
void MapGen(int sizeI,int sizeJ,int map[10][10])
lowercase
 Аватар для lowercase
211 / 200 / 34
Регистрация: 09.05.2012
Сообщений: 494
04.07.2013, 08:51     Разделение программы на несколько файлов #6
в gamelib.h надо поставить точку с запятой после прототипа функции.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2013, 08:54     Разделение программы на несколько файлов
Еще ссылки по теме:

C++ Разделение кода на несколько файлов
"Разделение" процессов при работе программы C++
C++ Разделение программы на два файла

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

Или воспользуйтесь поиском по форуму:
CMTV
0 / 0 / 0
Регистрация: 04.07.2013
Сообщений: 36
04.07.2013, 08:54  [ТС]     Разделение программы на несколько файлов #7
Спасибо большое всем, кто отписался в теме. Помогло!
Yandex
Объявления
04.07.2013, 08:54     Разделение программы на несколько файлов
Ответ Создать тему
Опции темы

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