Sottoprogramma Matrici

di il
5 risposte

Sottoprogramma Matrici

Salve a tutti,sono nuovo nel forum e non ho trovato una sezione per la presentazione,quindi scrivo direttamente il mio primo post. Studio ingegneria informatica e sono alle prime armi ,perciò mi scuso per qualche domanda un po' banale.


Stavo guardando questo sottoprogramma per leggere una matrice :

void leggi_matrice (char* mat, int* x, int* y)
{
for (int i=0; i<*x; i++)
{
for (int j=0; j<*y; j++)
{
cout << "Inserisci l'elemento (" << i+1 << ") ("<<j+1<<"): ";
cin >> *(mat + i*(*x) + j); <--- Passaggio non chiaro.
}
}
system("cls");

Ho indicato il passaggio non chiaro che non riesco a interpretare. Aspetto vostre risposte. Saluti,cesc__

5 Risposte

  • Re: Sottoprogramma Matrici

    E' semplicemente l'accesso a una locazione di una matrice, costruita come array NxM, tramite il calcolo degli indici.
    Se M è il numero di colonne, l'accesso avviene come M * riga + colonna.
  • Re: Sottoprogramma Matrici

    shodan ha scritto:


    E' semplicemente l'accesso a una locazione di una matrice, costruita come array NxM, tramite il calcolo degli indici.
    Se M è il numero di colonne, l'accesso avviene come M * riga + colonna.
    Grazie della risposta,ma non si potrebbe indicare l'accesso solo con riga e colonna?
  • Re: Sottoprogramma Matrici

    No, perché quello che stai trattando in realtà è un array, non una matrice "classica". Stai cioè trattando un char* non un char** o un char[][M], per cui occorre precalcolare l'indice dell'elemento r, c della pseudo matrice nell'indice n dell'array che la simula.
  • Re: Sottoprogramma Matrici

    shodan ha scritto:


    No, perché quello che stai trattando in realtà è un array, non una matrice "classica". Stai cioè trattando un char* non un char** o un char[][M], per cui occorre precalcolare l'indice dell'elemento r, c della pseudo matrice nell'indice n dell'array che la simula.
    grazie sono cose che dovrò studiare non è facile fare molte cose da soli..spero riesca a trovare qualcosa su google..
  • Re: Sottoprogramma Matrici

    Il nome degli iteratori porta sicuramente confusione,anche l'uso diretto dei puntatori,forse sarebbe stato meglio scriverlo cosi:
    
    void leggi_matrice (char* mat, int* countx, int* county)
    {
        for (int y=0; y < *county; y++)
        {
            for (int x=0; x < *countx ; x++)
            {
                cout << "Inserisci l'elemento (" << y+1 << ") ("<<x+1<<"): ";
                cin >> mat[ (y * *countx) + x];
            }
        }
    ...
    ..
    .
    
Devi accedere o registrarti per scrivere nel forum
5 risposte