Salve a tutti.
Sono qua per chiedere chiarimenti sulle condizioni di verità con i tipi booleani.
L'esercizio sul quale mi sono inbattuto è il seguente:
"Siano dati due file numeri1.txt e numeri2.txt contenenti entrambi un elenco di numeri interi. Si scriva una funzione int conta (A) che riceve in ingresso un vettore A a valori interi di dimensione N. La funzione restituisce il numero degli elementi di A il cui valore compare sia in numeri1.txt che in numeri2.txt."
La risoluzione è la seguente;
Non capisco perchè i tipi booleani b1 e b1 debbano essere inizializzati a false nella dichiarazione, e perchè vengono resettati a false alla fine dell'iterazione del for.Codice PHP:#include <fstream.h>
const int N=10;
int controlla (int A[N]){
fstream f, g;
boolean b1=false;
boolean b2=false;
int n=0;
for(int i=0; i<N; i++){
f.open(“numeri1.txt”, ios::in);
g.open(“numeri2.txt”, ios::in);
while(f>>n1) { if(n1==A[i]) { b1=true;
break; }
while(g>>n2) { if(n2==A[i]) { b2=true;
break; }
if(b1 && b2) n++;
b1=false,
b2=false;
f.close();
g.close();
}
return n;
}
La cosa che però mi sbubbia di più è la condizione:
Che significa? L'operatore AND restituisce TRUE se entrambi gli operandi sono TRUE, e restituisce FALSE altrimenti. Io al posto del mio professore avrei scritto:Codice PHP:if(b1 && b2) n++;
è la stessa cosa o complico solamente la condizione?Codice PHP:if(b1 && b2 =true || b1 && b2 =false) n++;
Grazie in anticipo, spero di essere stato il più chiaro possibile!

Rispondi quotando