Jump to content
Fórum Script Brasil
  • 0

Variavel Float Duvida


Caiolug

Question

char valor;

valor == 2.59;

printf("O valor do Combustivel por litros equivale a %f por litro.", valor);

A minha duvida é simples : Porque que quando eu compilo e executo o programa, o valor em vez de ser 2,59 é +/- assim : 0,000000000

O que pode estar errado? era pra ser 2,59 na frase.

muito obrigado =D

Edited by Durub
Adicionar tags code [Durub]
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Opa, ai tem um erro: Você declarou a variavel "valor" sendo como char(apenas de 1 caracter).E está lendo no printf como float(%f).

São coisas diferentes. Você precisa definir a variavel valor como float.

Faça assim:

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

int main(){
    
  float valor;
    
  valor = 2.59;
    
  printf("O valor do Combustivel por litros equivale a %f por litro.\n\n", valor);
  system("pause");
    
}//main
O Resultador seria : 2.590000 Agora se quiser,mostrar apenas duas casas depois da vírgula, faça assim:
printf("O valor do Combustivel por litros equivale a %.2f por litro.\n\n", valor);

Edited by Binder
Link to comment
Share on other sites

  • 0

Oxi, não sei o que eu fiz, mas o valor esta dando 3 quando eu compilo O.O olha só:


#include<iostream>
#include<cstdlib>

using namespace std;

int codigo,numero,pagamento;
float resultado;
char combustivel[5];

int main(){
    float valor;
    
    printf("Por favor, insira o codigo do combustivel desejado:\n\n");
    scanf("%d", &codigo);
    
    if(codigo == 1){
              valor = 2.95;
              strcpy(combustivel,"Etanol");
              printf("O combustivel escolhido foi o %s \n", combustivel);
              printf("\nO Valor do %s por litro equivale a %f reais.\n\n",combustivel,valor);
              system("PAUSE");}
              
    else{
        printf("\nCodigo Invalido\n\n");
        system("PAUSE");}
    
}

Link to comment
Share on other sites

  • 0

Opa, a princípio testei aqui e está funcionando normal.

Apenas percebi algumas coisas:

1) Você declarou as váriaveis fora do main, porque?

#include<iostream>
#include<cstdlib>

using namespace std;

int codigo,numero,pagamento;
float resultado;
char combustivel[5];

int main(){
    float valor;
          .....
2) Não está utilizando as variaveis "numero", "pagamento", "resultado", a não ser que vai continuar o programa...Caso contrário não tem necessidade de declarar. 3) Agora na impressão do resultado, perceba os seguintes códigos: Caso queira mostrar 2.950000, Faça Assim:
printf("\nO Valor do %s por litro equivale a %f reais.\n\n",combustivel,valor);
Caso queira mostrar 2.95, Faça Assim:
printf("\nO Valor do %s por litro equivale a %.2f reais.\n\n",combustivel,valor);

Agora, se colocar %.1f, irá mostrar 3.0 o "valor".Após o .(ponto) você sempre irá definir quantas casas decimais quer mostrar depois da vírgula.

Edited by Binder
Link to comment
Share on other sites

  • 0

Opaaaa, muito obrigadoooo deu certo, aa, e respondendo sua pergunta, vai continuar sim, isso é um programinha valendo 1 ponto pra faculdade de Ciencias da Computação, to na primeira semana de aula hehehehe... Muito obrigado mesmo. Qualquer coisa eu te encho o saco denovo , hehehehehee *-*

Link to comment
Share on other sites

  • 0

Olha, para finalizar meu programa, só esta acontecendo mais um problema, o resultado da divisão sempre da 0, já tentei de tudo, esses %d %f nada deu certo, já mudei a variavel resultado pra int, pra float, e nada deu certo se puder me ajudar nessa também eu agradeço muito .


#include<iostream>
#include<cstdlib>

using namespace std;

int main(){
    
    
int codigo,numero,pagamento;
float valor;
char combustivel[15];
int resultado = pagamento/valor;

    
    printf("Por favor, insira o codigo do combustivel desejado:\n\n");
    scanf(" %d", &codigo);
    
    if(codigo == 1){
              valor = 2.95;
              strcpy(combustivel,"Etanol");
              printf("\nO combustivel escolhido foi o %s \n", combustivel);
              printf("\nO Valor do %s por litro equivale a %.2f reais.\n\n",combustivel,valor);
              printf("\n Por favor, digite o valor que o cliente deseja abastecer para converter o valor em litros: ");
              scanf("\n %d", &pagamento);
              printf("\n O pagamento do cliente equivale a %d litros de %s ",resultado,combustivel);
              system("PAUSE");}
              
    else{
        printf("\nCodigo Invalido\n\n");
        system("PAUSE");}
    
}

Link to comment
Share on other sites

  • 0

Opa, você cometeu um erro grave:

int main(){
    
int codigo,numero,pagamento;
float valor;
char combustivel[15];
int resultado = pagamento/valor;            // aqui está o erro
Após o "main", você está declarando as suas váriaveis , para poder utilizar durante o programa, sendo assim você não tem valores ainda, dentro delas. O cálculo deve ser após as variáveis conter "valores". Na minha opinião, acho que você deve declarar as variaveis "resultado" ,"pagamento", "valor" como float. Pois podem dar resultados "quebrados"(2.40,2.59...) Eu faria assim:
#include<iostream>
#include<cstdlib>

using namespace std;

int main(){
    
    
int codigo,numero;
float valor,pagamento,resultado;
char combustivel[15];


    
    printf("Por favor, insira o codigo do combustivel desejado:\n\n");
    scanf(" %d", &codigo);
    
    if(codigo == 1){
              valor = 2.95;
              strcpy(combustivel,"Etanol");
              printf("\nO combustivel escolhido foi o %s \n", combustivel);
              printf("\nO Valor do %s por litro equivale a %.2f reais.\n\n",combustivel,valor);
              
              printf("\n Por favor, digite o valor que o cliente deseja abastecer para converter o valor em litros: ");
              scanf("\n %f", &pagamento);
              
              resultado = pagamento/valor;
              
              printf("\n O pagamento do cliente equivale a %.2f litros de %s\n\n",resultado,combustivel);
              system("PAUSE");}
              
    else{
        printf("\nCodigo Invalido\n\n");
        system("PAUSE");}
}

Edited by Binder
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...