Just nu i M3-nätverket
Gå till innehåll

Applicera loop i if-sats?


Tobbz

Rekommendera Poster

Håller på med ett litet project som skall kolla om ett ord är en palindrom (ord som är lika från båda håll, t.ex. naturrutan) eller inte, detta skall göras genom listor, men för att får en någolunda hyfsad kontrollering behöver jag in if-sats med en loop.. Ngn som har koll på hur man gör?

 

Länk till kommentar
Dela på andra webbplatser

Vet inte varför du vill använda en loop, det här är ju ett givet fall där en rekursiv funktion löser problemet. Vet dock inte om detta är ngt ni berört ännu.

 

Länk till kommentar
Dela på andra webbplatser

#include <stdio.h>

#include <string.h>

int main(int argc,char **argv) {

char *s=argv[1],*p1=s,*p2=s+(strlen(s)-1);

while(p2>=p1 && *p1==*p2) p1++,p2--;

if(p1==p2 || (p2-p1)<1)

fprintf(stderr,"palindrom found..");

}

 

Länk till kommentar
Dela på andra webbplatser

Rekursiva funktioner är inget vi har berört i kursen, och min handledare vidhåller att jag skall ha en loop i if satsen eftersom att jag måste jämföra bokstav för bokstav för att if satsen skall gå igenom, ngn koll på hur man får in loopen?

 

Länk till kommentar
Dela på andra webbplatser

Hur skulle du använda rekursiv funktion för att lösa detta ?

Ser inte självklarthete i det, lite nyfiken bara...

Ok, självklart kanske det inte är, det är ju en ganska enkel uppgift och löses lika lätt iterativt, men lämnar ett exempel i lördagspseudo-kod =)

 

Function OppositesMatch(List,StartIndex,EndIndex)
...FoundMatch=(List[startIndex] EQ List[EndIndex])
...If (StartIndex >= EndIndex-1)
.......Return (FoundMatch)
...Else
.......Return (OppositesMatch(List,StartIndex+1,StartIndex-1)
End Function

 

 

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...