Ir ao conteúdo
  • Cadastre-se

C Colocar duas casas decimais para apresentar o valor


Ir à solução Resolvido por Ansi C,

Posts recomendados

Postado

Bom dia, gostaria de colocar duas casas decimais no "menor valor" porém quando tiro o (%d) para colocar (%.2f) o programa não recebe mais o valor menor zerando apenas a opção  (menor valor).

preciso que receba 5,99 e quando trocar o valor do programa mude também para o próximo valor menor.

#include <stdio.h>

int main() 
{
	int maior,menor;
    float v1,v2,v3;

    printf("\n Valor 1: ");
    scanf("%f",&v1);

    printf("\n Valor 2: ");
    scanf("%f",&v2);

    printf("\n Valor 3: ");
    scanf("%f",&v3);
  
   if (v1 < menor)
menor = v1;
if (v2 < menor)
menor = v2;
if (v3 < menor)
menor = v3;
printf ("\n Menor valor : %d ",menor);
   
   printf("\n peco: [%f], [%f]", v1, v2); 
  

return 0;
} 
  
 



return 0;
}

 

Postado

@Tiago L. Santos  Olá,

Você precisa de um valor com duas casas decimais?!?! Logo seria +00.00, no entanto você está definindo uma variável para números inteiros +00.

Se você tentar formatar o valor de número inteiro utilizando a formatação para %f (float), esperado que não de certo.

 

Defina a variável("menor") como float e depois você vai poder utilizar a formatação (%.2f).

 

Espero ter lhe ajudado em algo, até mais!

  • Curtir 2
Postado

@sannoyAgora entendi, e defini a variável em float mais continua dando "0.00" quando digito qualquer valor .

Estou quase chorando de raiva, isso é meio complicado

1.PNG.ee0fb8476b0ee5f27421a55fdefcda3f.PNG

#include <stdio.h>

int main() 
{

    float menor,v1,v2,v3;

    printf("\n Valor 1: ");
    scanf("%f",&v1);

    printf("\n Valor 2: ");
    scanf("%f",&v2);

    printf("\n Valor 3: ");
    scanf("%f",&v3);
  
   if (v1 < menor)
menor = v1;
if (v2 < menor)
menor = v2;
if (v3 < menor)
menor = v3;
printf ("\n Menor valor : %.2f ",menor);
   
   printf("\n peco: [%.2f], [%.2f]", v1, v2); 
  

return 0;
} 

 

Postado

@Tiago L. Santos Olá,

 

Ficaria melhor utilizando uma lista com os valores e verificar está lista utilizando um loop, para não ficar repetindo a declaração if().

Altere o seu método de checagem pelo o seguinte:

 

int main(){
  float menor, vals[3];

  printf("\n Valor 1: ");
  scanf("%f",&vals[0]);

  printf("\n Valor 2: ");
  scanf("%f",&vals[1]);

  printf("\n Valor 3: ");
  scanf("%f",&vals[2]);

  for (int i = 0; i < 3; i++) {
    if (vals[i] < vals[i+1])
      menor = vals[i];
  }
  
  // --- restante do seu código ---
  
  return 0;
}

 

 

Espero ter lhe ajudado em algo, até mais!

  • Curtir 1
Postado

@Tiago L. Santos Boa Noite,

 

Exclamacao.png.78aa600c6b3a434a3882f612e8d0d279.pngEu sou o stalker  de postagem do clube, volta e meia coloco alguém de olho nas coisas também. Convivi juntinho de programadores por um certo tempo, suficiente para conta que programadores são pessoas bastante rigorosas. Já eu, estou mais para o tio da creche de programadores, é bem isso.

 

Mas deixe-me vê a sua programação...

if (v1 < menor)
	menor = v1;
if (v2 < menor)
	menor = v2;
if (v3 < menor)
	menor = v3;

 

Pense comigo: Por que não dizer que uma das três (v1, v2, v3) é logo de cara a menor dando ao computador algo para começar, assim diminui também o número de checagens que fica em duas vezes.

"

 

Será que esse problema computa ?

/* Relacoes de transformacao e lógica */

 	menor =  ?;
	if (v2  <  menor)
		menor =  v2;
	if (v3  <  menor)
		menor =  v3; 

 

