#include <stdio.h>
#include <conio.h>
#include <string.h>

#define N 8

void eingabe(char zahl[N+1]);

void ausgabe(char zahl[N+1]);

void addDualZahl(char zahl1[N+1], char zahl2[N+1], char erg[N+1]);

void addZiffer(char z1, char z2, char z3, char *s, char *u);


main()
{
	char zahl1[N+1], zahl2[N+1], summe[N+1];

   eingabe(zahl1);
   eingabe(zahl2);

   addDualZahl(zahl1, zahl2, summe);
   printf("DualZahl1: \t\t"); 	  ausgabe(zahl1);
   printf("DualZahl2: \t+\t");    ausgabe(zahl2);
	printf("Ergibt: \t=\t", summe); ausgabe(summe);
   getch();

}

void eingabe(char zahl[N+1])
{
   printf("Bitte Dualzahl mit %d Ziffern eingeben\n",N);
	scanf("%s", zahl);
}

void ausgabe(char zahl[N+1])
{
	printf("%s\n",zahl);
}

void addZiffer(char z1, char z2, char z3, char *s, char *u)
{
	if (z1 == '0')
		if (z2 == '0')
      	if (z3 == '0')
         	{ *s ='0'; *u='0';}
         else
         	{ *s ='1'; *u='0';}
      else
      	if (z3 == '0')
         	{ *s ='1'; *u='0';}
         else
         	{ *s ='0'; *u='1';}
   else
		if (z2 == '0')
      	if (z3 == '0')
         	{ *s ='1'; *u='0';}
         else
         	{ *s ='0'; *u='1';}
      else
      	if (z3 == '0')
         	{ *s ='0'; *u='1';}
         else
         	{ *s ='1'; *u='1';}
}

void addDualZahl(char zahl1[N+1], char zahl2[N+1], char erg[N+1])
{
	int i;
   char ualt = '0', uneu;

   for(i = N-1; i>=0; --i)
   {
   	addZiffer(zahl1[i], zahl2[i], ualt, &erg[i], &uneu);
      ualt = uneu;
   }
   erg[N] = '\0';

}

