Ordine Matrici

di il
9 risposte

Ordine Matrici

Salve a tutti ho un problemino spero che qualcuno ascolti la povera voce di un niubbo non riesco a capire come poter stampare a video una matrice in ordine, con il codice riportato mi stampa a video:
1
2
3
4
etc...
mentre io vorrei proprio che mi stampasse la matrice in ordine; grazie in anticipo e tanti cari saluti a tutti.
#include <iostream>
#include <iomanip>
using namespace std;

int main(){
 int dim1;
 int dim2;
 cout << "Inserisci " << endl;
 cin >> dim1;
 cin >> dim2;
 int matrice[dim1][dim2];
 int i = 0;
 int j = 0;
 for(i = 0; i < dim1; i++){
       for(j = 0; j < dim2; j++){
             cout << "inserisci le componenti della matrice" << endl;
             cout << endl << endl;
             cin >> matrice[i][j];
             cout << endl << endl;
             cout << endl << endl;
             
             }
       }
  for(i = 0; i < dim1; i++){
       for(j = 0; j < dim2; j++){
             cout << matrice[i][j] << endl;
             }
       }
 cout << endl << endl;
 system("pause");
 return 0;
}

9 Risposte

  • Re: Ordine Matrici

    Cosa significa stampare la matrice in ordine? fai un esempio di matrice.
  • Re: Ordine Matrici

    1 2 3
    4 5 6
    7 8 9
    il caso di una 3x3.
    scusami se sono stato poco chiaro
  • Re: Ordine Matrici

    Devi per forza usare una matrice internamente? Puoi acquisire i dati in un vettore, ordinare il vettore e piazzare i dati nella matrice. poi stampi la matrice.
  • Re: Ordine Matrici

    Si effettivamente potrei anche fare in questo modo; comunque per curiosità non è proprio fattibilie come cosa? io dovrei immettere righe e colonne della matrice che voglio dalla tastiera quindi come dovrei fare secondo il tuo procedimento, se non ti crea problemi potresti scrivermi un esempio anche stupido? grazie mille per l'aiuto mi stai salvando
  • Re: Ordine Matrici

    Questo non è C++ valido. è definito in C99 ma non tutt i compilatori lo supportano. Per info si chiama VLA(variable length array)
    
    cin >> dim1;
    cin >> dim2;
    int matrice[dim1][dim2];
    
    Se la dimensione dell'array/matrice non è nota devi usare il new. Una cosa del tipo:
    
    int main()
    {
       int dim1,dim2;
       cout<<"Inserisci le dimensioni della matrice \n";
       cin>>dim1;
       cin>>dim2;
    
       // Create row pointers
       int **matrix = new int * [dim1];
    
       // Create the data for the matrix in one call.
       int *matrix_data = new int[dim1*dim2];
    
       // Create n*n matrix
       for (int i=0; i < dim1; i++, matrix_data+=dim2)
          matrix[i] = matrix_data;  // point row pointers to matrix data
    
       // delete matrix
        delete []matrix[0];  // delete the beginning of the matrix data
        delete [] matrix;     // delete the row pointers.
    }
    
  • Re: Ordine Matrici

    L'ordinamento lo puoi fare con una semplice chiamata al std::sort
    
    std::sort(matrix_data,matrix_data + (dim1*dim2));
    
    Alla stampa della matrice avrai la tua matrice ordinata.
  • Re: Ordine Matrici

    Grazie mille! buona serata
  • Re: Ordine Matrici

    Figurati. sempre se hai capito cosa fare. Non so se ti è permesso usare std::sort.
  • Re: Ordine Matrici

    Forse ti ho complicato la vita per niente. Se non vuoi ordinare i valori dentro la matrice ma stamparla cos' com'è l'hai inserita ma che venga rappresentata in righe/colonne basta cambiare la funzione che avevi fatto.
    
    for(i = 0; i < dim1; i++){
           for(j = 0; j < dim2; j++){
                 cout << matrice[i][j] << endl;
                 }
          cout << endl;
           }
    
Devi accedere o registrarti per scrivere nel forum
9 risposte