Oppure

Loading
22/10/16 17:16
lumo
Postato originariamente da mister x:

ecco l'esecuzione del programma

scanf interpreta i numeri in formato decimale, quindi ottieni 1000001 come somma, nessun case dentro lo switch viene eseguito.
aaa
22/10/16 17:35
Scusa ... mostra tutto il codice che hai usato e con i tag CODE come ti è stato detto più volte, oppure fai solo confusione ...
Ultima modifica effettuata da 22/10/16 17:38
22/10/16 17:40
mister x
ecco tutto il codice
Ultima modifica effettuata da mister x 22/10/16 17:42
aaa
22/10/16 17:48
Potevi postare nel forum ...

Comunque, le printf/scanf dell'input non ha alcun senso ... eliminale.

E correggi la lunghezza del risultato che deve essere di 8 cifre

char risultato[]="00000000";
Ultima modifica effettuata da 22/10/16 17:59
23/10/16 13:39
AldoBaldo
Giusto per... perché non eliminare lo switch?

#include <stdio.h>

#define N_CIFRE 8

int main( int argc, char *argv[] ) {
    char ab[N_CIFRE+1]="00001010"; /* "ab" come "a binario" */
    char bb[N_CIFRE+1]="00001100"; /* "bb" come "b binario" */
    char sb[N_CIFRE+1]="00000000"; /* "sb" come "somma binaria" (00010110) */
    int i, s, r;                   /* "s" come "somma"; "r" come "riporto" */

    for( r=0, i=N_CIFRE-1; i>=0; --i ) {
        s = (ab[i]-'0') + (bb[i]-'0') + r;
        r = s > 1;
        sb[i] = '0' + s%2;
    }

    printf( "%s +\n%s =\n----------\n%s\n", ab, bb, sb );

    printf( "\nPremi \"invio\" per uscire...\n\n" );
    getchar();
    return 0;
}
Ultima modifica effettuata da AldoBaldo 23/10/16 13:42
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.