algorytm odejmowania pisemnego, ilość cyfr wyniku

0

Witam,
Mam pewien problem z implementacją algorytmu pisemnego odejmowania, a dokładnie z długością różnicy. Pokażę może to co mam:

//dlz dlugosc odjemnej, dlw dlugosc odjemnika
	for(i=0; i<=dlz; i++){//odejmowanie
		z[i] -= w[i];
		if(z[i]<0){
			z[i] += 10;
			z[i+1]--;
			j=0;
		}
		else
			j=-1;
	}
 

wartość j niby miałaby zawierać ilość elementów tablicy różnicy, która jest tą samą tablicą co odjemna. znam długości odjemnej i odjemnika, ale nie wiem jak je wykorzystać. Lepiej już działa w warunku else j -= 1; ale też nie do końca poprawnie, bo jeśli wynik jest równy 0 wtedy algorytm ten jest błędny. Tablica w której zawarty jest odjemnik i odjemna są dużo dużo większe niż dlz i dlp, cyfry składowe liczb zapisane są w odwrotnej kolejności od początku tablicy zaś reszta wypełniona zerami.

0

for(i=0; (i<dlw)||(j); i++)

0

a mógłbym prosić też o ciało petli? nie bardzo wiem jak wykorzystać to co napisałeś

0

sorki, że post pod postem.
Wykombinowałem coś takiego:

	for(i=0, j=0; (i<=dlz)&&(!0); i++){//odejmowanie
		z[i] -= w[i];
		if(z[i]<0){
			z[i] += 10;
			z[i+1]--;
			if((dlz == i+1)&&(z[i+1] == 0))
				j=1;			
		}
	}
    for(i=dlz-j; i>=0; i--)//sprawdzenie
        printf("%d", z[i]);
 

Od razu z wypisywaniem wyniku, dlz na wejściu to miejsce w tablicy pierwszej cyfry odjemnej, która z kolei cyfry składowe zapisane są w odwrotnym początku, reszta tablicy do końca to zera. Sprawdziłem dla kilu różnych przypadków i działa, ale nie jestem w 100% pewny poprawności tego algorytmu

1 użytkowników online, w tym zalogowanych: 0, gości: 1