Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
zennom

Porque o código não está compilando ?

Recommended Posts

Boa noite pessoal,

preciso fazer um exercício com base em uma tabela.

No arquivo de entrada preciso inserir dois valores inteiros correspondentes ao código e a quantidade do item de uma tabela.

Então pensei em utilizar SWITCH. Ai é só o usuario digitar o código e a quantidade.. só que o meu código não está compilando!

 

qual seria o problema? Também tenho duvidas em relação ao SWITCH não sei se foi porque eu  coloquei muitos comandos.

 

agradeço se  puderem me ajudar!

 

SEGUE MEU CODIGO:

 

 

 

#include <stdio.h>
#include <stdlib.h>

main ()
   {
int codigo,quantidade,total;

switch (codigo)

  {

 case 1:
  printf("1");
  scanf("%d", & quantidade);
  total = quantidade * 4.00;
  printf("Total: R$ %d\n",& total); break;


 case 2:
 printf("2");
 scanf("%d", & quantidade);
 total = quantidade * 4.50;
 printf("Total: R$ %d\n",& total); break;


 case 3:
 printf("3");
 scanf("%d", & quantidade);
 total = quantidade * 5.00;
 printf("Total: R$ %d\n",& total); break;

 

 case 4:
 printf("4");
 scanf("%d", & quantidade);
 total = quantidade * 2.00;
 printf("Total: R$ %d\n",& total); break;


 case 5:
 printf("5");
 scanf("%d", & quantidade);
 total = quantidade * 1.50;
 printf("Total: R$ %d\n",& total); break;

  }

   system ("pause");

   }

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não ta pegando um valor para a variavel codigo, então provavelmente a variavel está com um lixo de memoria que bugando o codigo.

scanf("%d", &codigo);

Você tá usando & nos printf sendo que nao é para usar.

printf("Total: R$ %d\n", total);

 

Você também podia colocar um default no seu switch, caso o usuario digite um codigo invalido.

default:
printf("Codigo invalido.\n");
break;

 

