Stringhe C++ Trova l'errore! (sto impazzendo)

di il
23 risposte

23 Risposte - Pagina 2

  • Re: Stringhe C++ Trova l'errore! (sto impazzendo)

    Se uso solo ciò che conosco non imparerò mai nulla, poi ha fatto il mio stesso programma, funzionante, scrivendo la metà e senza neanche una delle mie librerie (solo iostream)
  • Re: Stringhe C++ Trova l'errore! (sto impazzendo)

    Magari si può fare il tuo stesso programma con qualche linea ma non ha senso se non lo comprendi e non è nel forum che devi imparare.

    Qui si risolvono dei problemi non si fanno esercizi e corsi di c++. Poi ognuno decide per sé.

    Avresti potuto fare debugging del TUO codice per capire dove avevi sbagliato, per imparare a fare debugging (importantissimo) e per avere un TUO prodotto. Ti accontenti di copiare di sana pianta il codice altrui senza comprenderlo.
  • Re: Stringhe C++ Trova l'errore! (sto impazzendo)

    oregon ha scritto:


    Se non conosci i ancora questi argomenti che senso ha usare quel codice fatto da altri con altro livello di conoscenze?
    Se ti riferisci al mio codice, sinceramente a livello di librerie/funzioni utilizzate mi sembra più complicato quello dell'op!
    Anzi a tal proposito, per quanto la strada della conoscenza possa essere percorsa in infiniti modi, trovo alquanto strano conoscere stringstream, iteratori, ecc... e allo stesso tempo non conoscere i riferimenti, lo specificatore const o la funzione push_back().

    oregon ha scritto:


    Magari si può fare il tuo stesso programma con qualche linea ma non ha senso se non lo comprendi e non è nel forum che devi imparare.

    Qui si risolvono dei problemi non si fanno esercizi e corsi di c++. Poi ognuno decide per sé.

    Avresti potuto fare debugging del TUO codice per capire dove avevi sbagliato, per imparare a fare debugging (importantissimo) e per avere un TUO prodotto. Ti accontenti di copiare di sana pianta il codice altrui senza comprenderlo.
    In pratica ritieni più importante per un programmatore saper scrivere del codice che saper ragionare "correttamente"?!
    In ogni caso ho postato il codice perchè l'op era scomparso!

    SwitchArio ha scritto:


    Ciao, scusa se non ti ho risposto ma mi ero totalmente dimenticato, avevo qualche domanda da farti:

    1. che fa la funzione push_back()?
    2. non so cosa vuoldire const string &s_in a cosa serve il &?
    3. perchè se l'equazione immessa è una variabile di tipo string tu la tratti come array?
    4. Questa condizione cosa serve a escludere?
    (s_in[i - 1] < '0' || s_in[i - 1] > '9'))
    Ti faccio tutte queste domande perché sono ancora un novellino
    Scusami ancora tantissimo se ti ho risposto solo adesso

    Grazie.
    -Ario
    Ciao, non ti preoccupare!

    1. semplicemente aggiunge un carattere in coda alla stringa:
    http://www.cplusplus.com/reference/string/string/push_back/
    2. scrivendo
    string formatta_stringa(string s_in)
    {
        ...
    }
    il programma funziona ugualmente, in ogni caso se sei interessato dai un'occhiata qui:
    http://www-old.bo.cnr.it/corsi-di-informatica/corsoCstandard/Lezioni/01Indice.html
    gli argomenti in gioco sono costanti e riferimenti;
    3. scusa ma per te cos'è una string?
    4. l'intera condizione
    else if(s_in[i] == 'x' && (!i || (s_in[i - 1] < '0' || s_in[i - 1] > '9')))
    ci dice se il carattere s_in[ i ] è una x non preceduta da alcuna cifra.
    La parte da te evidenziata invece risulta vera se s_in[ i - 1 ] non è una cifra. A tal proposito conosci vero cos'è la tabella ASCII?!

    La logica dell'algoritmo che ti ho illustrato nel mio primo post ti è chiara invece?
  • Re: Stringhe C++ Trova l'errore! (sto impazzendo)

    Nippolo ha scritto:


    In pratica ritieni più importante per un programmatore saper scrivere del codice che saper ragionare "correttamente"?!
    No, vedo che non hai compreso. E' proprio il contrario. Dovrebbe ragionare sul proprio codice piuttosto che copiarne un altro.

    Non voglio fare polemiche ma questa è la mia opinione.

    Poi ognuno la pensa come vuole. Passo e chiudo.
  • Re: Stringhe C++ Trova l'errore! (sto impazzendo)

    Vabbè sul fatto che bisogna ragionare siamo d'accordo, quello che intendevo è che in alcuni casi continuare ad accanirsi sul codice è deleterio e sarebbe meglio fare un passo indietro e concentrarsi sulla riprogettazione dell'algoritmo risolutivo.
  • Re: Stringhe C++ Trova l'errore! (sto impazzendo)

    A tal proposito conosci vero cos'è la tabella ASCII?!
    Sì, so cos'è
    La logica dell'algoritmo che ti ho illustrato nel mio primo post ti è chiara invece?
    Sì, sì, ho capito quella parte

    1. semplicemente aggiunge un carattere in coda alla stringa:
    http://www.cplusplus.com/reference/string/string/push_back/
    grazie, di avermi mandato il link, così adesso so dove poter andare a cercare le funzioni

    il programma funziona ugualmente, in ogni caso se sei interessato dai un'occhiata qui:
    http://www-old.bo.cnr.it/corsi-di-informatica/corsoCstandard/Lezioni/01Indice.html
    gli argomenti in gioco sono costanti e riferimenti;
    Grazie mille, gli darò un'occhiata

    3. scusa ma per te cos'è una string?
    Un array di variabili char?

    4. l'intera condizione
    else if(s_in[i] == 'x' && (!i || (s_in[i - 1] < '0' || s_in[i - 1] > '9')))
    ci dice se il carattere s_in[ i ] è una x non preceduta da alcuna cifra.
    Chiaro!


    Grazie mille, userò questi consigli per aggiustare il mio programma (o scriverlo da capo )
  • Re: Stringhe C++ Trova l'errore! (sto impazzendo)

    3. scusa ma per te cos'è una string?
    Un array di variabili char?
    Volendo essere rigorosi una std::string è un oggetto della classe string, ma sì, in ultima analisi una std::string può essere considerata un array dinamico di char (o equivalentemente una stringa dinamica).
    Spero quindi di aver chiarito il tuo dubbio:
    3. perchè se l'equazione immessa è una variabile di tipo string tu la tratti come array?
  • Re: Stringhe C++ Trova l'errore! (sto impazzendo)

    Ma quando hai scritto
    else if(s_in[i] == 'x' && (!i || (s_in[i - 1] < '0' || s_in[i - 1] > '9')))
    il !i vuol dire i!=0 ?
    cioè: è come quando invece di scrivere i=i+a si scrive i+=a?

    perché ho notato che hai scritto anche ++i invece che i++ (non sapevo fossero corrette entrambe)
  • Re: Stringhe C++ Trova l'errore! (sto impazzendo)

    No, non è un operatore in notazione compatta come += o *=, e infatti !i coincide con i==0.
    Gli argomenti in ballo nel caso specifico sono casting (ossia conversione) implicito da int a bool e viceversa:
    http://www-old.bo.cnr.it/corsi-di-informatica/corsoCstandard/Lezioni/05Tipi.html
    (paragrafo: Il tipo "booleano")
    e l'operatore not !:
    http://www-old.bo.cnr.it/corsi-di-informatica/corsoCstandard/Lezioni/07Operatori.html
    (paragrafo: operatori logici)

    Inoltre al paragrafo successivo trovi anche gli operatori di incremento e decremento.

    Se in seguito alla lettura qualcosa non ti è ancora chiaro chiedi pure!
Devi accedere o registrarti per scrivere nel forum
23 risposte