Fundamentos:Solucións:Conversión de Cadea a Número

De Wiki do Ciclo ASIR do IES de Rodeira

Escribir unha función que reciba como parámetro unha cadea de caracteres e devolva o número enteiro que está a representar.

 int cadtoint(char *cad);


Pseudocódigo

  signo=1
  total=0
  vpos=1
  Si (cadea[0]=='-') 
    cadea[0]='0';
    signo=-1;
  Fin-Si
  pos=lonxitude da cadea - 1
  Mentras (pos>=0)
    total=total+(cadea[pos]-'0')*vpos
    pos=pos-1
    vpos=vpos*10
  FinMentras
  Devolver (total*signo)

Implementación en C

int cadtoint(char *cad)
{
  int signo;
  int total;
  int vpos;
  int pos;

  total=0;
  vpos=1;
  signo=1;
  if (cad[0]=='-') 
  {
    cad[0]='0';
    signo=-1;
  }
  pos=strlen(cad)-1;
  while(pos>0)
  {
    total+=(cad[pos]-'0')*vpos;
    pos--;
    vpos*=10; 
  }
  return (total*signo);
}