Help c++
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Visualizzazione risultati da 1 a 5 di 5

Discussione: Help c++

Cambio titolo
  1. #1
    Cecchino L'avatar di Brolyssj4
    Registrato il
    12-06
    Località
    Oslo
    Messaggi
    1.901

    Help c++

    sto realizzando un programma che permette di verificare se l'anno è bisestile o no, il problema è che il programma viene compilato senza problemi,ma quando inserisco l'anno non mi dice se è bisestile o no, ma spunta "premere un tasto per terminare il programma";cosa devo cambiare nel codice?
    il codice è questo:
    Spoiler:
    #include <iostream>
    #include <cstdlib>

    using namespace std;

    int anno2;

    int main(){

    cout<<"Inserisci l'anno\n";
    cin>>anno2;
    int annobisestile(anno2);

    system("pause");
    return 0;
    }
    int annobisestile(int anno){
    if(((anno&#37;4==0)&&(anno%100 !=0)) || (anno%400==0))
    cout<<"L'anno e' bisestile!\n";
    else
    cout<<"L'anno non e' bisestile\n";
    return anno;
    }
    Firma rimossa per peso eccedente il limite imposto dal Regolamento (40960 byte).
    Saverione

  2. #2
    Bannato L'avatar di Eclipse
    Registrato il
    02-04
    Località
    C++atania
    Messaggi
    5.604
    togli system("pause"); e metti un altro cin>>anno2;

    &#232; il comando pause di dos che ti fa apparire quel messaggio, mettendo un altro cin costringi il tuo programma ad aspettare un input dall'utente prima di chiudersi
    Ultima modifica di Eclipse; 29-09-2007 alle 12:13:58

  3. #3
    Utente L'avatar di ndakota
    Registrato il
    07-06
    Località
    Milano
    Messaggi
    3.253
    in alternativa puoi usare cin.get(); che basta premere invio..

  4. #4
    l' oscuro nemico L'avatar di morgoth90
    Registrato il
    05-06
    Località
    C LikeLandia
    Messaggi
    2.275
    Codice:
    int main(){
        
        cout<<"Inserisci l'anno\n";
        cin>>anno2;
         int annobisestile(anno2);
    
        system("pause");
        return 0;
    }
    si ma qu&#236; richiama la funzione in modo sbagliato



    ESISTE UN UNICO AMMINISTRATORE


  5. #5
    Ci sono vari errori concettuali, il primo che ti hanno gi&#224; fatto notare &#232; che vai a richiamare una funzione in modo sbagliato. Il secondo invece &#232; che vai a fare una cosa inutile, cio&#232; vai ad effettuare una funzione di tipo int, quando questo non serve, infatti restituisci il parametro "anno" che hai fini del programma &#232; superfluo e inutile, visto che il valore non viene neanche modificato dalla funzione che vai a chiamare, quindi devi fare una funzione di tipo void e levare il return. Il terzo errore &#232; che fai una funzione dopo il main, questa non viene letta per niente, allora o metti un prototipo prima del main e dopo definisci la funzione (cio&#232; metti quello che dovr&#224; fare) in questo modo:
    Codice:
    void funzione(parametro);
    int main {
    ..
    ..
    }
    void funzione(parametro) { //qui la svolgi
    cout<<"blablabla";
    ...
    ...
    }
    Altrimenti non metti per niente il prototipo e fai direttamente la funzione prima del main in questo modo:
    Codice:
    void funzione(parametro) { //qui la svolgi
    cout<<"blablabla";
    ...
    ...
    }
    int main {
    ..
    ..
    }
    Tuttavia ti consiglio la prima che &#232; molto pi&#249; elegante, in definitiva il codice corretto da tutti gli errori &#232; il seguente:
    Codice:
    #include <iostream>
    #include <cstdlib>
    
    using namespace std;
    //prototipo
    void annobisestile(int anno);
    //programma principale
    int main(){
        int anno2;
        cout<<"Inserisci l'anno\n";
        cin>>anno2;
        annobisestile(anno2);
        system("pause");
        return 0;
    }
    //svolgo la funzione
    void annobisestile(int anno){
        if(((anno&#37;4==0)&&(anno%100 !=0)) || (anno%400==0))
           cout<<"L'anno e' bisestile!\n";
        else
           cout<<"L'anno non e' bisestile\n";
    }
    N.B. La variabile anno2 l'ho dichiarata nel main, e non come hai fatto tu in precedenza, che hai praticamente dichiarato un parametro globale che si poteva usare in tutte le funzioni e in quel caso sarebbe stato inutile anche il passaggio dei parametri nella funzione, ma non credo che fosse quello che avevi intenzione di fare, difatti in quel modo bastava rinsolvere cos&#236;:
    Spoiler:

    Codice:
    #include <iostream>
    #include <cstdlib>
    
    using namespace std;
    //prototipo
    void annobisestile();
    //parametro globale che posso usare dapertutto.
    int anno2;
    //programma principale
    int main(){
    int anno2;
    cout<<"Inserisci l'anno\n";
    cin>>anno2;
    annobisestile();
    //system("pause");
    return 0;
    }
    //svolgo la funzione
    void annobisestile(){
    //come vedi non passo parametri ma uso solo la variabile globale.
    if(((anno2%4==0)&&(anno2%100 !=0)) || (anno2%400==0))
    cout<<"L'anno e' bisestile!\n";
    else
    cout<<"L'anno non e' bisestile\n";
    }
    Per&#242; questo &#232; un metodo sconsigliato, meglio fare come prima.

    Spero di essere stato chiaro. CIao.
    Ultima modifica di bomber88m; 29-09-2007 alle 17:36:30
    L'ingegnere quantistico Seth Lloyd è convinto che
    l'universo sia un gigantesco computer. Speriamo non faccia girare Windows.

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •