ciao a tutti come faccio a trovare il massimo il minimo oppure dei valori percentuali compresi tra 0 e 200 ad esempio all interno di una regione? per esempio data una matrie 4x4 contentente i valori:
210 630 22 102
240 500 35 923
0 611 152 883
14 57 64 613
e voglio selezionare la regione compresa tra (x1y1 in alto a sx) e (x2y2 in basso a dx) della matrice 4x4? il dubbio è come lavorare su una sottomatrice. io ho eseguito i 2 doppi cicli for ma quando verifico la statistica mi escono valori sballati di percentuali o di max e min. grazie ancora!
codice:
while (fgets(riga, MAX, f) != NULL)
{ for(i=0; i<N; i++)
for(j=0; j<N; j++) {
if(r<=x2 && r>=x1 && s<=y2 && s>=y1)
cont=0; {
for(c=0; c<N-r; c++)
for(d=0; d<N-s; d++) {
if(mappa[c][d]>max) max=mappa[c][d];
if(mappa[c][d]<min && mappa[c][d]!=0)
min=mappa[c][d];
if(mappa[c][d]==0) mare++;
//conto “quanto mare c’è”
if(mappa[c][d]>0 && mappa[c][d]<200)
pianura++;
if(mappa[c][d]>=200 && mappa[c][d]<=600)
collina++; if(mappa[c][d]>600)
montagna++;
while (isdigit(mappa[c][d])); cont++;
//fin quando la riga contiene un carattere incrementa la c. esce quando la riga contiene spazio vuoto.
c++; }
}
}
}}
nval = (x2-x1+1)*(y2-y1+1); //salvo la variabile nval in modo da non doverla riscrivere per il calcolo delle percentuali.
printf("Altitudine massima: %d\n", max);
printf("Altitudine minima: %d\n", min);
printf("Mare: %.2f%%\n", mare*100/nval); //calcolo di una semplice percentuale
printf("Pianura: %.2f%%\n", pianura*100/nval);
printf("Collina: %.2f%%\n", collina*100/nval);
printf("Montagna: %.2f%%\n", montagna*100/nval);
return 0;
}