Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Python - Un traduttore?
Forum - Python - Un traduttore?

Avatar
Dice (Normal User)
Expert


Messaggi: 238
Iscritto: 26/11/2011

Segnala al moderatore
Postato alle 16:08
Mercoledì, 04/01/2012
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 !

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 16:29
Mercoledì, 04/01/2012
Codice sorgente - presumibilmente Python

  1. #include <stdio.h>
  2.  
  3. int prop(int x, int y){
  4.   return x && y;
  5. }
  6.  
  7. int main(void){
  8.   int vals[2] = {0, 1};
  9.   int i, j;
  10.   for (i = 0; i<2; i++){
  11.     printf("x=%d", vals[i]);
  12.     for (j = 0; j<2; j++){
  13.        printf("y=%d",vals[j]);
  14.        if (prop(vals[i], vals[j])) printf("\tSI");
  15.        else printf("\tNO");
  16.     }
  17.   }
  18.  
  19.   return 0;
  20. }



edit: corretto i due errori grossolani... grazie shocker000

Ultima modifica effettuata da pierotofy il 05/01/2012 alle 16:18


Il mio blog: https://piero.dev
PM Quote
Avatar
Shocker000 (Member)
Rookie


Messaggi: 44
Iscritto: 06/11/2011

Segnala al moderatore
Postato alle 22:44
Mercoledì, 04/01/2012
Testo quotato

Postato originariamente da pierotofy:

Codice sorgente - presumibilmente Python

  1. #include <stdio.h>
  2.  
  3. int prop(int x, int y){
  4.   return x && y;
  5. }
  6.  
  7. int main(void){
  8.   int vals[1] = {0, 1};
  9.   int i, j;
  10.   for (i = 0; i<1; i++){
  11.     printf("x=%d", vals[i]);
  12.     for (j = 0; j<1; j++){
  13.        printf("y=%d",vals[j]);
  14.        if (prop(vals[i], vals[j])) printf("\tSI");
  15.        else printf("\tNO");
  16.     }
  17.   }
  18. }





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 :)

PM Quote
Avatar
Dice (Normal User)
Expert


Messaggi: 238
Iscritto: 26/11/2011

Segnala al moderatore
Postato alle 15:59
Giovedì, 05/01/2012
In teoria l'unico errore dovrebbe essere: vet  [2].
Per i due cicli for dovrebbe andar bene con 1.


PM Quote
Avatar
Shocker000 (Member)
Rookie


Messaggi: 44
Iscritto: 06/11/2011

Segnala al moderatore
Postato alle 16:29
Giovedì, 05/01/2012
Testo quotato

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 :)

PM Quote
Avatar
Dice (Normal User)
Expert


Messaggi: 238
Iscritto: 26/11/2011

Segnala al moderatore
Postato alle 18:18
Giovedì, 05/01/2012
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

PM Quote
Avatar
Shocker000 (Member)
Rookie


Messaggi: 44
Iscritto: 06/11/2011

Segnala al moderatore
Postato alle 19:48
Giovedì, 05/01/2012
Testo quotato

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 :)

PM Quote