Ir ao conteúdo
  • Cadastre-se

Definição de casas decimais


fgamaral.kaio

Posts recomendados

  Estou começando a estudar programação por agora, peço perdão pela dúvida leiga (estou estudando C).

 

  Estava querendo colocar para o usuário escolher quantas casas após a vírgula ele quer no resultado. No "printf", na exibição do resultado, eu não posso, ao menos não dessa maneira, colocar " %.%d%f ". O que devo fazer para obter tal resultado?

 

  Outra dúvida, na mesma linha. Caso eu deseje que o usuário escolha quantas casas depois da vírgula ele deseja utilizar em um cálculo usando o M_PI, ao invés de fazer com todas as casas disponibilizadas por padrão e arredondar no final, como devo proceder?

Link para o comentário
Compartilhar em outros sites

Primeira dúvida:

 

// Cálculo de área de formas geométricas 2D
#include <stdio.h>
#include <math.h>

 

float area(int base, int altura) {
    float ba;


    ba = base * altura;


return(ba); }

 

int main () {
    int o, virgula;
    float a, h, ba;
  
        printf(" Insira o número correspondente à forma geométrica que se deseja calcular a área.\n   1 = Retângulo.\n   2 = Triângulo.\n   Número escolhido =  ");
        scanf("%d", &o);
        printf (" Insira o número de casas depois da vírgula que deseja obter.\n  Número escolhido =  ");
        scanf("%d", &virgula);

    

    switch (o) {


        case 1:
            printf("Insira o valor da base: ");
            scanf("%f", &a);
            printf("Insira o valor da altura: ");
            scanf("%f", &h);
            ba = area(a, h);
            printf("Área = %f.\n", ba); //Gostaria de configurar aqui para exibir o número de casas após a vírgula que foi escolhido pelo usuário
        break;

 

        case 2:
            printf("Insira o valor da base: ");
            scanf("%f", &a);
            printf("Insira o valor da altura: ");
            scanf("%f", &h);
            ba = area(a, h);
            printf("Área = %f.\n", ba/2);  // Aqui também
        break;

 

        default:
            printf("O que foi digitado não corresponde a nenhuma das opções listadas."); }
            
    return 0; }

 

  Em relação à outra dúvida, apenas modificaria o programa de modo a calcular a área de um círculo, por exemplo.

Link para o comentário
Compartilhar em outros sites

1 hora atrás, fgamaral.kaio disse:

  Estava querendo colocar para o usuário escolher quantas casas após a vírgula ele quer no resultado. No "printf", na exibição do resultado, eu não posso, ao menos não dessa maneira, colocar " %.%d%f ". O que devo fazer para obter tal resultado?

#include <stdio.h>
#include <stdlib.h>
 
int decimais;
float numero;
char saida[256];
 
int main()
{
    printf("Qual o numero: ");
    scanf("%f", &numero);
    
    printf("Numero de decimais: ");
    scanf("%d", &decimais);
    sprintf(saida, "%%.%df\n", decimais);
    
    printf(saida, numero);
 
    system("pause");
    return 0;
}

 

1 hora atrás, fgamaral.kaio disse:

Outra dúvida, na mesma linha. Caso eu deseje que o usuário escolha quantas casas depois da vírgula ele deseja utilizar em um cálculo usando o M_PI, ao invés de fazer com todas as casas disponibilizadas por padrão e arredondar no final, como devo proceder?

Não entendi muito bem sua duvida, sinto muito.

Link para o comentário
Compartilhar em outros sites

1 minuto atrás, vangodp disse:

#include <stdio.h>
#include <stdlib.h>
 
int decimais;
float numero;
char saida[256];
 
int main()
{
    printf("Qual o numero: ");
    scanf("%f", &numero);
    
    printf("Numero de decimais: ");
    scanf("%d", &decimais);
    sprintf(saida, "%%.%df\n", decimais);
    
    printf(saida, numero);
 
    system("pause");
    return 0;
}

 

Não entendi muito bem sua duvida, sinto muito.

 

  Quando uso <math.h>, são disponibilizados alguns símbolos (https://msdn.microsoft.com/en-us/library/4hwaceh6.aspx). O M_PI, por exemplo, designa PI com 20 casas decimais.

  Gostaria de configurar para que o usuário escolhesse quantas casas depois da vírgula ele gostaria que fossem utilizadas de PI para a execução de determinada operação.

  Vou ler o programa agora. Desde já, agradeço.

Link para o comentário
Compartilhar em outros sites

Acho que o que você anda buscando é isso: http://stackoverflow.com/questions/1343890/rounding-number-to-2-decimal-places-in-c

#include <math.h>

float val = 37.777779;

float rounded_down = floorf(val * 100) / 100;   /* Result: 37.77 */
float nearest = roundf(val * 100) / 100;  /* Result: 37.78 */
float rounded_up = ceilf(val * 100) / 100;      /* Result: 37.78 */

 

Link para o comentário
Compartilhar em outros sites

Se você colocar asterisco * no especificador do printf você pode passar o comprimento ou número de casas após a vírgula como um parâmetro do printf antes do valor a ser usado pelo especificador.

 

Exs:

//float com 2 casas após a vírgula:
printf("%.*f\n", 2, 3.14159265359);

//inteiro com 4 casas e com zeros a esquerda:
printf("%0*d\n", 4, 12);

//Quando mais de um especificador é usado na string do printf:
printf("%0*d %.*f\n", 4, 12, 2, 3.14159265359);

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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