RISOLTO Esercizio su if-else e variabile string

di il
24 risposte

RISOLTO Esercizio su if-else e variabile string

Salve,
questo è il mio primo messaggio, da poco ho deciso di provare ad imparare a programmare.
Ho deciso di iniziare (leggendo su internet) da C++, e sto attualmente seguendo delle video lezioni su YouTube (FCamuso, lo conoscete?), ma sono arrivato arrivato al punto in cui, dopo le dovute spiegazioni, ha assegnato degli "esercizi per casa", e sto riscontrando dei problemi.

L'esercizio in questione dice:
3. Sapendo che per leggere dalla tastiera delle parole invece di numeri interi si usano variabili di tipo string invece di int: fate inserire da tastiera che giorno è. Se non è lunedì visualizzare il messaggio: "coraggio, ci sono giorni peggiori..."
Tenendo presente che al momento le mie conoscenze non vanno oltre cout, cin, if, ed else l'ho così iniziato la risoluzione:
#include<iostream>

using namespace std;

int main()
{
    string giorno=0;

    cout << "Che giorno e' oggi? ";
    cin >> giorno;
    cout << "Oggi e' " << giorno << endl;
    return 0;
}
Successivamente, dopo aver mostrato l'inserimento del dato con cout, avrei messo un controllo if-else per mostrare il messaggio qualora non fosse lunedi, ma prima, per controllare che andasse bene, ho fatto "build and run" (uso Code::Blocks 13.12) riscontrando il seguente errore:
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct null not valid

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

Process returned 3 (0x3) execution time : 2.484 s
Press any key to continue.
Ho sbagliato qualcosa? Soluzioni? Consigli?
Grazie in anticipo.

24 Risposte

  • Re: RISOLTO Esercizio su if-else e variabile string

    Una stringa e un numero sono cose diverse. Quindi non devi scrivere =0 con la stringa
  • Re: RISOLTO Esercizio su if-else e variabile string

    oregon ha scritto:


    Una stringa e un numero sono cose diverse. Quindi non devi scrivere =0 con la stringa
    Ah, quindi a differenza di int non va inizializzato? Lascio senza nulla o ci va qualcos'altro?
  • Re: RISOLTO Esercizio su if-else e variabile string

    L'inizializzazione è una esigenza dell'algoritmo. Non è obbligatorio inizializzare neanche gli interi, se non ti serve.

    Una stringa comunque, contiene caratteri e non numeri.
  • Re: RISOLTO Esercizio su if-else e variabile string

    Capito, grazie.

    Adesso io proseguirei con:
    if (giorno=???)
        {
            cout << "Mi spiace..." << endl;
        }
        else
        {
            cout << "Coraggio, ci sono giorni peggiori..." << endl;
        }
    Ma la stringa "giorno" con cosa (=???) dovrei confrontarla per riuscire a mostrare il messaggio?
  • Re: RISOLTO Esercizio su if-else e variabile string

    L'esercizio dice

    "se non è lunedì ..."
  • Re: RISOLTO Esercizio su if-else e variabile string

    oregon ha scritto:


    L'esercizio dice

    "se non è lunedì ..."
    Quindi come andrebbe svolto?
  • Re: RISOLTO Esercizio su if-else e variabile string

    Dato che è molto semplice, pensaci un attimo ... se non risolvi da solo questi piccolissimi problemi, come fari con i successivi?
  • Re: RISOLTO Esercizio su if-else e variabile string

    Finora ho solo visto usare, negli esempi e negli esercizi, condizioni per if del tipo: <, >, =, <= e >=, e solo applicate ai numeri.

    Quindi non saprei che condizione porre per far si che "se non è...", purtroppo sono ancora agli inizi

    Un indizio?
  • Re: RISOLTO Esercizio su if-else e variabile string

    L'operatore di confronto per uguale da usare con la if è ==

    Usalo ...
  • Re: RISOLTO Esercizio su if-else e variabile string

    OK?
    #include<iostream>
    
    using namespace std;
    
    int main()
    {
        string giorno;
    
        cout << "Che giorno e' oggi? ";
        cin >> giorno;
        cout << "Oggi e' " << giorno << endl;
    
        if (giorno=="Lunedi")
        {
            cout << "Mi spiace..." << endl;
        }
        else
        {
            cout << "Coraggio, ci sono giorni peggiori..." << endl;
        }
    
        return 0;
    }
    
    Così funziona, ma se metto if (giorno=="Lunedì") con l'accento sulla i non funziona.

    Inoltre come posso include più risposte per accettare lunedì con accento e senza, e con maiuscola e senza?
  • Re: RISOLTO Esercizio su if-else e variabile string

    Devi confrontare sia con l'accento che senza utilizzando l'operatore or ||

    Ma lo conosci?
  • Re: RISOLTO Esercizio su if-else e variabile string

    oregon ha scritto:


    Devi confrontare sia con l'accento che senza utilizzando l'operatore or ||

    Ma lo conosci?
    No, come ho detto sono all'inizio, non conoscevo neppure ==
  • Re: RISOLTO Esercizio su if-else e variabile string

    Quindi non puoi farlo ... usa solo la parola indicata dall'esercizio.
  • Re: RISOLTO Esercizio su if-else e variabile string

    oregon ha scritto:


    Quindi non puoi farlo ... usa solo la parola indicata dall'esercizio.
    Eh, è quello il problema... teoricamente dovrei essere in grado di risolverlo con le basi che mi sono state fornite [string, cout, cin, if, else ed i soli operatori matematici (/, *, -, +, <, >, =, <=, >=)], ma una volta acquisita la stringa corrispondente al giorno non riesco a capire come usarla per far apparire il messaggio
Devi accedere o registrarti per scrivere nel forum
24 risposte