Ik moet van een programmeerboek dat ik gebruik om C++ te leren(Deitel C++ how to program) een recursieve functie mazeTraverse schrijven om door een doolhof heen te werken. Dit doolhof staat in de vorm van een 12x12 char array.
De functie moet met een "*" aangeven waar het zich in het moment bevindt, alleen ik kom er niet uit hoe ik de functie slechts één karakter uit de array aan laat passen. Het is eigenlijk een tweedimensionale array, maar bijvoorbeeld
Weet iemand dus hoe je wel één element in zo'n array aan kunt passen? Hopelijk is de vraagstelling zo een beetje duidelijk.
Hieronder is mijn (nog niet complete) code, de relevante functie begint op regel 36.
De functie moet met een "*" aangeven waar het zich in het moment bevindt, alleen ik kom er niet uit hoe ik de functie slechts één karakter uit de array aan laat passen. Het is eigenlijk een tweedimensionale array, maar bijvoorbeeld
C++:
werkt niet omdat de tweede dimensie met een pointer gemaakt wordt(niet zeker hoe je dit noemt). Dit: 1
| maze[xpos][ypos] = "*"; |
C++:
werkt bijvoorbeeld wel, alleen wordt de dan de hele reeks overschreven en niet één van de karakters.1
| maze[ypos] = "*"; |
Weet iemand dus hoe je wel één element in zo'n array aan kunt passen? Hopelijk is de vraagstelling zo een beetje duidelijk.
Hieronder is mijn (nog niet complete) code, de relevante functie begint op regel 36.
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
| #include "stdafx.h" #include <iostream> #include <stdio.h> #include <math.h> #include <Windows.h> using namespace std; void mazeTraverse(char* maze[12], int mazeSize, int start, int xpos, int ypos); int _tmain(int argc, _TCHAR* argv[]) { const int mazeSize = 12; char * maze[mazeSize] = { "############", "#...#......#", "..#.#.####.#", "###.#....#.#", "#....###.#..", "####.#.#.#.#", "#..#.#.#.#.#", "##.#.#.#.#.#", "#........#.#", "######.###.#", "#......#...#", "############" }; mazeTraverse(maze,mazeSize,0,0,3); return 0; } void mazeTraverse(char* maze[12], int mazeSize, int start,int xpos, int ypos) { maze[ypos] = "*"; //Dit overschrijft dus de hele x-as van de char array :( for(int i = 0; i < mazeSize; i++) cout << maze[i] << endl; Sleep(2000); } |