ΠΡΟΓΡΑΜΜΑ Μαγικό_τετράγωνο ΣΤΑΘΕΡΕΣ n = 3 ! Ο n πρέπει να είναι ΠΕΡΙΤΤΟΣ ! ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: i, j, square[n, n], key, row, col ΑΡΧΗ ! Αρχικοποίηση του πίνακα ! i: δείκτης γραμμής. j: δείκτης στήλης ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ n ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ n square[i, j] <- 0 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ i <- 1 ! Ξεκινάμε με την 1η γραμμή j <- (n + 1) div 2 ! Η μεσαία στήλη square[i, j] <- 1 ! Στο μεσαίο στοιχείο της 1ης γραμμής βάζουμε την τιμή 1 ΓΙΑ key ΑΠΟ 2 ΜΕΧΡΙ n*n ! key είναι ο αριθμός που θα τοποθετηθεί ! Υπολογισμός της θέσης στον πίνακα ! row: η νέα μας γραμμή. col: η νέα μας στήλη ΑΝ i > 1 ΤΟΤΕ row <- i - 1 ! Πάμε πρός τα πάνω ΑΛΛΙΩΣ row <- n ! Πάμε στην τελευταία (αντιδιαμετρική) γραμμή ΤΕΛΟΣ_ΑΝ ΑΝ j > 1 ΤΟΤΕ col <- j - 1 ! Πάμε πρός τα αριστερά ΑΛΛΙΩΣ col <- n ! Πάμε στην τελευταία (αντιδιαμετρική) στήλη ΤΕΛΟΣ_ΑΝ ΑΝ square[row, col] > 0 ΤΟΤΕ ! Αν στη θέση που βρισκόμαστε έχει ήδη τοποθετηθεί αριθμός τότε, i <- i + 1 ! πάμε πρός τα κάτω. ΑΝ i = n + 1 ΤΟΤΕ ! Αν ξεπεράσαμε το όριο γραμμών του πίνακα τότε, i <- 1 ! πάμε στην 1η γραμμή ΤΕΛΟΣ_ΑΝ ΑΛΛΙΩΣ ! Αν η θέση περιέχει 0 τότε i <- row ! Σε αυτή τη γραμμή, j <- col ! και σε αυτή τη στήλη θα τοποθετηθεί το key ΤΕΛΟΣ_ΑΝ square[i, j] <- key ! Τοποθετούμε το key στον πίνακα ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ! Πάμε στο επόμενο key ! Εκτύπωση ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ n ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ n ΓΡΑΨΕ square[i, j], ' ' ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