Δημοσιεύτηκε: 06 Μαρ 2012, 17:40
Ορίστε και η άσκηση με τα μαγικά τετράγωνα σε δισδιάστατο πίνακα:
Δεν χρησιμοποίησα καθόλου macros και νομίζω ο κώδικας έγινε πιο ευανάγνωστος.
- Μορφοποιημένος Κώδικας: Επιλογή όλων
-
#include <stdio.h>
#include <string.h> // memset()
int main(void)
{
int size;
printf("Enter size of magic square (odd 1-99): ");
scanf("%d", &size);
if (size < 1 || size % 2 == 0) {
printf("Size must be an odd integer between 1 and 99.");
return 0;
}
int row = 0, col = size/2, sizesize = size*size, square[size][size];
memset(square, 0, sizeof(square)); // init table to 0
square[row][col] = 1;
for (int i = 2; i < sizesize + 1; i++) {
int uprow = row == 0 ? size - 1 : row - 1;
int rtcol = col == size - 1 ? 0 : col + 1;
if (square[uprow][rtcol])
row = row == size - 1 ? 0 : row + 1;
else {
row = uprow;
col = rtcol;
}
square[row][col] = i;
}
putchar('\n'); // print table
for (row = 0; row < size; row++) {
for (col = 0; col < size; col++)
printf("%5d", square[row][col]);
putchar('\n');
}
return 0;
}
Δεν χρησιμοποίησα καθόλου macros και νομίζω ο κώδικας έγινε πιο ευανάγνωστος.