Ir para conteúdo
Fórum Script Brasil
  • 0

Dev-c++ Q Merd4


Enio Marconcini

Pergunta

Caraca porque eu não consigo compilar um cod simples no dev-c++ 5 como esse abaixo:

#include <stdio.h>
#include <conio.c>

typedef struct calculadora {
   float valor1, valor2, total;
   char operacao;
   
   void menuprincipal() {
      clrscr(); 
      printf("CALCULADORA\n\n");
      printf("Digite o primeiro valor: "); 
         scanf("%f", &valor1);
      printf("\n\nOperacao a sr realizada: ");
         scanf("%c", &operacao);
      printf("\n\nDigite o segundo valor: ");
         scanf("%f", &valor2);
   }
   
   void calcula() {
      if (operacao == "+") {
         total = valor1 + valor2;
      }
      if (operacao == "-") {
         total = valor1 - valor2;
      }
      if (operacao == "/") {
         total = valor1 / valor2;
      }
      if (operacao == "*") {
         total = valor1 * valor2;
      }
   }
   
   void mostraresultado() {
      printf("\n\nResultado: %f", total);
   }
};

calculadora c;

main() {
   c.menuprincipal();
   c.calcula();
   c.mostraresultado();
   getch();
}

Dá erro em operações.... e não aceita "void main" porque ???

Existe algum outro compilador free melhor q esse ???

Bye

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Cara, me desculpe, mas suas criticas ao Dev-C++ não têm fundamentos.

Como eu disse em outro Post, a IDE é o Dev-C++, mas o compilador é o GNU GCC C++, que, convenhamos, faz parte da maior comunidade de programadores do planeta. Se não fosse um dos melhores compiladores, não seria utilizado na comunidade *nix. Criticar o compilador deles é, no mínimo, ridículo. :lol:

O seu arquivo fonte não foi compilado porque, como disse o Willian, possui erros.

Quanto ao void main(), posso dizer que é errado por, pelo menos, três motivos:

1. A ISO C++ Standard (ISO/IEC 14882:1998) explicita claramente que a função main deve, sob qualquer hipotese, retornar um valor do tipo int.

2. As funções presentes no kernel dos sistemas operacionais assumem que, ao ser carregado, o aplicativo irá colocar um valor na pilha. Se esse valor não for colocado, a pilha ficará corrompida, o que poderá levar o sistema a travamentos.

3. A declaração como void implicará no retorno de um valor aleatório correspondente ao valor que está na posição da memória onde o seu return deveria estar. Isso pode causar sérios problemas para alguém que queira depurar o seu programa e verificar se ele saiu normalmente, ou com erros.

Ainda assim, no C é permitido o uso de void main().

No C++, porém, essa prática é totalmente proibida.

Até mais,

iSoron.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, como eu tinha falado no meu post anterior...

"Não manjo nada em C"

Então, tá aqui o código, fiz no Dev C++ 5.0! biggrin.gif

Segue o código do programa:

#include <stdio.h>
#include <stdlib.h>
/*
typedef struct calculadora
{
  float valor1, valor2, total;
  char operacao;
} c;
*/
float calcular(float valor1, char operacao, float valor2);
void mostraresultado(float total);

int main()
{
     //clrscr(); 
     printf("CALCULADORA\n\n");
     printf("Digite o primeiro valor: ");
     float valor1;
     scanf("%f", &valor1);
     printf("\n\nOperacao a ser realizada: ");
     char operacao;
     scanf("%s", &operacao);
     printf("\n\nDigite o segundo valor: ");
     float valor2;
     scanf("%f", &valor2);
     float total;
     total = calcular(valor1, operacao, valor2);
     mostraresultado(total);
}

float calcular(float valor1, char operacao, float valor2)
{
     float total;
     if (operacao == '+') 
     {
        total = valor1 + valor2;
     }
     if (operacao == '-') 
     {
        total = valor1 - valor2;
     }
     if (operacao == '/') 
     {
        total = valor1 / valor2;
     }
     if (operacao == '*') 
     {
        total = valor1 * valor2;
     }
     return (total);
}

void mostraresultado(float total)
{
     printf("\n\nResultado: %f", total);
     system("PAUSE");
}

Então, como não sei C então não trabalhei com o Struct*. Tentei, mas como não manjo nada, fiz de uma outra forma. Vê se o código te ajuda, tem algumas diferenças com relação ao seu código, dá uma estudada beleza wink.gif

Espero ter ajudado...

PS: Só não consegui atribuir valores para as variáveis da Struct. Acho que é algo com gets, algo assim...

Abraços,

William Rodrigues

Link para o comentário
Compartilhar em outros sites

  • 0

Struct se não me engano é válido em C++, apenas. huh.gif

laugh.gif Cara mandaram ver...HAUHAUHAUHAUHAUHAUHAU

iSoron, humilha, mas não exculaxa. HAUHAUHAUHAUHAUHAU

Foi mal pelo meio-flood galera, mas não resisti.

Acrescentando:

Pra te ajudar, cara, muda os vários ifs em calcular() para else if. Eles melhoram o desempenho, já que na função, a operação só pode ser um caracter. Você colocando vários ifs ele vai testar várias condições, mesmo que a primeira se encaixe corretamente. Com o else if, ele pula o resto se encontrar a alternativa correta.

Link para o comentário
Compartilhar em outros sites

  • 0

Pra te ajudar, cara, muda os vários ifs em calcular() para else if. Eles melhoram o desempenho, já que na função, a operação só pode ser um caracter. Você colocando vários ifs ele vai testar várias condições, mesmo que a primeira se encaixe corretamente. Com o else if, ele pula o resto se encontrar a alternativa correta.

Exatamente...

Ou se preferir, use o Switch wink.gif

Abraços,

William Rodrigues

Link para o comentário
Compartilhar em outros sites

  • 0

Struct se não me engano é válido em C++, apenas.

Na verdade struct pode ser usado em C. Qualquer compilador C reconhece struct, mas usar struct em C++ é diferente de usar struct em C.

Se não me engano, em C, na implementação de uma struct só pode conter declarações de variáveis. Já em C++, pode definir funções em uma struct

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      652k
×
×
  • Criar Novo...