Index over opgaver i denne lektion   Alfabetisk indeks   Kursets hjemmeside   

Opgaver
Tegn og Tekststrenge


10.1   Funktionen strrev  

Strengomvending består i at bytte om på tegnene i en tekststreng, således at de første tegn ender med at være de sidste. Eksempelvis er strengomvendingen af "streng" lig med "gnerts".

Programmer funktionen strrev(char *str), som omvender tegnene i parameteren str. Bemærk at parameteren str både tjener som input og output parameter. Vi ønsker altså at bytte om på tegnene i det char array, som str peger på.

 


10.2   Din egen udgave af funktionen strcmp  

Funktionen strcmp fra string.h sammenligner to tekststrenge med hinanden, som beskrevet på denne slide.

Programmer din egen rekursive udgave af strcmp. En rekursiv strcmp funktion programmeres uden brug af while eller for-løkker.

Lad dig evt. inspirere at vores definition på leksikografisk ordning, som på rekursiv vis definerer en 'mindre end' operator på tekststrenge.

 


10.3   Flertals navneord  

Skriv et program som oversætter udvalgte engelske navneord fra ental til flertal. Følgende regler skal overholdes:

  1. Hvis et navneord ender i et "y" fjernes "y" og der tilføjes "ies".
  2. Hvis et navneord ender i et "s", "ch" eller "sh" tilføjes et "es".
  3. I alle andre tilfælde tilføjes et "s" til navneordet.

Udskriv hvert navneord i både ental og flertal.

Som altid skal du designe en funktion med et passende navn, og med parametre (input og evt. output). Og som altid laver vi top-down programmering ved trinvis forfinelse. Ønsker du at bruge returværdien af funktionen til noget?

Afprøv dit program på følgende engelske navneord:

Alloker plads til disse i en passende array af tekststrenge.

Denne opgave svarer til opgave 5 side 532 i 6. udgave af lærebogen

Hints: Måske er funktionen strrchr fra string.h nyttig i denne opgave. Den søger efter et tegn fra bagenden af strengen. Husk også at du blot kan tilgå tegn i en tekststreng med array subscripting operatoren: str[i]. Du kan teste om et tegn i din streng svarer til et bestemt tegn: str[i] == 'y'.

 


10.4   Længste fælles endelse af to ord  

Skriv et program med en funktion der finder og returnerer det længste fælles endelse (suffix) af to ord.

Funktionen skal have tre parametre. De to ord (to tekststrenge) skal overføres som input parametre. Den længste fælles endelse skal returneres i en output parameter (også en tekststreng). (Hvordan markerer du forskellen på en input parameter og en output parameter, som begge er tekststrenge?) Overvej hvordan der bliver allokeret plads til tesktstrengen med den fælles endelse (vil du bruge statisk eller dynamisk allokering?).

Eksempelvis er "logi" den længste fælles endelse af ordene "datalogi" og "biologi". Og den længste fælles endelse af "program" og "diagram" er "gram".

Denne opgave svarer til opgave 8 side 533 i 6. udgave af lærebogen

 


Genereret: Mandag 9. maj 2022, 14:00:01