[Resolvido] Sintaxe C

Bom dia galera !!

Sou novo no forum, se houver algo errado me avisem… Estou cursando o segundo semestre de ADS e to vendo umas coisas por fora, porque nem tudo se aprende na faculdade kk aprendi Java no primeiro semestre, e fiz aquela famosa calculadora simples, recentemente consegui desenvolver em Python também, e estou tentando fazer em C para entender melhor a sintaxe, mas não estou conseguindo finalizar, estou usando o My Compiler só para treinar, se conseguirem me ajudar, não consigo identificar o erro.

#include <stdio.h>

int main() {

int opcao;
float num1, num2, soma, sub, mult, divi;

do{
    printf("_______________________________________");
    printf("\n -------------------------- ");
    printf("|        Calculadora       |");
    printf("|       Menu de opcao      |");
    printf("|--------------------------|");
    printf("|    1 - Adicao            |");
    printf("|    2- Subtracao          |");
    printf("|    3 - Multiplicacao     |");
    printf("|    4 - Divisao           |");
    printf("|    5 - Saida             |");
    printf(" -------------------------- ");
    
    printf("\nDigite a opcao desejada: ");
    scanf("%d", &opcao);
    
    switch (opcao) {
        case 1: 
            printf("\nInforme os valores para a soma.");
            printf("\nPrimeiro valor: ");
            scanf("%f", &num1);
            printf("\nSegundo valor: ");
            scanf("%f", &num2);
            
            soma = num1 + num2;
            
            printf("\nResultado: %f", soma); break;
        
        case 2: 
            printf("\nInforme os valores para a subtracao.");
            printf("\nPrimeiro valor: ");
            scanf("%f", &num1);
            printf("\nSegundo valor: ");
            scanf("%f", &num2);
            
            sub = num1 - num2;
            
            printf("\nResultado: %f", sub); break;
            
        case 3: 
            printf("\nInforme os valores para a multiplicacao.");
            printf("\nPrimeiro valor: ");
            scanf("%f", &num1);
            printf("\nSegundo valor: ");
            scanf("%f", &num2);
            
            mult = num1 * num2;
            
            printf("\nResultado: %f", mult); break;
            
        case 4: 
            printf("\nInforme os valores para a divisao.");
            printf("\nPrimeiro valor: ");
            scanf("%f", &num1);
            printf("\nSegundo valor: ");
            scanf("%f", &num2);
            
            divi = num1 / num2;
            
            printf("\nResultado: %f", divi); break;
        
        case 5:
            printf("Programa encerrado."); break
            exit 0; //encerrar a aplicação, não sei se é o comando correto.

        default:
            printf("Opcao invalida, digita novamente!!"); break;
    }
    
} while (opcao != -1)

return 0;

}

image

Não manjo muito de C, mas imagino que exit seja uma função. Sendo uma função, você não pode simplesmente chamar exit 0;.

Faz exit(0);. Assim você tá chamando a função e passando o parâmetro 0 pra ela.

} while (opcao != -1)

Faltou um ; no fim do while

} while (opcao != -1);

Analisando seu código, há dois problemas de sintaxe, que o compilador está apontando nas linhas 71 e 81. Ele está informando espera por ; logo após o break antes de exit 0, e também espera por ; no while no fim do programa. Adicionando ponto e vírgula nesses dois pontos do código vai ser suficiente para compilar o programa. Agora, se você deseja encerrar um programa em algum momento do código, utilize: exit(0); ou return 0; dentro da função main que é a função principal do programa (o inteiro 0 é um consenso na programação que informa que o programa finalizou com sucesso). Só atente que tudo o que vier após o break dentro de uma estrutura switch-case não será executado (no caso, exit 0 não será executado, uma vez que break fará a quebra do laço de repetição sem continuar nas próximas linhas);.

@joaov_machado cara e em que parte da função main eu colocaria ? Tem alguma diferença entre o exit(0) ou return(0) ?

Se quiser encerrar a aplicação logo após o usuário digitar -1, é uma boa ideia colocar return 0 ou exit (0) após o while. Agora, existe diferença sim entre return e exit(), a começar que exit é uma função dentro da biblioteca stdlib.h (é possível inclui-la ao programa através da diretiva do pré-processador #include <stdlib.h>) que encerra a execução do programa quando chamada. Já return é um instrução em C que devolve o controle à função chamadora.
No teu código, só existe uma função que é a main (existe a possibilidade de criar suas próprias funções em C, mas não pretendo me estender aqui), sendo assim, não há grande diferença entre utilizar exit () ou return. Só lembre-se de que exit (0) encerra o programa imediatamente, mesmo estando dentro de uma função diferente de main, return irá encerrar o programa somente caso esteja na função main.
Basicamente é isso, para mais detalhes seria necessário um conhecimento prévio sobre Funções em C.

Lembre-se de que exit é uma função, por isso é necessário o uso de parênteses para que o compilador reconheça uma chamada de função. No caso de return não há necessiade, mas o compilador não diferencia return 0 de return (0).

@joaov_machado muito obrigado !! Consegui rodar, eu to começando aprender C na faculdade, mas faço um curso por fora, só quis adiantar para não entrar cru kk