[C++] Ciclo for - Domanda
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Visualizzazione risultati da 1 a 9 di 9

Discussione: [C++] Ciclo for - Domanda

Cambio titolo
  1. #1
    Utente L'avatar di avatarz
    Registrato il
    08-04
    Località
    Server Ω
    Messaggi
    8.113

    [C++] Ciclo for - Domanda

    Ho iniziato da poco ha studiare il C++, e sul libro che ho comprato mi chiede di fare un programma che mi trovi i numeri primi (lol, magari per voi è una niubagine ) minori di cento e siccome non riuscivo sono andato a vedere le soluzioni, ma non ho proprio capito come agisce in questo il ciclo for, qualcuno me lo saprebbe spiegare a parole come "pensa" il programma?

    Codice:
    #include <iostream>
    using namespace std;
    int main() {
      int i, j;
      bool isprime;
      for(i=1; i < 100; i++) {
        isprime = true;
        
        for(j=2; j <= i/2; j++)
        
        if((i%j) == 0) isprime = false;
        if(isprime) cout << i << " &#232; primo.\n";
      }
      return 0;
    }
    grazie tanto, e scusate il disturbo

  2. #2
    megaman
    Ospite
    praticamente il ciclo for &#232;:
    for (inizializzazione;condizione di verifica;incremento)
    e ci&#242; si ripete finch&#232; il valore prefissato in condizione di ver. non &#232; stato ottenuto ( &#232; per l'appunto un ciclo ). mi limito a dire questo se vuoi aiuto sulla logica...ora ti basta fare 2+2

  3. #3
    Utente L'avatar di devilheart
    Registrato il
    01-03
    Messaggi
    28.310
    un algoritmo per calcolare i numeri primi
    http://it.wikipedia.org/wiki/Crivello_di_Eratostene

  4. #4
    Utente L'avatar di avatarz
    Registrato il
    08-04
    Località
    Server Ω
    Messaggi
    8.113
    Citazione megaman
    praticamente il ciclo for è:
    for (inizializzazione;condizione di verifica;incremento)
    e ciò si ripete finchè il valore prefissato in condizione di ver. non è stato ottenuto ( è per l'appunto un ciclo ). mi limito a dire questo se vuoi aiuto sulla logica...ora ti basta fare 2+2
    asp, riformulo il dubbio

    il secondo ciclo [for(j = 2; j <= i/2; j++)] fa l'operazione per ogni numero assegnato alla variabile i?

    es.

    i = 1
    j = 2
    2 <= 1/2 (no)


    siccome non si verifica lo salta o si blocca? Cioè viene assegnato 3 a j

    es.

    i = 1
    j = 3
    3 <= 1/2
    j = 4
    4 <= 1/2
    ecc.


    ed esegue il comando if che la segue oppure aumenta di uno la i?

    i = 2
    j = 2
    2 <= 2/2

    isprime = true

    i = 3
    j = 2
    2 <= 3/2

    isprime = true

    i = 4
    j = 2
    2 <= 4/2 (si)
    4%2 = 0 (si)

    isprime = false

    i = 4
    j = 3
    3 <= 4/2 (no)


    ecc.

    lol, non so se mi sono spiegato

    ho sbagliato qualcosa nel ragionamento oppure la condizione if() si applica anche quando la condizione di for non viene?

    Lol non ci capisco + nulla

  5. #5
    Security admyn ^__^ L'avatar di nuk3r
    Registrato il
    12-05
    Località
    Berghem!
    Messaggi
    287
    non mancano queste parentesi?

    #include <iostream>
    using namespace std;
    int main() {
    int i, j;
    bool isprime;
    for(i=1; i < 100; i++) {
    isprime = true;

    for(j=2; j <= i/2; j++) {

    if((i%j) == 0) isprime = false;
    if(isprime) cout << i << " è primo.\n";

    }

    }
    return 0;
    }

  6. #6
    Utente L'avatar di avatarz
    Registrato il
    08-04
    Località
    Server Ω
    Messaggi
    8.113
    Citazione nuk3r
    non mancano queste parentesi?

    #include <iostream>
    using namespace std;
    int main() {
    int i, j;
    bool isprime;
    for(i=1; i < 100; i++) {
    isprime = true;

    for(j=2; j <= i/2; j++) {

    if((i%j) == 0) isprime = false;
    if(isprime) cout << i << " è primo.\n";

    }

    }
    return 0;
    }
    a me funziona, e cmq nn era questa la domanda

  7. #7
    Security admyn ^__^ L'avatar di nuk3r
    Registrato il
    12-05
    Località
    Berghem!
    Messaggi
    287
    no scusa ho sbagliato io....

    premetto che è da un po' che non faccio il c++, quindi correggetemi pure se sbaglio.....di nuovo.....

    Citazione megaman
    praticamente il ciclo for è:
    for (inizializzazione;condizione di verifica;incremento)
    e ciò si ripete finchè il valore prefissato in condizione di ver. non è stato ottenuto
    a me sembra che il ciclo si ripete mentre si verifica la condizione di verifica...
    cioè rappresenta la condizione da testare ad ogni passo del ciclo per vedere se continuare oppure uscire....

    il secondo ciclo for (credo..) esegue nel ciclo solo

    if((i%j) == 0) isprime = false;

    perchè non ha le parentesi graffe (esegue quindi solo la prima istruzione che gli capita)

    cmq il prog funziona come hai detto tu

    Citazione avatarz
    i = 1
    j = 2
    2 <= 1/2 (no)


    siccome non si verifica lo salta o si blocca?
    esce dal ciclo, mette isprime a false, fa la cout e torna al 1° for (incrementa la i)....
    la logica se fai le prove è giusta, da lì cerca di capire la "regola"

  8. #8
    megaman
    Ospite
    Citazione nuk3r
    non mancano queste parentesi?

    #include <iostream>
    using namespace std;
    int main() {
    int i, j;
    bool isprime;
    for(i=1; i < 100; i++) {
    isprime = true;

    for(j=2; j <= i/2; j++) {

    if((i%j) == 0) isprime = false;
    if(isprime) cout << i << " è primo.\n";

    }

    }
    return 0;
    }
    senza le parentesi viene presa in considerazione solo la prima espressione dopo l' if(;;

  9. #9
    Utente L'avatar di avatarz
    Registrato il
    08-04
    Località
    Server Ω
    Messaggi
    8.113
    Citazione nuk3r
    no scusa ho sbagliato io....

    premetto che è da un po' che non faccio il c++, quindi correggetemi pure se sbaglio.....di nuovo.....



    a me sembra che il ciclo si ripete mentre si verifica la condizione di verifica...
    cioè rappresenta la condizione da testare ad ogni passo del ciclo per vedere se continuare oppure uscire....

    il secondo ciclo for (credo..) esegue nel ciclo solo

    if((i%j) == 0) isprime = false;

    perchè non ha le parentesi graffe (esegue quindi solo la prima istruzione che gli capita)

    cmq il prog funziona come hai detto tu



    esce dal ciclo, mette isprime a false, fa la cout e torna al 1° for (incrementa la i)....
    la logica se fai le prove è giusta, da lì cerca di capire la "regola"
    grazie


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
  •