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??