Lenguaje C: saca los números enteros positivos y negativos de una cadena y súmalos
Mi entorno de compilación es el estándar C89 y no hay ningún tipo bool, así que redefiní directamente el tipo int enNumber.
#include
#include
int sumInt(char *s)
{ int sum=0,t=0; char *p=s; int inNumber=0;? // Marco inNumber como un número negativo // Saco los enteros positivos y negativos de la cadena y los sumo while(*(p). -1 )!='\0') //Garantizado para obtener el último número { if('0'<=*p&&*p<='9')? //Es un número entero, almacena este número en t {
t=10*t+*p-48;? // t*10 equivale a llevar -48, lo que convierte los caracteres '0' a '9' en números del 0 al 9
if(*(p-1)=='-') //Si es un número negativo
inNumber=1; else //Si no es un número, suma el t anterior para sumar, y Borrar t{
if(inNumber==1)? //Es un número negativo
t=-t;
suma=suma+t;
t=0;
inNumber=0; } p++ } devuelve suma;
}
int main()
{ char s[1001]; obtiene(s); printf("%d\n",sumInt(s)); }
Si sigues la pregunta original, puedes agregar código entre los dos comentarios:
while(*(p-1)!='\0') { if(' 0'<=*p&&*p <='9')? {
t=10*t+*p-48;
if(*(p-1)== '-')?
inNumber=true } más? {
if(inNumber=true)
t=-t;
sum=sum+t;
t=0;
inNumber=false; } p++ }
Puedes
sum=sum+t;
Agrega una oración aquí
printf("%d\n",t);
Observando los cambios en el valor de No puedo entender mejor el proceso en ejecución.