Ir ao conteúdo
  • Cadastre-se

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


zennom

Posts recomendados

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");

   }

 

 

Link para o comentário
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;

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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");

   }
 

Link para o comentário
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
Link para o comentário
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 ! ! !

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...