Ir para conteúdo
Fórum Script Brasil

murilojssilva

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que murilojssilva postou

  1. 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); }
×
×
  • Criar Novo...