ciao a tutti,
avrei un grosso problema.. dovrei fare un programma analogo..

codice:
#include <stdio.h>
#include <stdlib.h>

#define N 9

void Su();
void Giu();
void Dx();
void Sx();

char mat[N][N];
int ia1,ja1;

int main()
{
    char risp;
    int i,j;
    
    for(i=0;i<N;i++)
        for(j=0;j<N;j++)
            mat[i][j]=0;
    mat[4][4]=1;
    ia1=4;
    ja1=4;
   do
   {
    for(i=0;i<N;i++)
    
        for(j=0;j<N;j++)
            printf("%d\t",mat[i][j]);
        printf("\n");    

    do
    {
        printf("\n\nDove sposti l'uno? \n( n=su , s=giu , e=dx , o=sx )\nq per uscire\n");
        scanf("%c",&risp);
    }
    while(risp!='q' && risp!='Q' && risp!='n' && risp!='N' && risp!='s' && risp!='S' && risp!='e' && risp!='E' && risp!='o' && risp!='O');
    switch(risp)
    {
        case 'n': Su();  break;           
        case 'N': Su();  break;           
        case 's': Giu(); break;           
        case 'S': Giu(); break;           
        case 'e': Dx();  break;           
        case 'E': Dx();  break;           
        case 'o': Sx();  break;           
        case 'O': Sx();  break;                    
    }
   }
   while(risp!='q' && risp!='Q');
} 


void Su()
{
     if (ia1>0)
     {
         mat[ia1][ja1]=0;
         ia1--;
         mat[ia1][ja1]=1;
     }
}
	void Giu()
{
     if (ia1<N-1){
         mat[ia1][ja1]=0;
         ia1++;
         mat[ia1][ja1]=1;
         }
}
void Dx()
{
     if (ja1<N-1){
         mat[ia1][ja1]=0;
         ja1++;
         mat[ia1][ja1]=1;
         }
}
void Sx()
{
     if (ja1>0){
         mat[ia1][ja1]=0;
         ja1--;
         mat[ia1][ja1]=1;
         }
}
questo programma sposta l'uno a seconda di dove vuole l'utente (su giu destra sinistra)

io ne ho fatto uno analogo ma non mi funziona come vorrei..
il PROGRAMMA che dovrei fare io è leggermente diverso..
il valore centrale della matrice se è pari si deve spostare da solo ( in un'altra matrice che stampera il programma) in su se è dispari in giu. guardate qua
codice:
  
#include <stdio.h>
#include <stdlib.h> 
#include <time.h>

#define N 9

void Su();
void Giu();


char mat[N][N];
int ia1,ja1;
int i,j;

int main()
{
    srand(time(NULL));
    int massimo,minimo; 
    
    massimo=99; 
    minimo=0;

    char risp;
    
    
    for(i=0;i<N;i++)
        for(j=0;j<N;j++)
            mat[i][j]=(rand()%(massimo-minimo))+minimo; 
            if (mat[4][4]%2==0) 
            { 
                             Su();  
            } 
            else  
            { 
                  Giu();
            }
    ia1=4;
    ja1=4;

    for(i=0;i<N;i++)
    
        for(j=0;j<N;j++)
            printf("%d\t",mat[i][j]);
        printf("\n");     
        system("pause"); 
}

void Su()
{
    
         mat[ia1][ja1]=0;
         ia1--;
         mat[ia1][ja1]=mat[4][4]; 
         printf("%d\t",mat[i][j]);
         printf("\n");
     
}
	void Giu()
{
     if (ia1<N-1)
     {
         mat[ia1][ja1]=0;
         ia1++;
         mat[ia1][ja1]=mat[4][4];              
         printf("%d\t",mat[i][j]);                         // NON SO SE LA MIA LOGICA è GIUSTA.. IO   V                                                                 ORREI STAMPARE DI NUOVO LA MATRICE
         printf("\n");
     }
}
cioè mi spiego meglio mettiamo caso che ho

4 58 69 74 71 10 12 32 79
7 48 50 14 2 14 96 99 66
e cosi via io dovresi per esempio spostare il 2 siccome è pasi in atlo il 71 se ne va e al posto del 2 si mette un'altro numero casuale..

come potrei modificarlo?? grazie del vostro interessamento spero di non chiedere troppo..
P.s sapete dove posso trovare programmi esclusivamente sulle matrici simili a questo??