Shade skrev:
>Jeg har skrevet en funktion til at sammenligne to c-strings,
Der er et par logiske fejl i. Den grundlæggende tankegang er o.k.
> //sammenligner her de to bestemte længder
> if(lUserWord == lDiskWord)
Du kan forenkle programmet ved at teste modsat:
if(lUserWord != lDiskWord) return false;
Så forlades rutinen med det vuns, og false returneres.
> //sammenligner her hvert enkelt element
> //i de to arrays der har sammen længde
> for(int j=0; j<lDiskWord; j++)
> if(UserWord[j] != DiskWord[j])
> {
> TruthValue = false;
> break;
> }
> else
> {
> TruthValue = true;
> break;
> }
> }
> return TruthValue;
> }
Det går galt fordi du kun når at sammenligne ét eneste tegn. Det
er fint når du har fundet falsk - der er ingen grund til at gå
videre. Brug "return false" og blæs på både TruthValue og break.
Du skal ikke teste med else. Løkken får kun lov at terminere hvis
alle tegn er ens.
Og nu kan du måske se at du slet ikke får brug for TruthValue. Du
skal bare returnere true til sidst.
--
Bertel
http://lundhansen.dk/bertel/ FIDUSO:
http://fiduso.dk/