Ir ao conteúdo
  • Cadastre-se
Pedrockz

C RESOLVIDO Exercício de Centena (C)

Posts recomendados

5. Ler um número com três dígitos e imprimir se o algarismo da casa das centenas é par.

 


Eu Dividi o numero de três dígitos por 100 - Por Exemplo 200 / 100 = 2  (PAR)

Só que também poderia ser um número com virgula - Por Exemplo 268 / 100 = 2,68 (PAR)

 

E depois tentei diferenciar no IF 2 || 4 || 6 || 8 ||  

                                                   printf("CENTENA PAR");

 

Mas como visto não deu muito certo!! ksaksoaskaosk

 

Poderiam me dar algumas dicas??

 

 

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

int main()
{

    int num, centena;

    printf("DIGITE UM NUMERO COM TRES DIGITOS: \n");
    scanf("%d", &num);

    centena = num / 100;

    if (centena == 2 || 4 || 6 || 8){
     printf ("CENTENA PAR");
    }
    else if (centena == 1||3||5||7||9){
     printf("CENTENA IMPAR");
    }




    return 0;
}

 

  • Curtir 1
  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Pedrockz disse:

Eu Dividi o numero de três dígitos por 100 - Por Exemplo 200 / 100 = 2  (PAR)

Só que também poderia ser um número com virgula - Por Exemplo 268 / 100 = 2,68 (PAR)

 

Não, não poderia. Você declarou isso como int então é um valor integral, sem decimais. A divisão vai truncar o valor. Não pensou em testar? Algo como mostrar o resultado?

	int a = 268;
	printf("268, 268/100 %d %d\n", a, a / 100);

Que mostraria

        268, 268/100 268 2

Só uma linha afinal.

 

 if (centena == 2 || 4 || 6 || 8)
{
   ...

Aqui você tem um problema. Computadores não entendem contexto. Você não pode escrever isso. Ou melhor, pode mas não expressa o que você quer testar...

	if  (
		(centena == 2) ||
		(centena == 4) ||
		(centena == 6) ||
		(centena == 8)
        )
    {};

Isso é o que você quer testar. Não pode omitir a condição.

 

adicionado 15 minutos depois
if (centena == 2 || 4 || 6 || 8)
{
     printf ("CENTENA PAR");
}

Talvez seja o caso de explicar o que está escrito acima. O que está escrito para o compilador C.

É uma questão de prova comum em C e operadores afinal.

 

  • Em C 0 é falso. Qualquer outra coisa é verdadeira. if(2) é verdadeiro, if(4), qualquer coisa menos if(0) é verdadeiro.
  • A expressão acima tem DOIS operadores: == e ||
  • == é avaliado antes de ||
  • 2, 4 ,6 e 8 são como eu disse verdadeiro
if ( (centena == 2) || 4 || 6 || 8 )
     printf ("CENTENA PAR");

Assim é como vai ser avaliado. Sempre use parenteses. Se centena for 2 a primeira expressão vai ser true.

Mas como 4 é verdadeiro basta isso para (a OU b OU c OU d) ser verdade, certo?


Então essa expressão é sempre verdadeira.

 

O compilador deve ter dado um aviso que você não considerou... Veja o que diz no meu compilador:

image.png.13bc2b9529306bf542e9aa6667eac65d.png

 

Pois é: constante não nula || constante não nula é sempre uma constante não nula...

  • Curtir 1
  • Obrigado 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Pedrockz      esse jeito de verificar se o numero é par realmente não é muito eficaz não , melhor seria usar o operador mod que na linguagem c é esse  %  , 

if( centena % 2 ==0)

    printf(" eh  par\n");

else

    printf('eh  Impar\n\n");

 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal fiz da seguinte forma e esta rodando!!

Me corrige se eu estiver errado

 

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

int main()
{

    int num, centena;

    printf("DIGITE UM NUMERO COM TRES DIGITOS: \n");
    scanf("%d", &num);

    centena = num / 100;

    if (centena == 2){
     printf ("CENTENA PAR");
    }
    else if (centena == 4){
    printf ("CENTENA PAR");
    }
    else if (centena == 6){
    printf ("CENTENA PAR");
    }
    else if (centena == 8){
    printf ("CENTENA PAR");
    }
    else{
    printf("CENTENA IMPAR");
    }

    return 0;
}

 

adicionado 4 minutos depois

Simples e Rápido !! Obrigado

 

Em 19/05/2020 às 16:40, devair1010 disse:

@Pedrockz      esse jeito de verificar se o numero é par realmente não é muito eficaz não , melhor seria usar o operador mod que na linguagem c é esse  %  , 


if( centena % 2 ==0)

    printf(" eh  par\n");

else

    printf('eh  Impar\n\n");

 

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Pedrockz      está bom , e  funcionado bem ,  você colocou a mesma linha 4 vezes ;      Gastou tempo digitando e ocupou mais espaço na memória , que apesar de ser pouco , em um programa grande isso exigiria grande quantidade de bytes  ,  em um pc com 15 GigaBytes de memória não causaria problemas , mas em equipamento mais simples como um arduíno ,  aí talvez o programa nem coubesse na memória dele , e também é bom manter o código identado , para que vai ler é mais fácil de entender .

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

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





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

×
×
  • Criar novo...

 

javaweb-popup.jpg

CURSO ONLINE DE PROGRAMAÇÃO
FULL STACK

Entre para o mercado que paga mais de R$ 12.000 por mês e não tem crise!

CLIQUE AQUI E INSCREVA-SE AGORA MESMO!