Io ho risolto come segue.
Il programma mi sembra che funzioni ma non è ancora stato corretto dal docente quindi magari ci possono essere errori.
Ah, da specifiche se l'utente iserisci un numero non binario il programma termina.
#include <stdio.h>
int main() {
int val1, val2; //valori inseriti dall'utente
int bit1, bit2; //bit meno significativi di volta in volta
int riporto = 0;
int somma;//somma di un bit alla volta
int finale;//risultato finale
int posizione;//posizione del bit aggiunto in testa al risultato finale
int flag = 1; //1 significa VALORE VALIDO
//istruzioni per l'utente
printf("***ISTRUZIONI***");
printf("\nIl programma esegue la somma di numeri binari.\n");
printf("Inserisci due numeri assicurandoti siano in notazione binaria per effetuare la somma.\n");
printf("Attenzione: il bit più significativo deve essere 1.\n");
//inserimento valori
printf("Primo valore: ");
scanf("%i", &val1);
printf("Secondo valore: ");
scanf("%i", &val2);
finale = 0;
posizione = 1;//inizio dal bit meno significativo
//verifica valori e eventuale somma
while((val1 != 0 || val2 !=0) && flag==1){
bit1 = val1 % 10;
bit2 = val2 % 10;
//somma dei bit se validi altrimenti segnalo di uscire dal ciclo
if((bit1 != 1 && bit1 != 0) || (bit2 != 1 && bit2 != 0))
flag = 0;
else{
somma = bit1 + bit2 + riporto;
if (somma > 1) // verifico se c'è un nuovo riporto
riporto = 1;
else
riporto = 0;
if (somma == 1 || somma == 3)
finale = finale + posizione;
}
val1 = val1 / 10;
val2 = val2 / 10;
posizione = posizione * 10;
}
if (riporto==1)
finale += posizione;
if (flag == 0)
printf("Errore! Valore non binario.\n");
else
printf("Risultato: %i\n", finale);
return 0;
}
P.s. spero che il codice sia chiaro