Salve a tutti, sono nuovo della programmazione e sto seguendo un voluminoso manuale di C di 700 pagine ma che trovo molto facile ed interessante..
Uno di questi esercizi è quello di fare un programma che chieda all'utente di inserire i numeri da 1 a 16 in qualsiasi ordine e che poi li stampi in un quadrato 4x4 (con le tabulazoni), e , successivamente, scrive la somma di tutte le righe, colonne e diagonali.
Se le somme sono tutte uguali si ha il famoso quadrato magico.
Il mio problema è che quando stampo l'undicesimo numero mi appare un numero esagerato (2293568)... Anche se le somme delle righe e colonne sono corrette tranne una delle due diagonali... (il risultato dovrebbe essere 34 tranne nell'ultima diagonale che stranamente mi esce il numero 45)...
Io il programma l'ho compilato con gcc -O -Wall -W -pedantic -ansi -std=c89 e non mi ha dato nessun segnale di errore... Se invece compilo con Dev-C++ mi dà un errore del linker...
Vi allego il codice sorgente (perdonatemi è senza commenti) e un immagine...
codice:
/*
  * Name: Quadrato magico
  * Copyright: Zorgatone spa
  * Author: Tommaso Ricci
  * Date: 02/07/10 23.47
  * Description: Chiedo i numeri da 1 a 16 in qualunque ordine
  *              e li ristampo nel quadrato e faccio le somme delle righe, colonne e diagonali.
  */

  #include <stdio.h>

  int main(void)
{
     int uno, due , tre, quattro, cinque, sei, sette, otto, nove,
         dieci, undici, dodici, tredici, quattordici, quindici, sedici;

     printf("Enter the numbers from 1 to 16 in any order:\n");
     scanf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d",
               &uno, &due , &tre, &quattro, &cinque, &sei, &sette, &otto, &nove,
               &dieci, &undici, &dodici, &tredici, &quattordici, &quindici, &sedici);

          printf("%d\t%d\t%d\t%d\n%d\t%d\t%d\t%d\n%d\t%d\t%d\t%d\n%d\t%d\t%d\t%d\n",
               uno, due , tre, quattro, cinque, sei, sette, otto, nove,
               dieci,&undici, dodici, tredici, quattordici, quindici, sedici);

          printf("\nRow sums: %d %d %d %d\n", uno + due + tre + quattro, cinque + sei + sette + otto,
                 nove + dieci + undici + dodici, tredici + quattordici + quindici + sedici);    
          printf("Column sums: %d %d %d %d\n", uno + cinque + nove + tredici, due + sei + dieci + quattordici,
                    tre + sette + undici + quindici, quattro + otto + dodici + sedici);
          printf("Diagonal sums: %d %d\n", uno + sei + undici + sedici, quattro + sette + dieci + quattordici);

          return 0;
}


Grazie a tutti per l'aiuto...