Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [c++] standard Matrice dinamica

    Vorrei saper come posso fare a creare una matrice dinamica ???

    Perchè per lo standar c++ I valori degli indici devono essere delle costanti, mi hanno detto che esiste un altro metodo, ma non lo conosco!

  2. #2
    Devi studiarti l'allocazione/deallocazione dinamica di memoria con gli operatori new e dispose. L'argomento è trattato in tutti i libri sul C++.

    Inoltre il tema è stato discusso più volte in questo forum.
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

  3. #3
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    codice:
    int i,j;
    i = quellochetipare;
    j= quellochevuoi;
    
    int *t = new int[i][j];
    ecco la tua matrice
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  4. #4
    Originariamente inviato da XWolverineX
    codice:
    int i,j;
    i = quellochetipare;
    j= quellochevuoi;
    
    int *t = new int[i][j];
    ecco la tua matrice
    Ne sei sicuro XWolverineX ? Non mi sembra un metodo corretto...
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,473
    Se la matrice e'

    codice:
    int **Matrix;
    e il numero di righe e colonne le inserisci in due variabili apposite

    codice:
    int rows = 10, cols = 10;
    per allocare scrivi

    codice:
    Matrix = new int*[rows];
    for(int i=0;i<rows;i++)	
       Matrix[i] = new int[cols];
    e per liberare la memoria

    codice:
    for(int i=0;i<rows;i++)	
       delete Matrix[i];
    delete Matrix;
    P.S. XWolverineX ... in effetti non e' corretto il codice che hai scritto ...

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    79
    codice:
    for(int i=0;i<rows;i++)
    	    delete Matrix[i]; 
    delete Matrix;
    
    cout<<Matrix[val1][val2]  //val1 e val2 fissati a seconda se nella matrice usata esistevano o meno
    chiedo scusa, io creo una matrice e libero la memoria, poi mi faccio stampare un generico elemento della matrice e questo è ancora in memoria, stampato correttamente. E' normale una cosa del genere? :berto:
    "La fortuna aiuta gli audaci"
    (e non gli adagiati)

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,473
    Originariamente inviato da Loue
    ... chiedo scusa, io creo una matrice e libero la memoria, poi mi faccio stampare un generico elemento della matrice e questo è ancora in memoria, stampato correttamente. E' normale una cosa del genere? :berto:
    Normalissimo. La memoria viene solo deallocata, non viene cancellata ...

    Naturalmente la cosa funziona finche' il sistema non decide di utilizzare la memoria in altro modo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    79
    Originariamente inviato da oregon
    Normalissimo. La memoria viene solo deallocata, non viene cancellata ...

    Naturalmente la cosa funziona finche' il sistema non decide di utilizzare la memoria in altro modo ...
    ok, quindi sarà utilizzata dal sistema qualora ne abbia bisogno.

    Grassie
    "La fortuna aiuta gli audaci"
    (e non gli adagiati)

  9. #9
    Difatti di solito si annulla il puntatore:
    codice:
    delete Matrix;
    Matrix = NULL;
    così sei sicuro di non andare a pescare dati da un territorio pericoloso, come quello deallocato.

  10. #10
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    delete [] Matrix;
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.