Oppure

Loading
04/01/12 15:08
Dice
Mi serve aiuto per completare un programma che mi risolva le formule logiche proposizionali. Ho trovato un esempio che mi può essere utile, l'unico problema è che è in linguaggio Pyton, che io non conosco, mentre io lavoro utilizzando il linguaggio C.
Non è che per favore mi tradurreste questo esmpio dal linguaggio Pyton al linguaggio C ?

def prop(x,y):
return (x and y)

vals = [False, True]
for x in vals:
print("x=", x)
for y in vals:
print("y=", y)
if prop(x,y):
print("\tSI";)
else:
print ("\tNO";)

Produce come risultato
x= False
y= False NO
y= True NO

x= True
y= False NO
y= True SI


Grazi mille in anticipo per l'aiuto !
aaa
04/01/12 15:29
pierotofy
#include <stdio.h>

int prop(int x, int y){
  return x && y;
}

int main(void){
  int vals[2] = {0, 1};
  int i, j;
  for (i = 0; i<2; i++){
    printf("x=%d", vals[i]);
    for (j = 0; j<2; j++){
       printf("y=%d",vals[j]);
       if (prop(vals[i], vals[j])) printf("\tSI");
       else printf("\tNO");
    }
  }

  return 0;
}


edit: corretto i due errori grossolani... grazie shocker000
Ultima modifica effettuata da pierotofy 05/01/12 15:18
Il mio blog: piero.dev
04/01/12 21:44
Shocker000
Postato originariamente da pierotofy:

#include <stdio.h>

int prop(int x, int y){
  return x && y;
}

int main(void){
  int vals[1] = {0, 1};
  int i, j;
  for (i = 0; i<1; i++){
    printf("x=%d", vals[i]);
    for (j = 0; j<1; j++){
       printf("y=%d",vals[j]);
       if (prop(vals[i], vals[j])) printf("\tSI");
       else printf("\tNO");
    }
  }
}



Ciao,

hai sbagliato a scrivere l'array vals:
int vals[2] ={0,1};
ed i due for:
for(i = 0; i < 2; i++)
ed
for(j = 0; j < 2; j++)


saluti :)
aaa
05/01/12 14:59
Dice
In teoria l'unico errore dovrebbe essere: vet [2].
Per i due cicli for dovrebbe andar bene con 1.

aaa
05/01/12 15:29
Shocker000
Postato originariamente da Dice:

In teoria l'unico errore dovrebbe essere: vet [2].
Per i due cicli for dovrebbe andar bene con 1.


No in quanto vengono eseguiti una sola volta e quindi confronti solo il primo elemnto di vals(0 && 0) e non gli altri valori.

saluti :)
aaa
05/01/12 17:18
Dice
A a a a a ... ho capitoooooo!!!
L'errore era che lui ha scritto < 1, quando invece avrebbe dovuto scrivere <= 1.
Se non ricordo ricordo male si chiama errore di imprecisione a 1...
faccio anche lintellettuale ...

Grazie mille ancora
aaa
05/01/12 18:48
Shocker000
Postato originariamente da Dice:

A a a a a ... ho capitoooooo!!!
L'errore era che lui ha scritto < 1, quando invece avrebbe dovuto scrivere <= 1.
Se non ricordo ricordo male si chiama errore di imprecisione a 1...
faccio anche lintellettuale ...

Grazie mille ancora

Si chiama "off by one"

saluti :)
aaa