Oppure

Loading
11/01/11 20:23
ciao888
#include<iostream.h>
	 main()
	 {
	  int a;
	  cin >> a;
	  int c = a % 3;
	  int b = a && c;
	  if (!a)
	    {
	     if(c) cout << "risultato 1" << '\n';
	     if(b) cout << "risultato 2" << '\n';
	      else cout << "risultato 3" << '\n';
	    }
	    else cout << "risultato 4" << '\n';

	  }

è un programmino molto semplice,devo scrivere l'output,il mio problema è quando scrive if(!a),if(c),a cosa si riferisce?non mette un'istruzione,grazie
Ultima modifica effettuata da ciao888 11/01/11 20:25
aaa
11/01/11 20:47
HeDo
Postato originariamente da ciao888:

#include<iostream.h>
	 main()
	 {
	  int a;
	  cin >> a;
	  int c = a % 3;
	  int b = a && c;
	  if (!a)
	    {
	     if(c) cout << "risultato 1" << '\n';
	     if(b) cout << "risultato 2" << '\n';
	      else cout << "risultato 3" << '\n';
	    }
	    else cout << "risultato 4" << '\n';

	  }

è un programmino molto semplice,devo scrivere l'output,il mio problema è quando scrive if(!a),if(c),a cosa si riferisce?non mette un'istruzione,grazie


il sistema di valutazione delle espressioni del C è molto semplice, si basa su una dicotomia fondamentale: nullo e non nullo.

NULLO (falso) è quando il valore dell'espressione è 0
NON NULLO (vero) è quando il valore dell'espressione è diverso da 0

quindi ogni if(variabile) può essere riscritto come if(variabile != 0)
di rimando, ogni if (!variabile) equivale a if(variabile == 0)
aaa
11/01/11 20:50
ciao888
ah capito,quindi quando scrive if(!a) intende dire :''se a è diverso da a'' entro nel ciclo,ma è impossibile
aaa
11/01/11 20:55
ciao888
un'ultima cosa,quando scrive if(c) intende dire: se c=c entro nel ciclo?lo stesso vale per if (b) che quindi significa : se b è uguale a b
aaa
11/01/11 20:55
a_butta
Postato originariamente da ciao888:

ah capito,quindi quando scrive if(!a) intende dire :''se a è diverso da a'' entro nel ciclo,ma è impossibile


No, quando scrivo if(!a) intendo dire: "se a è diverso da 0" entro nel ciclo, il chè è possibile. Attenzione a quel "diverso da 0": l'informatica lavora per numeri quindi 0 è una qualsiasi variabile nulla, come può esserlo un array di 0 elementi, una stringa vuota "", una variabile booleana impostata su false, o anche un numero vero e proprio.

@HeDo: Giacchè che ci sono volevo chiederti: if (-1), -1 è diverso da 0 ma viene considerato true o false. E gli altri numeri negativi?
aaa
11/01/11 21:06
ciao888
scusate ma qualcosa non mi torna,il professore chiedeva quale valore dare in input affinchè leggessi "il risultato è 3",la risposta è zero,ma da come dice a_butta con a=0 non potrei entrare nell'if a quanto pare
aaa
11/01/11 21:15
a_butta
Frena mi sa che stai facendo confusione.
Allora la condizione che legge l'IF si esprime SEMPRE tramite un valore booleano, che in numero vale 0--> False, !0 --> True
Ma questo valore può essere espresso tanto da una condizione tanto da un valore preimpostato:
if (a) {
  cout<<"A è diverso da 0 e vale "<<a;
}
if (!a) {
  cout<<"A è nullo, se è un numero vale 0";
}


ma anche:

if (a == 3)  {
  cout<<"A vale 3";
}
if (a != 3) {
  cout<<"A non vale 3, ma vale: "<<A;
}


in questo ultimo caso l'espressione
a == 3 restituisce una variabile di valore 1 se a è 3, mentre 0 se a è diverso da tre
a != 3 restituisce una variabile di valore 1 per tutti i valori di a diversi da tre, 0 se a è tre

Vedi (a==3) come una sorta di variabile intermedia b:
B è TRUE se a è 3, altrimenti diventa FALSE
aaa
11/01/11 21:24
ciao888
sì questo ok,però siccome dato il programma:
#include<iostream.h>
	 main()
	 {
	  int a;
	  cin >> a;
	  int c = a % 3;
	  int b = a && c;
	  if (!a)
	    {
	     if(c) cout << "risultato 1" << '\n';
	     if(b) cout << "risultato 2" << '\n';
	      else cout << "risultato 3''<< '\n';
	    }
	    else cout << "risultato 4" << '\n';

	  }

il prof ha detto che il valore in input,cioè a,deve essere uguale a zero per avere la scritta''risultato tre'',ma se if(!a) significa a!=0 allora con a =0 non entrerei nell'if,e quindi non otterrei la scritta "risultato 3'',non intendevo a=3 ma la scritta ''risultato 3'',e secondo il prof la ottengo con a=0
Ultima modifica effettuata da ciao888 11/01/11 21:28
aaa