Fundamentos:Solucións:Búsqueda de Cadea
De ASIRodeira
Escribir unha función que indique a dirección de memoria onde aparece por primeira vez cad1 dentro de cad. Se a cadea non se atopa devolverase NULL.
char *buscaCad(char *cad,char *cad1);
Solución de Xavi:
Pseudocódigo
Funcion-eDistinta
RECIBE: cad, cadlonga
DEVOLVE: 1 (verdadeiro) si cad está ó principio de cadlonga
i=0;
Mentras ((cad[i]==cadlonga[i])&&(cad[i]!=0))
i=i+1;
Fin-Mentras
Si (cad[i]==0)
devolver 0
senon
devolver 1
Fin-Si
Fin-eDistinta
Inicio-buscaCad
i=0;
Mentras (eDistinta(cad1,cadea que comeza en cad[i])) e
(non remate cad)
i=i+1;
Fin-Mentras
Si non rematou cad,
devolvemos a cadea que comenza en cad[i]
senon
devolvemos NULL
Fin-Si
Fin-buscaCad
Implementación en C
int eDistinta(char *cad, char *cadlonga) { int i=0; while((cad[i]==cadlonga[i])&&(cad[i]!=0)) i++; if (cad[i]==0) return 0 return 1; } char *buscaCad(char *cad,char *cad1) { int i=0; while ((eDistinta(cad1,&cad[i]) && (cad[i]!=0)) i++; if (cad[i]!=0) return(&cad[i]); return NULL; }



