Ir ao conteúdo
  • Cadastre-se

Erro no fim do arquivo


Fernando Penteado

Posts recomendados

Pessoal, sou novo aqui, se estiver postando em lugar errado, peço desculpas.

 

Estou tendo um problema em um código que estou desenvolvendo. O erro é: 171 syntax error at end of input . Um erro na última linha do código. Alguém sabe o que está acontecendo?

O código é o seguinte: 

 

#include <stdlib.h>#include <stdio.h>#include <conio.h>#include <math.h>//Definição das constantes para o cálculo#define A 1;#define B 2;#define C 3;#define D 4;#define E 5;#define F 6;#define G 7;#define H 8;#define I 9;#define J 10;#define L 11;#define M 12;#define N 13;#define O 14;#define P 15;#define Q 16;#define R 17;#define S 18;#define T 19;#define U 20;//Fim da definição//declaração da pilhatypedef struct elemento{    int numero;    struct elemento *topo;}Elemento;typedef struct pilha{    Elemento *inicio;    int tamanho;}Pilha;//fim da declaração//inicialização da pilhavoid inicializarPilha(Pilha *calculo){    calculo->inicio = NULL;    calculo->tamanho = 0;};//função para fazer o empilhamento, isto é, colocar novos dados na pilhafloat empilhar (Pilha *calculo, int dados){    Elemento *novoValor;    novoValor = (Elemento *) malloc(sizeof (Elemento));    if (novoValor == NULL){        printf ("Erro no programa");        exit (-1);    novoValor->numero = dados;    novoValor->topo = calculo->inicio;    calculo->inicio = novoValor;    calculo->tamanho++;};//função para desempilhar, ou seja, tirar dados do topo da pilhafloat desempilhar (Pilha *calculo){    Elemento *valorDesempilhado;    if (calculo->inicio = NULL)        return -1;    valorDesempilhado = calculo->inicio;    calculo->inicio = calculo->inicio->topo;    free(&valorDesempilhado->numero);    free(&valorDesempilhado);    calculo->tamanho--;};//função que executa o cálculo da operação em posfixofloat calculoPosFixo (FILE *arquivo, Pilha *calculo){    char letra;    float a, b;    letra=fgetc(arquivo);    while (letra != EOF)    {        if (calculo->tamanho == 1)            {                a = desempilhar(calculo);                printf("%f", a);            }        while (letra != '\n')        {                if (calculo->inicio ==NULL)                    empilhar(calculo, letra);                if (letra == 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U')                    empilhar(calculo, letra);                if (calculo->tamanho == 1||2 && letra == '+' | '-' | '*' | '/' | '$')                {                    printf("Erro no calculo");                    letra=fgetc(arquivo);                    while (letra != '\n')                        letra = fgetc(arquivo);                    free(calculo);                };                if (letra == '+' | '-' | '*' | '/' | '$')                {                    switch (letra){                    case '+' :                        a = desempilhar(calculo);                        b = desempilhar(calculo);                        a = a+b;                        empilhar(calculo,a);                        break;                    case '-' :                        a = desempilhar(calculo);                        b = desempilhar(calculo);                        a = a-b;                        empilhar(calculo, a);                        break;                    case '*':                        a = desempilhar(calculo);                        b = desempilhar(calculo);                        a = a*b;                        empilhar (calculo, a);                        break;                    case '/':                        a=desempilhar(calculo);                        b = desempilhar (calculo);                        a = a/b;                        empilhar (calculo, a);                        break;                    case '$':                        a = desempilhar(calculo);                        b = desempilhar(calculo);                        a = pow (a,;                        empilhar(calculo,a);                        break;                }        }        letra=fgetc(arquivo);    }};int main (void){    FILE *arquivo;    arquivo = fopen("input.txt", "at");    if (arquivo == NULL){        printf("Erro na abertura do arquivo");        exit(-1);    }    Pilha *calculo;    inicializarPilha(calculo);    calculoPosFixo(arquivo, calculo);    fclose(arquivo);}
Muito obrigado desde já

Pessoal, esse erro passou colocando 3 chaves no final, porém apareceram outros dois:

 C:\Users\Fernando\Desktop\Untitled2.c In function `float empilhar(Pilha*, int)': 

68 C:\Users\Fernando\Desktop\Untitled2.c a function-definition is not allowed here before '{' token 

68 C:\Users\Fernando\Desktop\Untitled2.c expected `,' or `;' before '{' token 

 

o outro é igual, porém em outra função. Se alguem souber qual o problema disso, por favor, me ajude.

 

Muito obrigado

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...