"

 

  • Curtir 1
Postado

@mauro_b Esse tópico é quase parecido com um outro que fiz só que no outro tinha que somar.

Esse não precisa somar, deve apenas mostrar qual é o menor valor sendo que o menor valor pode ser apresentado tanto no v1 quanto no v2 ou v3. Então não dá para dizer que só um dos três é o menor. E é isso que está me estressando.

Postado

@Tiago L. Santos    o menor é um dos três ou todos iguais ou dois iguais e menores que o terceiro , mas se você que mostrar apenas o que é menor dos três  e com duas casas decimais , você pode usar um ( cast ) , para  ( float ) , eseu código poderia ser assim  :

#include <stdio.h>
int main()
{
	int maior,menor;
    float v1,v2,v3;
    printf("\n Valor 1: ");
    scanf("%f",&v1);
    printf("\n Valor 2: ");
    scanf("%f",&v2);
    printf("\n Valor 3: ");
    scanf("%f",&v3);
    menor = v1;
    if (v2 < menor)
        menor = v2;
    if (v3 < menor)
        menor = v3;
    printf ("\n Menor valor : %.2f\n",(float)menor);
    printf("\n peco: [%.3f], [%.3f]\n\n", v1, v2);
    return 0;
}

 

  • Obrigado 1
  • Solução
Postado
3 horas atrás, Tiago L. Santos disse:

@mauro_b Esse tópico é quase parecido com um outro que fiz só que no outro tinha que somar.

Esse não precisa somar, deve apenas mostrar qual é o menor valor sendo que o menor valor pode ser apresentado tanto no v1 quanto no v2 ou v3. Então não dá para dizer que só um dos três é o menor. E é isso que está me estressando.

🥺

 

O meu nobre, você está no caminho certo, desde começo com 95% da resposta certa. 

Apenas precisa dá um dos valores inicialmente para  variável menor, um ponta pé inicial para que as decisões de lógica (if) fiquem corretas.

 

Acompanhe-me ... essa é uma cópia de sua programação, certinho ....

#include <stdio.h>

int main() 
{

	float menor,v1,v2,v3;

	printf("\n Valor 1: ");
    scanf("%f",&v1);

	printf("\n Valor 2: ");
	scanf("%f",&v2);

	printf("\n Valor 3: ");
	scanf("%f",&v3);
  
	if (v1 < menor)
		menor = v1;
	if (v2 < menor)
		menor = v2;
	if (v3 < menor)
		menor = v3;
  
	printf ("\n Menor valor : %.2f ",menor);
    printf("\n peco: [%.2f], [%.2f]", v1, v2); 
  

	return 0;
} 

 

Bem ali, no topo está a checagem (v1 < menor) ... Daí eu te pergunto, quanto vale menor para ser já comparado com v1, qual o seu valor? Em algum momento deu um valor para  menor ? Isso meu querido... Se não dê inicialmente um valor para menor o computador não saberá as decisões restantes, mas assim mesmo ele faz e erradamente.

 

Então qual é valor inicial para menor que ajuda o computador a toma as decisões certas? 

Qualquer um dos três valores pode ser inicialmente passado para menor e ajudar o computador nas decisões certas, então vamos escolher o primeiro (v1).

"

 

Diga que menor, no topo das decisões, é igual a v1 e o computador decide o resto.

#include <stdio.h>

int main() 
{

	float menor,v1,v2,v3;

	printf("\n Valor 1: ");
	scanf("%f",&v1);

	printf("\n Valor 2: ");
	scanf("%f",&v2);

	printf("\n Valor 3: ");
	scanf("%f",&v3);
  
	menor = v1; // <--- menor agora tem o valor de v1
	if (v2 < menor)
		menor = v2;
	if (v3 < menor)
		menor = v3;
  
	printf("\n Menor valor : %.2f ",menor);
	printf("\n peco: [%.2f], [%.2f]",v1,v2); 
  

	return 0;
} 

 

Entendeu ??

"

  • Curtir 1
Postado

@mauro_b Agora fez sentido para mim.

Sou muito lento  pra entender essas coisas.

E deu certo muito obrigado.

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...