Espressioni con operatori ?

Messaggioda simonerusso64 » 15/08/2018, 17:02

Codice:
(x == 2 || x-- == -1 && !(y - x) >= 0) && ((y > x-- ? x : y--) == y < x)


[1] y=1; x=3
[2] y=0; x=2
[3] y=1; x=2

Risposta : [3]

Io ho :
2==2 vero
Valuto quindi :
&& ((y > x-- ? x : y--) == y < x)
1>2 falso, quindi ho y--
(y--)==y<x
1(che decrementerò alla fine)==1<1(che ho decrementato precedentemente)
Ma 1<1 è falso, quindi 0.
Alla fine ho 1==0 che è falso.

Quindi dov'è che sbaglio ?
simonerusso64
Junior Member
Junior Member
 
Messaggio: 76 di 212
Iscritto il: 30/10/2017, 22:44

Re: Espressioni con operatori ?

Messaggioda vict85 » 15/08/2018, 17:15

Qual è la domanda? E quali sono i valori iniziali delle variabili?
vict85
Moderatore
Moderatore
 
Messaggio: 9354 di 19253
Iscritto il: 16/01/2008, 00:13
Località: Berlin

Re: Espressioni con operatori ?

Messaggioda simonerusso64 » 15/08/2018, 17:18

La traccia dell'esercizio è la seguente :
Data una coppia di interi (y, x), indicare per quali valori di (y, x) la seguente espressione risulta vera.
simonerusso64
Junior Member
Junior Member
 
Messaggio: 77 di 212
Iscritto il: 30/10/2017, 22:44

Re: Espressioni con operatori ?

Messaggioda vict85 » 15/08/2018, 18:44

Personalmente trovo che al tuo professore piaccia mettere in difficoltà gli studenti.

Supponiamo che si abbia x == 2 e y == 1. Allora x == 2 è vero e quindi anche (x == 2 || x-- == -1 && !(y - x) >= 0) è vero. I valori di x e y non sono cambiati.
Quindi y è minore di x, quindi la il blocco ritorna y (ovvero 1) e diminuisce y e x di \(\displaystyle 1 \). Siccome y è ancora minore di x si ha 1 == true, che è vero.
vict85
Moderatore
Moderatore
 
Messaggio: 9355 di 19253
Iscritto il: 16/01/2008, 00:13
Località: Berlin

Re: Espressioni con operatori ?

Messaggioda simonerusso64 » 15/08/2018, 19:30

Non ho ancora capito come valuti questa espressione :

Codice:
((y > x-- ? x : y--) == y < x)


Io ho un'espressione condizionale, che risultando falsa, considero solo y-- e decremento la x portandola a 1 .
Ora ho (y--)==y<x
Ma y<x mi risulta falsa perchè x e y mi risultano 1.
simonerusso64
Junior Member
Junior Member
 
Messaggio: 78 di 212
Iscritto il: 30/10/2017, 22:44

Re: Espressioni con operatori ?

Messaggioda vict85 » 15/08/2018, 20:16

Questi due codici sono equivalenti:
Codice:
bool test1(int x, int y) {
    return ((y > x-- ? x : y--) == y < x);
}

bool test2(int x, int y) {
    int value1 = (y > x-- ? x : y--);
    return value1 == y < x;
}
vict85
Moderatore
Moderatore
 
Messaggio: 9356 di 19253
Iscritto il: 16/01/2008, 00:13
Località: Berlin

Re: Espressioni con operatori ?

Messaggioda simonerusso64 » 15/08/2018, 20:46

Ok, allora se ho capito bene la situazione è questa :
value1=y-- (quindi assegno a value1 il valore 1 e poi decremento la y, portandola a 0)
Ora ho :
value1 == 0<1 ( poichè ho decrementato anche la x precedentemente) , quindi 0<1 è vero
1=1

Giusto ?
simonerusso64
Junior Member
Junior Member
 
Messaggio: 79 di 212
Iscritto il: 30/10/2017, 22:44

Re: Espressioni con operatori ?

Messaggioda vict85 » 16/08/2018, 12:44

Si, è così.
vict85
Moderatore
Moderatore
 
Messaggio: 9358 di 19253
Iscritto il: 16/01/2008, 00:13
Località: Berlin


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite