Generare una matrice! (AIUTO HO L'ESAME DOMANI)

di il
3 risposte

Generare una matrice! (AIUTO HO L'ESAME DOMANI)

Sto facendo un esercizio che mi richiede di "Genera una matrice quadrata M di dimensione 20 di numeri casuali tra 10 e 99 tale che i valori in ogni riga siano tutti distinti."
Non ho idea di come fare per verificare che i numeri siano effettivamente tutti distinti, o meglio, ho provato a scrivere qualcosa ma so già che non è giusto e non mi vengono idee alternative .
Questo è ciò che ho scritto:

int i, j, h;

for(i=0; i<dim; i++)
{
for(j=0; j<dim; j++)
{
m[j]=rand()%90+10;

for(h=j-1; h>=0; h--)
{
while(m[j]==m[h])
{
m[j]=rand()%90+10;
}
}

}
}

3 Risposte

  • Re: Generare una matrice! (AIUTO HO L'ESAME DOMANI)

    Usa una finzione che per ogni numero casuale controlla se è già presente nella riga, se è presente ne genera un altro finché non ne trova uno nuovo
  • Re: Generare una matrice! (AIUTO HO L'ESAME DOMANI)

    E correggi il titolo del thread !
  • Re: Generare una matrice! (AIUTO HO L'ESAME DOMANI)

    Potresti anche generare un array di 89 interi contenenti i numeri tra 10 e 99, quindi estrarre a sorte (uno alla volta) dei valori che cancelleresti dall'elenco dopo averli estratti. Ad esempio, con solo cinque elementi per brevità:

    array iniziale: 1 2 3 4 5
    quantità elementi: 5

    Estrai un indice da 0 a 4 con rand()%5, metti esca 2 corrisponderebbe al valore 3. 3 andrebbe eliminato dall'array, e la quantità degli elementi ridotta di uno:

    array iniziale: 1 2 3 4 5
    quantità elementi: 5
    indice estratto: 2
    valore corrispondente: 3
    array dopo l'eliminazione: 1 2 4 5
    quantità di elementi: 4

    Se in seguito estrai un altro indice con rand()%4. avrai un indice che fa riferimento a un valore non ancora estratto (1, 2, 4 o 5). Ad esempio, se rand()%4 ti desse di nuovo 2, avresti il valore 4:

    array iniziale: 1 2 4 5
    quantità elementi: 4
    indice estratto: 2
    valore corrispondente: 4
    array dopo l'eliminazione: 1 2 5
    quantità di elementi: 3

    E così via. Non so quanto sia "canonico" un modo di procedere così, però credo che funzioni.
Devi accedere o registrarti per scrivere nel forum
3 risposte