Matrice, coppie.

di il
10 risposte

Matrice, coppie.

Ciao a tutti, ho un problema con un esercizio riguardante le matrici. Vi copio direttamente la traccia:
Allocare una matrice, dimensione rows×cols
rows e cols scelti dall'utente, ma celle in numero pari

vector< vector<char> >matrix(rows, vector<char>(cols));
vector<char> matrix(rows*cols); // pseudo...

Inserire in ordine le prime lettere dell'alfabeto,
ciascuna ripetuta due volte

Ripetutamente...
scegliere due celle a caso
e scambiarne il contenuto

Mostrare la matrice risultante

Il mio problema è proprio l'allocazione della matrice.. e oltretutto non mi da per buono il comando matrix.push_back(); ... Consigli? Grazie dell'eventuale aiuto

10 Risposte

  • Re: Matrice, coppie.

    Questa è la sintassi per usare un vector:
    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    vector<vector<char> > matrice;
    
    int main(void) {
        int i;
        matrice.resize(10);
        for (i = 0; i < 10; i++) {
            matrice[i].resize(10);
        }
        matrice[1][2] = 8;
        matrice[0][8] = 2;
    }
  • Re: Matrice, coppie.

    Scusa se sto dicendo una cavolata, sono ancora agli inizi ^^ La funzione resize() non modifica la dimensione di un vettore? In questo caso è un vettore di vettori, una matrice quindi.. Fa lo stesso?
  • Re: Matrice, coppie.

    Sì modifica la dimensione di un vettore se non hai specificato la dimensione del vettore devi usare resize() che serve per ridimensionare il vettore. Se no puoi fare come hai fatto tu... e non c'è bisogno di pushback se sai già la dimensione del vettore...
  • Re: Matrice, coppie.

    E come faccio a "caricare" il vettore di vettori (quindi la matrice) in questo caso, se non posso usare le assegnazioni o il cin? Grazie mille per l'aiuto che mi stai dando comunque ^^
  • Re: Matrice, coppie.

    Si che puoi usare le assegnazioni ma dopo che hai stabilito la grandezza del vettore come nell'esempio.
  • Re: Matrice, coppie.

    Anche a costo di fare la figura dell'idiota, lo devo capire! Ancora non riesco a risolvere l'esercizio..

    #include <iostream>
    #include <vector>

    using namespace std;

    vector<vector<char> > matrice;

    int main(void) {
    int i;
    matrice.resize(10);
    for (i = 0; i < 10; i++) {
    matrice=i;
    }

    cout << matrice;
    }
    Cosa sbaglio? Ho provato anche a copiare direttamente il codice che mi hai scritto tu aggiungendo un cout << matrice[1][2]; ma niente.. Non mi stampa niente... Scusami se sono pensate e lento a capire >.<
  • Re: Matrice, coppie.

    Hai visto com'è definito matrice? Come un vettore di vettori. matrice.resize(10) non fa altro che crearti un vettore di 10 vettori di dimensione 0. quindi hai 10 righe e nessuna colonna perche vector::resized(size_t n) equivale a vector.resize(size_t n, T()); dove T() è il costruttore dell'oggetto dentro il vettore. Siccome l'oggetto è un vettore di char alla fine avrai matrice.resize(10,vector<char>(0));
    Non so se mi sono spiegato.
  • Re: Matrice, coppie.

    Ecco un esempio veloce
    
    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    int main()
    {
    	vector<vector<char> > matrice(10,vector<char>(10));
    
    	for(char i = 'a'; i < 'a' + 10; i++)
    		for(char j = 'z'; j > 'z' - 10; j--)
    			matrice[i - 'a']['z' - j] = i;
    
    	for(int i = 0; i < 10; i++)
    	{
    		for(int j = 0; j < 10; j++)
    			cout << matrice[i][j];
    		cout << '\n';
    	}
       return 0;
    }
    
  • Re: Matrice, coppie.

    Il mio esempio non andava bene?
  • Re: Matrice, coppie.

    Si che andava bene ma continuava a dire che non riesce a capire la logica.
Devi accedere o registrarti per scrivere nel forum
10 risposte