DOMANDA && o ||

MPG

Utente Attivo
544
4
INserire un numero tra 1 e 10 se dispari stop programma
Se metto || nella condizione del while viene giusto se metto && no riesco a capire il perchè.
Sempre grazie.


Codice:
#include <iostream>

using namespace std;

int main()
{
    int n;
   do
   {
   cin>>n;


   }
   while((n%2==0)&& (n>=10));
   cout<<"inserisci numero :" <<n;

}
 

fabrideci

Nuovo Utente
40
4
INserire un numero tra 1 e 10 se dispari stop programma
Se metto || nella condizione del while viene giusto se metto && no riesco a capire il perchè.
Sempre grazie.


Codice:
#include <iostream>

using namespace std;

int main()
{
    int n;
   do
   {
   cin>>n;


   }
   while((n%2==0)&& (n>=10));
   cout<<"inserisci numero :" <<n;

}
Perché la condizione deve essere che n sia <= 10 e non maggiore, in questo caso gli stai dicendo: "Finché il numero inserito è dispari e maggiore uguale di 10 vai avanti" che non è quello che cerchi tu visto che vuoi un numero tra 1 e 10 e non maggiore. :ok:
 
Ultima modifica:
  • Mi piace
Reazioni: dgcross

MPG

Utente Attivo
544
4
Ma n%2==0 significato che il resto è uguale a 0 quindi è pari....
Quindi in pratica io penso che se il numero è dispari e <10 il tutto si blocca.. ma non è cosi'....
 

fabrideci

Nuovo Utente
40
4
Ma n%2==0 significato che il resto è uguale a 0 quindi è pari....
Quindi in pratica io penso che se il numero è dispari e <10 il tutto si blocca.. ma non è cosi'....

Forse allora stai sbagliando qualcosa nella sequenza delle operazioni, su C++ posso aiutarti poco, ma sicuramente posso dirti che la condizione nel while è corretta così perché gli stai chiedendo di proseguire solo nel caso che n sia allo stesso tempo pari (resto della divisione per 2 uguale a 0) e minore uguale di 10.


Sent from my iPhone using Tapatalk
 

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
Windows 10 64bit
INserire un numero tra 1 e 10 se dispari stop programma
Se metto || nella condizione del while viene giusto se metto && no riesco a capire il perchè.
Sempre grazie.


Codice:
#include <iostream>

using namespace std;

int main()
{
    int n;
   do
   {
   cin>>n;


   }
   while((n%2==0)&& (n>=10));
   cout<<"inserisci numero :" <<n;

}
Riguardati l'AND logico. Il while per essere vero richiede che il numero inserito sia pari e maggiore di 10.
 

MPG

Utente Attivo
544
4
SCusa non ci arrivo perdonami
Avendo scritto "while((n%2==0)&& (n>=10));" non dovrebbe proseguire appunto il ciclo finchè il numero è pari o maggiore di 10 appunto?
 

fabrideci

Nuovo Utente
40
4
SCusa non ci arrivo perdonami
Avendo scritto "while((n%2==0)&& (n>=10));" non dovrebbe proseguire appunto il ciclo finchè il numero è pari o maggiore di 10 appunto?

No, && (pronunciato “AND”) significa che entrambe le condizioni devono essere verificate, quindi proseguirà solo se il numero è pari e contemporaneamente maggiore di 10.


Sent from my iPhone using Tapatalk
 

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
Windows 10 64bit
SCusa non ci arrivo perdonami
Avendo scritto "while((n%2==0)&& (n>=10));" non dovrebbe proseguire appunto il ciclo finchè il numero è pari o maggiore di 10 appunto?
Avendo scritto "while((n%2==0)&& (n>=10));" non dovrebbe proseguire appunto il ciclo finchè il numero è pari E maggiore di 10 appunto?
Con l'&& per essere vera devono essere entrambe vere, con || basta che almeno una sia vera.
Tagliandotela sottile: con && significa "ripeti il ciclo finchè il numero è pari E il numero è maggiore di 10". Con l'|| è "ripeti il ciclo finchè il numero è pari O maggiore di 10".
Se inserisci 13, con l'&& ti esce perchè è si maggiore di 10, ma non è pari. Con l'|| ti rimane nel ciclo perchè non è dispari, ma è comunque maggiore di 13.
 

MPG

Utente Attivo
544
4
..Con l'|| ti rimane nel ciclo perchè non è dispari, ma è comunque maggiore di 13.

Ma 13 scusa è dispari.... e poi il numero per rimanere dle ciclo secondo il testo dovrebbe essere >10 giustamente..
 
Ultima modifica:

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
Windows 10 64bit
Comunque il while non corrisponde alla consegna. Se inserisci
..Con l'|| ti rimane nel ciclo perchè non è dispari, ma è comunque maggiore di 13.

Ma 13 scusa è dispari.... e poi il numero per rimanere dle ciclo secondo il testo dovrebbe essere >10 giustamente..
Dai, ho sbagliato a scrivere :asd:. Rimane nel ciclo perchè non è pari* ma è comunque maggiore di 10*.
 

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
Windows 10 64bit
Comunque. devi controllare che il numero sia anche maggiore di 1.
 
Ultima modifica:

Mursey

Super Moderatore
Staff Forum
Utente Èlite
8,243
5,674
INserire un numero tra 1 e 10 se dispari stop programma
A essere precisi non viene detto cosa fare nel caso il numero non sia tra 1 e 10, probabilmente non deve fermarsi ma solo segnalare la cosa.
In quel caso ci le condizioni non devono stare insieme.
 

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

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili