Red de conocimiento del abogados - Preguntas y respuestas sobre conocimientos de patentes - Lenguaje C: saca los números enteros positivos y negativos de una cadena y súmalos

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.