Allora dove ho messo i puntini sta per dire lì va messo l' inserimento del valore che acquisisce rnd nella matrice CB che hai . aumento e appoggio servono per creare man mano numeri random adatti alla colonna, ti ho scritto
Nella prima colonna rnd = 1+rand()%9 ; ( numeri da 1 a 9 ) ( aumento = 1 e appoggio = 0 )
Nella seconda colonna rnd = 10+rand()%10 ( numeri da 10 a 19 ) ( aumento = 10 e appoggio= 1)
Nella terza colonna rnd = 20+rand()%10 ( numeri da 20 a 29 ) ( aumento = 20 e appoggio = 1 )
Tu fai una serie di calcoli per cercare di capire il numero se fa parte della prima , seconda terza ecc colonna , ma invece puoi benissimo eliminare tutto quell' algoritmo , che ti produce solo errrori. Ti spiego meglio cosa servono aumento e appoggio:
nel tuo algorimo hai usato rnd = 1+rand()%90 che genera numeri da 1 a 90 perchè rand()%90 genera numeri da 0 a 89 e se metti un +1 diventa da 1 a 90 giusto?
io ho fatto la stessa cosa solo che :
i due cicli for sono i due famosi cicli per l' inserimento di valori in una matrice ( blocco righe e aumenti colonne o viceversa ) . In questo caso blocco le colonne e aumento le righe ( come anche te hai detto nella spiegazione )quindi nella prima colonna quali numeri ci devono essere? da 0 a 9 e quindi ho messo un :
rnd = aumento+rand()%(9+appoggio);
dove aumento inizialmente vale 1 e appoggio 0 quindi diventa :
rnd = 1+rand()%9 ;
giusto? e quindi genera numeri da 1 a 9 ( rand()%9 genererà numeri da 0 a 8 ma il +1 lo fa diventare da 1 a 9 )
Ora finisce il ciclo interno, aumento incrementa di 10 , appoggio di 1 e quindi e si incrementa la colonna , quindi passiamo alla seconda colonna in cui ci devono essere valori da 10 a 19
rnd = 10+rand()%(9+1) ;
genererà numeri da 10 a 19 perchè rand()%10 generà numeri da 0 a 9 ma mettendo un +10 genererà da 10 a 19 .
Itera il procedimento in cui aumenta di 10 ogni volta e vedi che avrai sempre numeri da 10 a 19 , 20 a 29 , 30 a 39 .
Ora che ci penso però ci sono due problemi :
1) La prima volta aumento = 1 e facendo aumento = aumento+10 esso andrà a 11 , quindi si deve modificare
2) L' ultima colonna è formata da numeri da 80 a 90 e no da 80 a 89 e quindi appoggio deve ritornare a 0 quindi possiamo modificarlo in questo modo:
int aumento=1, appoggio =0, incremento=0 ;
for ( int i = 0 ; i < colonne ; i ++ ) {
for ( int j = 0 ; j < righe ; j ++ ) {
rnd = (aumento+rand()%(9+appoggio));
CB[j][i] = rnd;
}
if ( j == righe-2 )
appoggio=0;
else
appoggio = 1;
incremento +=10;
aumento=incremento ;
}