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

Moderatore
Staff Forum
Utente Èlite
2,222
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
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
6,440
5,091
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 unito automaticamente:

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.

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili