![]() |
Mòdul
6
![]() |
Fonaments de
Programació. Llenguatge C/C++![]() |
Pràctica ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
Pràctica
d'ampliació ![]() |
Comptar el nombre de cops que una cadena està
continguda en una altra
En aquesta pràctica farem servir la funció strstr() de la llibreria estàndard per comptar el nombre de cops que una cadena apareix en una altra cadena.
|
|||
![]() |
Desenvolupament de la pràctica
Definiu un projecte nou anomenat m6p06 i afegiu-li un arxiu de font C/C++ anomenat m6p06.cpp. Escriviu el següent codi:
Explicació del programa En aquest programa disposarem de dues cadenes entrades per teclat amb la funció gets(), és a dir, cadenes sense caràcters de retorn de línia. Les cadenes són: text[] d'un màxim de 199 caràcters, i subcadena[] d'un màxim de 9 caràcters (recordeu que es reserva un per al caràcter fi de cadena '\0'). La funció comptar() retornarà un enter que serà el nombre de cops que la cadena subcadena es troba en la cadena text. La funció comptar() declara un punter p. A aquest punter se l'assigna la funció strstr(). Aquesta funció retorna un punter a la primera aparició de la subcadena en el text. Si la subcadena no apareix en el text, la funció strstr() retorna un punter NULL, cosa que fa que se surti del bucle. Si la funció strstr() no torna un punter NULL vol dir que ha trobat una aparició de la subcadena. En aquest moment es fa:
D'aquesta forma, el punter p apuntarà al text just a continuació de la subcadena, per tal de poder aplicar de nou la funció strstr() a la resta de la cadena. També s'ha incrementat en 1 el comptador. Quan surti del bucle, aquesta variable i contindrà el nombre de cops que la subcadena apareix en el text.
|