Δημοσιεύτηκε: 04 Μαρ 2012, 21:50
από Ilias95
Να λοιπόν η άσκηση με two dimensional array:

Μορφοποιημένος Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <string.h> // memset()
#include <stdlib.h> // srand(), rand()
#include <time.h> // time()

#define ALPHABETA "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
#define NUM_ALPHABETA sizeof(ALPHABETA) / sizeof(ALPHABETA[0])

#define NUM_ROWS 10
#define NUM_COLUMNS 10

int main(void)
{
int row = 0, col = 0;
char table[NUM_ROWS][NUM_COLUMNS];

memset(table, '.', sizeof(table)); // init table with dots
table[0][0] = ALPHABETA[0];

srand((unsigned) time(NULL));

for (int i = 1; i < NUM_ALPHABETA - 1; i++) {
if ((table[row+1][col] != '.' || row == NUM_ROWS-1) && (table[row-1][col] != '.' || row == 0) && \
(table[row][col+1] != '.' || col == NUM_COLUMNS-1) && (table[row][col-1] != '.' || col == 0)) {
break; // terminate if there is no available position
}

while (1) {
int move = rand() % 4;

if (move == 0 && row > 0 && table[row-1][col] == '.') {
row--; // UP
break;
}
else if (move == 1 && col < NUM_COLUMNS-1 && table[row][col+1] == '.') {
col++; // RIGHT
break;
}
else if (move == 2 && row < NUM_ROWS-1 && table[row+1][col] == '.') {
row++; // DOWN
break;
}
else if (move == 3 && col > 0 && table[row][col-1] == '.') {
col--; // LEFT
break;
}
}
table[row][col] = ALPHABETA[i];
}

for (row = 0 ; row < NUM_ROWS; row++) {
for (col = 0; col < NUM_COLUMNS; col++)
printf("%c ", table[row][col]);
putchar('\n');
}

return 0;
}


ΥΓ. Με έσκασε μέχρι να το κάνω να δουλέψει. Δύο ώρες μου πήρε για να καταλάβω στο τέλος ότι είχα συντακτικό λάθος! :wtf: