Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    17

    C++ chiarimento puntatori

    Scusate per la domanda forse a voi banale ma vorrei chiedere a voi se potreste chiarirmi un pò le idee sui puntatori, li ho studiati a livello teorico però evidentemente sbaglio qualcosa nel loro utilizzo
    ad esempio questo codice
    codice:
    #include<iostream>
    using namespace std ;
    int main ()
    {
        int i,dim(1),a,j;
        char b;
        int *x=new int[dim];
        for(i=0; b!='n'; i++)
        {
            cin>>x[i];
            cout<<"continuare (s/n)";
            cin>>b;
            if(b!='n')
                dim++;
        }
        j=dim-1;
        for(i=0; i<j; i++)
        {
            x[i]=x[j]-x[i]+(x[j]=x[i]);
            j--;
        }
        for(i=0; i<dim; i++)
        {
            cout<<"cella #"<<i<<"= "<<x[i]<<endl;
        }
        cin>>i;
        delete[]x;
    }
    cos'ha che non va?
    E io mi trovo meglio con il contenitore vector rispetto a puntatori e new, ma c'è qualche motivo per cui non dovrei usare i vector?
    Ultima modifica di MItaly; 21-03-2015 a 19:35 Motivo: Tad CODE, indentazione

  2. #2
    Quote Originariamente inviata da N1KO Visualizza il messaggio
    cos'ha che non va?
    Hai creato l'array di dimensione 1, non puoi metterci dentro quanti elementi ti pare.
    E io mi trovo meglio con il contenitore vector rispetto a puntatori e new, ma c'è qualche motivo per cui non dovrei usare i vector?
    Se quello di cui hai bisogno è un vettore dinamico non c'è motivo di non usarlo (a patto di sapere sotto com'è implementato per non avere sorprese).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    17
    scusa cosa intendi con no MP tecnici?
    E non è qusto il forum?
    Ultima modifica di N1KO; 21-03-2015 a 21:15 Motivo: quote inutile

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Quella frase è parte della "firma" ... non fa parte della risposta al tuo thread.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    17
    ah ok grazie, l'ho modificato così e continua a non funzionare... potreste aiutarmi?
    #include<iostream>

    codice:
    using namespace std ;
    int main ()
    {int i,dim(1),a,j;
    char b;
    int *x=new int;
    for(i=0;b!='n';i++)
    {cin>>x[i];
    cout<<"continuare (s/n)";
    cin>>b;
    delete x;
    x=new int;
    if(b!='n')
    dim++;
    }
    j=dim-1;
    for(i=0;i<j;i++)
    {x[i]=x[j]-x[i]+(x[j]=x[i]);
    j--;
    }
    for(i=0;i<dim;i++)
    {cout<<"cella #"<<i<<"= "<<x[i]<<endl;
    }
    cin>>i;
    delete []x;
    }
    Ultima modifica di LeleFT; 24-03-2015 a 14:23 Motivo: Aggiunti i tag CODE

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    1) La prima for utilizza la variabile b senza che questa sia mai modificata

    2) Non hai tenuto conto di quanto ti ha detto prima MItaly sul fatto che hai allocato spazio per una sola int e ne vuoi inserire un numero maggiore
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    17
    Quote Originariamente inviata da oregon Visualizza il messaggio
    1) La prima for utilizza la variabile b senza che questa sia mai modificata
    hai ragione, corretto.
    2) Non hai tenuto conto di quanto ti ha detto prima MItaly sul fatto che hai allocato spazio per una sola int e ne vuoi inserire un numero maggiore
    dovrei fare ogni volta new int[dimensione] dentro il for?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Quote Originariamente inviata da N1KO Visualizza il messaggio
    dovrei fare ogni volta new int[dimensione] dentro il for?

    Puoi usare la funzione realloc all'interno della for
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    17
    e di nativo c++ come new e delete non esiste niente?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    No. In C++ dovresti usare i vector ...

    Puoi sempre fare una serie di new, copy, delete ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Tag per questa discussione

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.