RISOLTO [C++] Condizione Composta Ciclo While

Stato
Discussione chiusa ad ulteriori risposte.

davicos

Utente Attivo
226
11
Salve a tutti,
vorrei fare questo esercizio usando il ciclo While: "Somma 10 numeri interi e comunica la somma dopo averli letti o quando viene inserito lo 0".
Il codice, da me scritto, è il seguente:

C++:
#include <iostream>

using namespace std;

int main()
{
    int x;
    int n = 5, somma = 0;
    int k = 0;

    while (x != 0 || k != n)
    {
        cout << "Inserire Numero: ";
        cin >> x;

        somma = somma + x;
        k++;
    }

    cout << "Somma: " << somma << endl;
    
return 0;
}

Se la condizione nel While è una sola il programma funziona ma con entrambe no. Dove sbaglio?

Grazie.
 

DispatchCode

Utente Attivo
1,154
761
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
HDD
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
GPU
Nvidia Geforce GTX 960M, 4GB
Audio
Realtek
Net
30Mbps/3Mbps con Eolo
OS
Windows 10 64bit
Sbagli ad esempio nel non inizializzare x. Così facendo x avrà un qualche valore, che sarà diverso da 0, e quindi la condizione risulterà vera (questo nel primo ciclo).
Inoltre è sbagliata la condizione: se x è uguale a 0 ma k è < n, allora il tuo ciclo viene eseguito comunque.
Il tuo ciclo deve essere ripetuto quando x != 0 && k != n.

Oppure, detto diversamente: deve essere interrotto quando x == 0 || k == n.

Puoi anche contrarre la forma utilizzata nella somma, facendo somma += x.
 

Andretti60

Utente Èlite
4,556
3,194
Queste domande fanno capire il perché nei primi corsi di calcolatori si fanno maree di esercizi sulle tabelle di verità.
https://it.m.wikipedia.org/wiki/Tabella_della_verità

A parte quello, per mia esperienza non è mai un buon motivo cercare di raggruppare tutte le condizioni in una sola istruzione, perché rende il programma molto difficile da mantenere e modificare. Certo, come in questo caso è molto elegante, esiste una condizione sola quindi è facile da capire. Ma il mondo reale è sempre diverso, tra una settimana ci viene chiesto di cambiare il codice ed ecco che quella condizione non è più valida e occorre impazzirci nuovamente.
 

davicos

Utente Attivo
226
11
Il problema l'ho già risolto in un altro modo ma la mia domanda è proprio come faccio usando il ciclo While.
Qualche idea?
Post automatically merged:

Scusa, ho letto adetto l'altra risposta. Usando l'operatore "and" funziona. Circa l'abreviazione sì, la conosco, ma preferisco vedere bene cosa fa ogni singola riga. Mi trovo meglio così.

Comunque grazie!
 
Ultima modifica:
Stato
Discussione chiusa ad ulteriori risposte.

Entra

oppure Accedi utilizzando

Hot: E3 2021, chi ti è piaciuto di più?

  • Ubisoft

    Voti: 30 22.6%
  • Gearbox

    Voti: 2 1.5%
  • Xbox & Bethesda

    Voti: 87 65.4%
  • Square Enix

    Voti: 10 7.5%
  • Capcom

    Voti: 6 4.5%
  • Nintendo

    Voti: 18 13.5%
  • Altro (Specificare)

    Voti: 11 8.3%

Discussioni Simili