Ir ao conteúdo
  • Cadastre-se

C Colocar duas casas decimais para apresentar o valor


Ir à solução Resolvido por mauro_b,

Posts recomendados

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;
}

 

  • Curtir 1
Link para o post
Compartilhar em outros sites

@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
Link para o post
Compartilhar em outros sites

@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;
} 

 

  • Curtir 2
Link para o post
Compartilhar em outros sites

@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
Link para o post
Compartilhar em outros sites

@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 2
Link para o post
Compartilhar em outros sites

@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.

  • Amei 1
Link para o post
Compartilhar em outros sites

@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;
}

 

  • Curtir 1
  • Obrigado 1
Link para o post
Compartilhar em outros sites
  • Solução
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 2
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 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...

GRÁTIS: ebook Redes Wi-Fi

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!