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;
}
 
Ferramentas persoais