Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    35

    [C++] riga di codice indecifrabile

    ciao a tutti!!!
    qualcuno può aiutarmi a capire come funziona questa riga d codice:
    codice:
    for(x=1,a=n=0; n<10; n+=x++) a+=n;
    in C++???
    vi scrivo tutto il programmino
    codice:
    #include<iostream>
    using namespace std;
    
    int main(){
    int x,a,n;
    for(x=1,a=n=0; n<10; n+=x++) a+=n; //la riga che nn capisco è questa!!!
    cout<<x;
    system("pause");
    return 0;
    }
    Precisazioni doverose: 1)l'output a video è 5
    2)io uso Dev-C++ 4.9.8.0
    grazie mille in anticipo per l'aiuto

  2. #2
    Utente di HTML.it L'avatar di dannie
    Registrato dal
    Aug 2005
    Messaggi
    336
    Ma che carina!!
    Allora, è un ciclo con:
    - condizioni iniziali: a=0; n=0; x=1
    - condizione finale: n<10
    - "corpo": a=a+n;
    - incremento: n=n+x; x=x+1;
    In pratica, parte con a=0, ci somma n (a=0), poi fa l'incremento (n=1, x=2); ripete e alla fine del secondo giro hai a=1, n=3, x=3; alla fine del terzo a=4, n=6, x=4; alla fine del quarto a=10, n=10, x=5. A quel punto la condizione finale non è più rispettata e viene stampato 5!
    ...bellino!!

  3. #3
    Allora :
    codice:
    x=1,a=n=0 inizializza le variabili
    codice:
        
    n<10      effettua il loop finche n<10
    codice:
    a+=n;     corpo del for
               a=a+n
    codice:
    n+=x++    modifica la variabile di controllo del ciclo in modo che
               x=x+1
               n=n+x

  4. #4
    Utente di HTML.it L'avatar di newbie
    Registrato dal
    Dec 2005
    Messaggi
    299

    Re: [C++] riga di codice indecifrabile

    Originariamente inviato da folk3n
    ciao a tutti!!!
    qualcuno può aiutarmi a capire come funziona questa riga d codice:
    codice:
    for(x=1,a=n=0; n<10; n+=x++) a+=n;
    in C++???
    vi scrivo tutto il programmino
    codice:
    #include<iostream>
    using namespace std;
    
    int main(){
    int x,a,n;
    for(x=1,a=n=0; n<10; n+=x++) a+=n; //la riga che nn capisco è questa!!!
    cout<<x;
    system("pause");
    return 0;
    }
    Precisazioni doverose: 1)l'output a video è 5
    2)io uso Dev-C++ 4.9.8.0
    grazie mille in anticipo per l'aiuto
    Praticamente il rigone si può espandere in
    codice:
    x = 1;
    a = 0;
    for(n=0; n < 10; n+=x)
    {
      x++;
      a+=n;
    }
    perché:
    • a=n=0 è come dire a = 0 e n = 0;
    • x=1,a=n=0 usa il famigerato "operatore virgola" per far eseguire le due istruzioni insieme; se si fosse usato il ";" si sarebbe creata confusione con la condizione di fine ciclo;
    • n+=x++ vuol dire "aggiungi x ad n, e poi (il ++ è un post-incremento) incrementa x". Quindi, ad ogni iterazione, n aumenterà di 1, poi di 2, poi di 3...
    • chi ha scritto tuttoquestopopodiroba in una sola riga è un programmatore molto esperto di C, che ha preferito scrivere poco codice piuttosto che scriverne di comprensibile (lo sfiderei a capire al volo cosa fa quel ciclo un mese dopo everlo scritto! è un vero casino!)


    Sono d'accordo, è proprio carina VVoVe:VVoVe:VVoVe:

    Svegliati, Neo. Matrix ti possiede...

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    35
    grazie a tutti...ade è molto + chiara la storia
    beh vi svelo 1 segreto...questi sono esercizietti del 1° anno di ingegneria informatica. Ade siamo solo all'inizzio e sono già così incazzosi!!! VVoVe:

    ringrazio di nuovo tutti per la tempestività e la chiarezza nelle risposte

    cmq se vi piacciono nn temete che ne posterò sicuramente degli altri ancora + cazzuti...abbiate fede nella mia ignoranza

  6. #6
    Utente di HTML.it L'avatar di newbie
    Registrato dal
    Dec 2005
    Messaggi
    299
    VVoVe:Mingozzi, ci hai fatto aCCaPPonare la pelle!VVoVe:

    Alla faccia degli esercizietti del primo anno... a questo punto ai prof, per gli anni successivi, proporrei di dare come compitino a casa un programma gestionale completo di una sola riga di codice, da scrivere a occhi bendati, con mani e piedi legati e stando a minimo 100 metri dalla tastiera, praticamente con la sola forza del pensiero!

    A parte gli scherzi, è veramente assurdo che pretendano che studenti del primo anno (che si suppone che il C debbano ancora impararlo) capiscano righe di codice contorte come quella. Ma si sa, i prof non siamo noi.

    Svegliati, Neo. Matrix ti possiede...

  7. #7
    Utente di HTML.it L'avatar di dannie
    Registrato dal
    Aug 2005
    Messaggi
    336
    No, invece non è così assurdo! Danno spesso programmini così, corti e con qualche follia, come esercizi finali di un argomento, apposta per obbligare gli studenti a studiarsi bene e capire a fondo una certa caratteristica: in questo caso, sicuramente l'obiettivo era il post-incremento e l'ordine delle istruzioni in un ciclo... Per la serie: se riesci a capire questo, difficilmente sbaglierai ancora gli oepratori di incremento! VVoVe:
    -almeno questa è stata la mia esperienza a ingegneria...! -

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Pero', se ci pensate bene, al di la' dell'impressione che puo' fare a chi non ne vede tante, quella riga e' "banale", da anno "zero" non da primo ...

    E allora, quando si tratterà di gestire strutture complesse con puntatori (di diverso livello), puntatori a funzioni, classi, template ... insomma, non vi meravigliate tanto ...

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    35
    lol guardate questo invece...

    codice:
    #include<iostream>
    using namespace std;
    void main(){
    int x=0;
    int num=0;
    while(cin) //mi sapete dire che cacchio vuol dire??? :dhò: 
    {
    num += x;
    cin>>x;
    }
    cout<<num;
    system("pause");
    return 0;
    }
    ah preciso che l'esercizio prevede di inserire in successione 1,2,3 poi ctrl+Z infine INVIO e il risultato è 6

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    35
    ah forse ho capito...praticamente fino a che inserisco qualcosa viene eseguito il ciclo??? esatto???

    scusate se sono pesante, ma è tt mattina che studio e sono 1 po fuso VVoVe:

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 © 2025 vBulletin Solutions, Inc. All rights reserved.