Olá, gostaria de ajuda. Estou fazendo um programa que simula um compilador, cuja entrada é essa:  "Curso " + " de" + "Programação" // string + string + string  "Dia " + 8 + "de Outubro" // string + int  "Brasil, " + (3 + (2+1) + 5) + " de Setembro de " + 2000 // string + (soma de inteiros) + string + int  "Dia " + (2+1) // string + concatenação de int  "Dia " + 2 + 1 // string + soma de int  1 + 1.5 + 2 // soma de int + float + int com int sendo convertido em float  1 + 2 + 3 // soma de int  "Semestre " + 2000.1 // string + float retornando string  E a saída deve ser essa:  "Curso de Programação"  "Dia 8 de Outubro"  "Brasil, de Setembro de 2000"  "Dia 3"  "Dia 21"  4.50  6  "Semestre 2000.10" 
  
Por enquanto meu código está assim: // Sei que têm alguns erros 
  
  
#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 
#define IN 1 // dentro das aspas 
#define OUT 0 // fora das aspas 
#define INA 2  
void main() 
{ 
char c,d,s[400],aux[100],auxf[100],a[20]; 
int n,i=0,j=0, soma = 0,stai = OUT,staf = OUT, par = OUT,estpar = 0,estasp = 0,state = OUT,estnum = 0,k=0; 
float num, somaf = 0.0; 
while  ((c=getchar())!=EOF) 
{ 
  if (c == '.' && par == IN && estasp == IN) 
  { 
   staf = IN; 
   if (isdigit(d)) 
    auxf[j++] = d; 
   auxf[j++] = c; 
  } 
  else if (isdigit© && par == IN) 
  { 
    
   estnum = 1; 
   if (staf == OUT) 
   {  
    n = c - '0'; 
    soma += n; 
    n = 0; 
   } 
   else if (staf == IN) 
   { 
    auxf[j++] = c; 
    auxf[j++] = '0'; 
    auxf[j++] = '\0'; 
    num = atof(auxf); 
    somaf += num; 
    auxf[0]='\0'; 
    j=0; 
    staf = OUT; 
   } 
  } 
  else if (c == '\n') 
  { 
   if (estasp == IN ||estpar == IN || estnum == IN && estasp == IN) 
   { 
    s[i++] = '"'; 
    s[i++] = c; 
   } 
   if (par == IN) 
   {    
    if (soma != 0 && somaf == 0.0) 
    { 
     sprintf(aux, "%d", soma); 
     for (j = 0; j<strlen(aux);j++) 
      a[k++] = aux[j]; 
     aux[0] = '\0'; 
     j=0; 
     soma = 0; 
    } 
    else if (soma != 0 && somaf != 0.0) 
    { 
     somaf += (float) soma; 
     sprintf(aux, "%f", somaf); 
     for (j = 0; j<strlen(aux);j++) 
      a[k++] = aux[j]; 
     aux[0] = '\0'; 
    } 
    else if (soma == 0 && somaf != 0.0) 
    { 
     sprintf(aux, "%f", somaf); 
     for (j = 0; j<strlen(auxf);j++) 
      s[i++] = auxf[j]; 
     aux[0] = '\0'; 
    } 
   }  
   staf = OUT; 
   j = 0; 
   k = 0; 
   soma = 0; 
   somaf = 0.0; 
   state = OUT; 
   estpar = OUT; 
   estasp = OUT; 
   estnum = OUT; 
  } 
  if (c == '"') 
  { 
   estasp = IN; 
   if (state == OUT) 
   { 
    s[i++] = c; 
    state = IN; 
   } 
   else if (state == IN) 
   { 
    state = INA; 
   } 
  } 
  else if (c == '(') 
  { 
   estpar = IN; 
   if (par == OUT) 
    par = IN; 
   else if (par = IN) 
    par = INA; 
  } 
  else if (c == ')') 
  { 
   if (par == INA) 
    par == IN; 
   else if (par ==IN) 
    par == OUT; 
  } 
  else if (c == '+') 
  { 
   i --; 
  } 
  else if (isalpha© || c == ' ' && state == IN || state == INA) 
   s[i++] = c; 
  d = c; 
} 
s = '\0'; 
puts(s); 
}