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:  
jpaulofsa

C Função switch, case: cálculo peso relativo

Recommended Posts

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

int main(void)
{
	float peso;
	char planeta;
	//digitar o peso do usuário
	printf("digite seu peso em KG na Terra.\n");
	scanf("%/d", peso);
	//digitar o número referente a planeta que deseja saber o peso
	printf("Digite o planeta que deseja saber qual seria seu peso em letras minusculas e sem acento, sendo 1 mercurio, 2 venus, 3 terra, 4 marte, 5 jupter, 6 saturno, 7 urano, 8 netuno, 9 plutao .\n");
	scanf("%c", &planeta);
	//inpicio da função escolha
	switch (planeta) {
		//caso a escolha do planeta seja 1 (mercurio), é feito a mutiplicação do peso em kg na terra por 0,378 (peso * 0,378) 
		case 1:
			peso == peso * 0,378;
			//é escrito na tela o peso do usuário no planeta mercúrio
			printf("seu peso em Mercurio e %f\n", peso);
			break;
		case 2:
			peso == peso * 0,907;
			printf("seu peso em Venus e %f\n", peso);
			break;
		case 3:
			peso == peso * 1;
			printf("seu peso na Terra e %f\n", peso);
			break;
		case 4:
			peso == peso * 0,377;
			printf("seu peso em Marte e %f\n", peso);
			break;
		case 5:
			peso == peso * 2,36;
			printf("seu peso em Jupter e %f\n", peso);
			break;
		case 6:
			peso == peso * 0,916;
			printf("seu peso em Saturno e %f\n", peso);
			break;
		case 7:
			peso == peso * 0,889;
			printf("seu peso em Urano e %f\n", peso);
			break;
		case 8:
			peso == peso * 1,12;
			printf("seu peso em Netuno e %f\n", peso);
			break;
		case 9:
			peso == peso * 0,059;
			printf("seu peso em Plutao e %f\n", peso);
			break;
		//caso seja digitado pelo usuário valor diferente aos anteriores (de 1 a 9) o programa digita na tela opcao invalida
		default:
			printf("opcao invalida.");
	}
	system("pause");
	return 0;
}

Boa noite,

Preciso criar um algoritmo em C que peça para o usuário o peso dele em kg no planeta terra e para qual planeta ele deseja converter o seu peso. o programa deverá realizar os cálculos e devolver o peso no planeta escolhido pelo usuário. os pesos relativos de cada planeta está exposto no algoritmo.

como sou iniciante, estou quebrando a cabeça e não dá certo. o máximo que conseguir chegar foi aí.

o programa não aparece a opção de escolher o planeta que desejo fazer a conversão do peso e também está dando um erro com case 9 (no valor 0,059).

atribuir valores aos planetas, pois quando colocava o nome do planeta o programa dava erro.

 

 

 

 

 

 

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite, geralmente eu sempre coloco muito conceito nas minhas respostas, dessa vez vou ser direto, então segue:

 

1 erro:  usar char no local de int

char planeta; 

scanf("%c", &planeta);

 

o correto:

int planeta;

scanf("%d",&planeta)

 

2 erro: erro de sintaxe

scanf("%/d", peso);

 

o correto:

scanf("%d", &peso);

 

 

3 erro: usar character no switch case

No momento que usar switch(), poderá usar apenas tipos com valores numéricos ou caracteres, e isso esta intimamente ligado aos cases. Seu erro foi usar um tipo char(planeta) e colocar os cases com int(1,2,3,4), o certo:

 

com char planeta:

switch(planeta){

   case '1':

   ...

}

 

com int planeta:

switch(planeta){

  case 1:

  ...

}

 

4 erro: usar == no lugar de =

 

O simbolo == representa igualdade no conceito de possibilidade. Já o simbolo de = significa a mudança de valor de um tipo. Use = para dar valores, e == para condições. Então troque:

peso == peso * 0,059; para

peso = peso * 0,059;

