ciao a tutti,
mi potreste dire per prima cosa dove posso trovare problemi sulla matrici implementati in c, e anche un libro di C con molti esercizi (magari anche guidati) facile da capire e ben strutturato?? Io ho: linguaggio C++ (dagli algoritmi alla programmazione orientata ad oggetti) della petrini ma secondo me non è ben strutturato.

e poi volevo chiedervi una cosa..
devo fare un programmino in C che risolva questo problema.

Creata una matrice 10*10 compresi tra 1 e 99 introdurre in input la posizione di una cella
e dire quanti tra i valori delle celle adiacenti sono pari e quanti dispari.
Ora ho creato la matrice ma non mi dice il numero esatto dei numeri pari e di quelli dispari. E poi non capisco perchè si ha bisogno di tre coppie cicli (VEDI UNO DUE E TRE).


Io avrei creato un programma che facesse una cosa simile :

Chiedeva la posizione del numero che volevo verificare. es

12 15 16 49 78
48 78 56 14 74
36 12 47 99 41

che posizione vuoi verificare?
colonna riga
[2] [1]

i numeri adiacenti al 56 sono:
16 49 14 99 47 12 78 15
i pari sono 3
i dispari sono 3

sapendo la posizione del numero del quale voglio sapere i numeri adiacenti es
[2][1] avrei fatto un ciclo for che controlli i tre numeri sopra, quello detro, quello sinistro e i 3 in basso. Tutto questo pero non so come farlo.. e poi vorrei anche che se inserito la posizione di un numero posizionato negli angoli dia un messaggio di errore.




[code]


#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define riga 10
#define colonna 10

int main()
{
srand(time(NULL));
int i,j,ri,co;
int mat[riga][colonna];
int massimo,minimo,totp,totd,ris;
int risp;
massimo=99;
minimo=0;
totp=0;
totd=0;

for (i=0;i<riga;i++)
{
for(j=0;j<colonna;j++)
{
mat[i][j]= (rand()%(massimo-minimo))+minimo;
}
}

for(i=0;i<riga;i++)
{
for(j=0;j<colonna;j++)
{
printf("%d \t",mat[i][j]);
}
printf("\n");
}

do
{
printf("\n**** inserire la posizione della cella ****\n");

printf("\n inserisci la riga\n");
scanf("\n%d",&ri);

printf("\n inserisci la colonna\n");
scanf("\n%d",&co);

if(ri<10 && co<10) 1 // DA QUA NON CAPISCO PIù LA LOGICA

{
for (i=ri-1;i<ri+2;i++)
{
for (j=co-1;j<co+2;j++)
{
if(!(i==ri && j==co))
{
ris=mat[i][j]%2;

if(ris==0)
{
totp=totp+1;
}
else if (ris!=0)
{
totd=totd+1;
}
}
}
}

for (i=ri;i<ri;i++) //2
{
for (j=co;j<co;j++)
{
ris=mat[i][j]%2;

if(ris==0)
{
totp=totp+1;
}
else if (ris!=0)
{
totd=totd+1;
}
}
}

for (i=ri+1;i<ri+1;i++) //3
{
for (j=co+1;j<co+1;j++)
{
ris=mat[i][j]%2;

if(ris==0)
{
totp=totp+1;
}
else if (ris!=0)
{
totd=totd+1;
}
}
}

}

printf("\nI numeri pari sono\t%d",totp);
printf("\n");

printf("\nI numeri dispari sono\t%d",totd);
printf("\n");

printf("vuoi continuare? 0=si 1=no");
scanf("%d",&risp);
}
while(risp!=1);


system("pause");
}

spero di essere stato più chiaro possibile. grazie del vostro interessamento!