Ilias95 έγραψε:
Δηλαδή για 7 cases θα επαναληφθεί 7 φορές η παραπάνω γραμμή.
Ναι, δεν υπάρχει κάτι το επιλήψιμο σε αυτή την πρακτική
Συντονιστής: konnn
Ilias95 έγραψε:
Δηλαδή για 7 cases θα επαναληφθεί 7 φορές η παραπάνω γραμμή.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM_CHARS (int) sizeof(alphabeta) / sizeof(alphabeta[0])
#define NUM_ROWS 10
#define NUM_COLUMNS 10
int main(void)
{
int move, row = 0, col = 0;
const char alphabeta[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
char table[NUM_ROWS][NUM_COLUMNS] = {{alphabeta[0]}};
srand((unsigned) time(NULL));
for (int i = 1; i < NUM_CHARS; i++) {
if (table[row+1][col] && table[row-1][col] && table[row][col+1] && table[row][col-1])
break;
while (1) {
move = rand() % 4;
if (move == 0) {
if ((! table[row-1][col]) && row - 1 >= 0) {
row--;
break;
}
}
else if (move == 1) {
if ((! table[row][col+1]) && col + 1 < NUM_COLUMNS) {
col++;
break;
}
}
else if (move == 2) {
if ((! table[row+1][col]) && row + 1 < NUM_ROWS) {
row++;
break;
}
}
else if (move == 3) {
if ((! table[row][col-1]) && col - 1 >= 0) {
col--;
break;
}
}
}
table[row][col] = alphabeta[i];
}
for (row = 0 ; row < NUM_ROWS; row++) {
for (col = 0; col < NUM_COLUMNS; col++)
table[row][col] ? printf("%c ", table[row][col]) : printf(". ");
printf("\n");
}
return 0;
}


#define NUM_CHARS (int) sizeof(alphabeta) / sizeof(alphabeta[0])
#define ARR_NELEMS(arr) ( sizeof( (arr) ) / sizeof( (arr)[0] ) )

migf1 έγραψε:Όταν υλοποιείς macros με ορίσματα, τα ορίσματα πρέπει να τα περικλείνεις σε παρένθεση και στο κυρίως σώμα του macro.
#define NUM_CHARS ((int) (sizeof(alpha_beta) / sizeof(alpha_beta[0])))


migf1 έγραψε:@Ilias: Το NUM_CHARS δεν έχει ορίσματα


migf1 έγραψε:
@Starlight: Κανονικά ναι, είναι διαφορετικά... η αρχιχοποίηση γίνεται μονάχα κατά τον ορισμό των μεταβλητών. Αλλά μπορεί να το συναντήσεις σαν ορολογία και για την πρώτη-πρώτη φορά που κάνεις assign μια τιμή στην μεταβλητή.