Editado por MassakiMsk
Faltou coisa
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Ok, 

     

    vou fazer esses ajustes e posto aquui se consegui!!

     

    OBRIGADA

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • FIZ ALGUNS AJUSTES RECOMENDADOS, ELE ATÉ COMPILOU.. MAS FOI DIRETO PRO DEFAULT... 

     

     

    SEGUE:

     


    #include <stdio.h>
    #include <stdlib.h>


    main ()
       {
    int codigo,quantidade,total;

    switch (codigo)

      {

     case 1: 
      scanf("%d", & codigo);
      printf("1");
      scanf("%d", & quantidade); 
      total = quantidade * 4.00;
      printf("Total: R$ %d\n", total); break; 


     case 2: 
     scanf("%d", & codigo);
     printf("2");
     scanf("%d", & quantidade); 
     total = quantidade * 4.50;
     printf("Total: R$ %d\n", total); break;


     case 3: 
     scanf("%d", & codigo);
     printf("3");
     scanf("%d", & quantidade); 
     total = quantidade * 5.00;
     printf("Total: R$ %d\n", total); break;

     case 4:
     scanf("%d", & codigo);
     printf("4");
     scanf("%d", & quantidade); 
     total = quantidade * 2.00;
     printf("Total: R$ %d\n", total); break;

     case 5: 
     scanf("%d", & codigo);
     printf("5");
     scanf("%d", & quantidade); 
     total = quantidade * 1.50;
     printf("Total: R$ %d\n", total); break;

     default:
     printf("Codigo invalido.\n");
     break;


      } 

       system ("pause");

       }
     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    @zennom Use as tags <> no menu de postagem para organizar seu código.

    Você tem que digitar o código e o preço somente 1 vez, e antes de entrar no switch.

     

    #include <stdio.h>
    #include <stdlib.h>
    
    
    main ()
    {
      int codigo, quantidade, total;
    
      scanf ( "%d", & codigo );
      scanf ( "%d", & quantidade );
    
      switch ( codigo ) {
    
      case 1:
        printf ( "1" );
        total = quantidade * 4.00;
        printf ( "Total: R$ %d\n", total );
        break;
    
    
      case 2:
        printf ( "2" );
        total = quantidade * 4.50;
        printf ( "Total: R$ %d\n", total );
        break;
    
    
      case 3:
        printf ( "3" );
        total = quantidade * 5.00;
        printf ( "Total: R$ %d\n", total );
        break;
    
      case 4:
        printf ( "4" );
        total = quantidade * 2.00;
        printf ( "Total: R$ %d\n", total );
        break;
    
      case 5:
        printf ( "5" );
        total = quantidade * 1.50;
        printf ( "Total: R$ %d\n", total );
        break;
    
      default:
        printf ( "Codigo invalido.\n" );
        break;
      }
    
      system ( "pause" );
    
    }

     

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Olá!

     

     

     

    Oi de novo Zennon . . .

     

     

     

    Bom é exatamente o que disseram MassakiMsk  CiroboyBR apenas complementando . . .

     

     

     

    - Os cinco alertas seguintes são relativos ao fato de você ter colocado “ & ” para as suas variáveis dentro do printf(); o que não é necessário:

     

    |16|warning: format ‘%d expects argument of type int’, but argument 2 has type int *’ [-Wformat=]|
    
    |23|warning: format ‘%d expects argument of type int’, but argument 2 has type int *’ [-Wformat=]|
    
    |30|warning: format ‘%d expects argument of type int’, but argument 2 has type int *’ [-Wformat=]|
    
    |38|warning: format ‘%d expects argument of type int’, but argument 2 has type int *’ [-Wformat=]|
    
    |45|warning: format ‘%d expects argument of type int’, but argument 2 has type int *’ [-Wformat=]|

     

    - Os dois alertas seguintes estão lhe alertando para o fato de você não ter definido o tipo da função main()

     

    |4|warning: return type defaults to int [-Wreturn-type]|

     

     

    como você não definiu o tipo, o compilador tomou a liberdade de o definir como sendo “ int

     

     

    |51|warning: control reaches end of non-void function [-Wreturn-type]|

     

     

    como a função main(), foi definida como sendo do tipo “ int ” ela deve retornar algum valor, sendo assim você deve colocar um valor de retorno antes da ultima chave de fechamento da função main():

     

     

    int main()
    {
       . . .
         
       return 0;
    }

     

     

     

    - Este é o seu principal problema, e é exatamente o que nos e o alerta queremos lhe dizer

     

    |8|warning: codigo is used uninitialized in this function [-Wuninitialized]|

     

    O alerta está lhe alertando que a variável “ código ” está sendo utilizada no código sem que antes ela fosse inicializada com algum valor, para evitar usar o lixo de memoria.

     

     

    Mas especificamente, está mensagem esta associada ao fato de que quando você vai utilizar uma variável, em uma estrutura de controle, como:

     

    if
    
    for
    
    while
    
    switch

     

     

    É sempre bom você definir um valor ( inicializar ) a variável com um valor nulo para evitar que a mesma use lixo de memoria, dados ( valores ) armazenados naquela porção de memoria e que não foi apagado.

     

     

    E é exatamente esse o motivo para o seu programa pular direto para o default, já que o valor é diferente de qualquer case dentro do switch, tente colocar um printf(), antes do switch para mostrar o valor que está sendo armazenado pela variável “ código

     

     

     

    Bom era isso . .  tente seguinr as dicas postadas acima por todos nós e o codigo vai rodar liso . . .

     

     

     

    Ubuntu 14.04  GCC 4.8  CodeBlocks 13.12

     

     

     

    Espero Ter Ajudado ! ! !

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Pessoal consegui resolver o meu problema!
     
    eu percebi que precisava declarar a variavel antes de inicializar o switch!!
     
    muito obrigada a todos que resolvera me ajudar

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×