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;
Pergunta
murilojssilva
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);
}
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.