Editado por TYSQUARE89
  • Curtir 3

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Muito obrigado! excelente ajuda.

    o programa está me retornando como valor da multiplicação peso = peso * "x" o valor zero...

    erro peso relativo.JPG

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

     

    @jpaulofsa Perdão, erro meu, como o peso é usado com o tipo float, você usa %f, assim:

    float peso;

    scanf("%f", &peso);

     

    Se quiser limitar as casas na imagem, use:

    printf("%.2f",peso);

    Editado por TYSQUARE89
    • Curtir 2
    • Obrigado 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    @jpaulofsa     se você quiser usar os nome dos planetas como entrada,  então precisa  incluir mais alguns comandos para que o programa reconheça esses nomes, e para sair do programa escreva a palavra sair,    então seu código ficaria assim :

    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream.h>
    int main(void){
    	float peso;
    	int planet,i;
    	char planeta[20];
    	do{
            system("cls");
    	    //digitar o peso do usuário
    	    planet=11;
    	    printf("digite seu peso em KG na Terra.\n");
    	    scanf("%f",&peso);
    	    //digitar o número referente a planeta que deseja saber o peso
    	    printf("Digite o planeta que deseja saber qual seria seu peso sem acento, sendo");
    	    printf("\n= mercurio,\n= venus,\n= terra,\n= marte,\n= jupter,\n= saturno,\n= urano,\n");
    	    printf("= netuno,\n= plutao,\n= Sair .\n");
    	    scanf("%s",&planeta);
    	    for(i=0;i<strlen(planeta);i++)
                planeta[i]=toupper(planeta[i]);//passa para maiusculas
    
    	    if     (strcmp(planeta,"MERCURIO")==0){planet=1;}
    	    else if(strcmp(planeta,"VENUS"   )==0){planet=2;}
    	    else if(strcmp(planeta,"TERRA"   )==0){planet=3;}
    	    else if(strcmp(planeta,"MARTE"   )==0){planet=4;}
    	    else if(strcmp(planeta,"JUPITER" )==0){planet=5;}
    	    else if(strcmp(planeta,"SATURNO" )==0){planet=6;}
    	    else if(strcmp(planeta,"URANO"   )==0){planet=7;}
    	    else if(strcmp(planeta,"NETUNO"  )==0){planet=8;}
    	    else if(strcmp(planeta,"PLUTAO"  )==0){planet=9;}
    	    else if(strcmp(planeta,"SAIR"    )==0){planet=0;}
    	    //inpicio da função escolha
    	    switch( planet ){
    		    //caso a escolha do planeta seja 1 (mercurio), é feito a mutiplicação do peso em kg na terra por 0,378 (peso * 0,378)
    		    case 1:
    			    peso = (peso * 0.378);//usa ponto e nao virgula
    			    //é escrito na tela o peso do usuário no planeta mercúrio
    			    printf("seu peso em Mercurio e %.2f\n", peso);
    			    break;
    		    case 2:
    			    peso = peso * 0.907;//usa ponto e nao virgula
    			    printf("seu peso em Venus e %.2f\n", peso);
    			    break;
    		    case 3:
    			    peso = peso * 1;
    			    printf("seu peso na Terra e %.2f\n", peso);
    			    break;
    		    case 4:
    			    peso = peso * 0.377;//usa ponto e nao virgula
    			    printf("seu peso em Marte e %.2f\n", peso);
    			    break;
    		    case 5:
    			    peso = peso * 2.36;//usa ponto e nao virgula
    			    printf("seu peso em Jupter e %.2f\n", peso);
    			    break;
    		    case 6:
    			    peso = peso * 0.916;//usa ponto e nao virgula
    			    printf("seu peso em Saturno e %.2f\n", peso);
    			    break;
    		    case 7:
    			    peso = peso * 0.889;//usa ponto e nao virgula
    			    printf("seu peso em Urano e %.2f\n", peso);
    			    break;
    		    case 8:
    			    peso = peso * 1.12;//usa ponto e nao virgula
    			    printf("seu peso em Netuno e %.2f\n", peso);
    			    break;
    		    case 9:
    			    peso = peso * 0.05;//usa ponto e nao virgula
    			    printf("seu peso em Plutao e %.2f\n", peso);
    			    break;
    		        //caso seja digitado pelo usuário valor diferente aos anteriores (de 1 a 9) o programa digita na tela opcao invalida
                case 0:
                    printf("Saindo Do Programa     Tecle\n");
                    getch();
                    return 0;
    		    default:
    			    printf("opcao invalida.");
    	    }
            printf("Tecle Para Voltar Ao Menu");getch();
    	}while(planeta != 0);
    	return 0;
    }

     

    Editado por devair1010
    • Curtir 3

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • obrigado! não vi ainda essas funções, excelente.

    • Curtir 1

    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

    ×