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

ERRO NO COMANDO CASE


dneto

Pergunta

OLÁ!

ESCREVI O SEGUINTE PROGRAMA:

#include<stdio.h>

main(void){


char planeta;
float peso;
float peso_novo;
char mercurio, venus, terra, marte, jupter, saturno, urano, netuno, plutao;

printf("Digite o seu peso:");
scanf("%f", &peso);
if(peso>0){
printf("Digite um planeta:");
scanf("%c", planeta);
if(planeta==mercurio||planeta==venus||planeta==terra||planeta==marte||planeta==jupter||planeta==saturno||planeta==urano||planeta==netuno||planeta==plutao){
switch(planeta){
case 'mercurio':
peso_novo=peso*0,378;
break;
case 'venus':
peso_novo=peso*0,907;
break;
case 'terra':
peso_novo=peso*1;
break;
case 'marte':
peso_novo=peso*0,377;
break;
case 'jupter':
peso_novo=peso*2,36;
break;
case 'saturno':
peso_novo=peso*0,916;
break;
case 'urano':
peso_novo=peso*0,889;
break;
case 'netuno':
peso_novo=peso*1,12;
break;
case 'plutao':
peso_novo=peso*0,59*0,1;
break;
}
}
}
printf("O peso no planeta %c e %f.", planeta, peso_novo);

}

DÁ O SEGUINTE WARMING EM TODAS LINHAS DO COMANDO CASE:
[Warning] character constant too long for its type
[Warning] case label value exceeds maximum value for type

NA HORA QUE TENTO EXECUTAR O PROGRAMA TRAVA.

COMO SOLUCIONAR?

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Eae Bro, Belezinha?

O que faz o programa parar de funcionar é a falta do "&", na hora de atribuir para a variável "planeta".

Outro problema que notei, é que você usou %c, mas deveria usar %s, pois o %c é utilizado pra salvar apenas caractere, exempo: "V". Equanto pra salvar uma palavra, ou frase, deve-se utilizar o %s, para salvar string, exemplo: "Vênus".

Nesse caso, você vai precisar incluir a biblioteca de string: #include <string.h>

E na hora de salvar, usar a função do string.h que serve para salvar strings: gets(), em vez de usar a função scanf().

Lembre-se de usar %s para exibir no printf também! 

 

Está assim:


printf("Digite um planeta:");
scanf("%c", planeta); // Errado

Deve ser assim:

printf("Digite um planeta:");

gets(planeta); // Correto

 

 

Edit: Aquele if:  

if(planeta==mercurio||planeta==venus||planeta==terra||planeta==marte||planeta==jupter||planeta==saturno||planeta==urano||planeta==netuno||planeta==plutao){

 

É desnecessário, pois os Cases funcionarão apenas para os planetas dentro do switch().
 

Editado por HappyPenguin
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
      651,8k
×
×
  • Criar Novo...