PDA

Visualizza la versione completa : [C] Conversione da binario a decimale


muddatek
09-11-2011, 16:50
ciao a tutti!

ho sempre stimato questo forum, ed ora, per motivi scolastici e di curiosità mi sono voluto iscrivere, sperando che possiate aiutarmi in questa mia prima questione.
stamane il prof di informatica ha fatto una verifica sul c. creazione di flow chart e codice di un numero di massimo 4 cifre (non è importante però, è come se le variabili avessero già massimo 4 cifre....) e di verificare se esso era o no effettivamente binario o decimale. ho provato a fare il codice e tutto, ma la mia bella mente sveglia alle 8 di mattina è riuscita a fare ben poco! arrivato a casa mi sono messo li e, nada!

il codice è il seguente, potreste aiutarmi?
#include <stdio.h>

int a,b,c,d,x;

int main () {
scanf("%d", &x);
a=x/1000;
x=(a*1000)-x;
b=x/100;
x=(b*100)-x;
c=x/10;
x=(c*10)-x;
d=x;
if ((a||b||c||d==1)&&(a||b||c||d==0)) {
printf("non binario!");
} else {
x=a*8+b*4+c*2+d*1;
printf("%d", x);
}
getchar();
}

p.s: il codice è stato creato in questo caso con xcode (apple) ma ho provato anche (cambiando gli oportuni comandi) a riscriverlo in dev c e visual studio!! niente....aiutatemi :)

grazie! confido in voi!

alka
09-11-2011, 17:04
Qual è il problema (errore o comportamento anomalo) che riscontri nella tua implementazione?

muddatek
09-11-2011, 17:09
Originariamente inviato da alka
Qual è il problema (errore o comportamento anomalo) che riscontri nella tua implementazione?

mmm....mi mette tutti i numeri "non binario!".... ho problemi con gli operatori logici....non sono un mago con quelli...

muddatek
09-11-2011, 18:36
nessuno?

oregon
09-11-2011, 18:46
Originariamente inviato da muddatek
nessuno?

Calma ... non è un servizio di risposta garantita entro un'ora ... :-)

Questa linea

if ((a||b||c||d==1)&&(a||b||c||d==0)) {

è sbagliata ... rifletti su come fare un corretto test di tutte le variabili ...

muddatek
09-11-2011, 18:50
si....ho riflettuto ma nada....help per favore xD è l0unico problema che ho riscontrato fino ad ora!......ma non so come risolverlo

oregon
09-11-2011, 18:53
Una dritta ... i confronti si fanno sempre tra due termini ... quindi

if((a==0 || b==0 ...

muddatek
09-11-2011, 18:55
gia provato anche così....ma nada! ci sto smattando vario sopra

muddatek
09-11-2011, 18:58
#include <stdio.h>

int a,b,c,d,x;

int main () {
scanf("%d", &x);
a=x/1000;
x=(a*1000)-x;
b=x/100;
x=(b*100)-x;
c=x/10;
x=(c*10)-x;
d=x;
if ((a==0||b==0||c==0||d==0) && (a==1||b==1||c==1||d==1)) {
printf("non binario!");
} else {
x=a*8+b*4+c*2+d*1;
printf("%d", x);
}
getchar();
}



ora l'ho messo di nuovo così....non binario solito problema

oregon
09-11-2011, 20:07
Originariamente inviato da muddatek
gia provato anche così....ma nada! ci sto smattando vario sopra

Non è che devi "provare" ... devi scrivere il codice corretto ... quella if era sbagliata e ora è corretta, ma non è detto che sia l'unico problema del programma.

Spiega (a noi e a te stesso)

1) cosa inserisci come valore in input

2) a cosa serve ogni riga del codice

3) cosa ti aspetti da ogni riga e cosa invece succede

Loading