Ir ao conteúdo
  • Cadastre-se

Cálculo da área de um círuclo


fgamaral.kaio

Posts recomendados

#include <stdio.h>

int main() {
	int raio, casas;
	float M_PI, PI, res;

	M_PI = 3.14159265359;
	res = PI*raio*raio;


	printf("\nRaio = ");
	scanf("%d", &raio);

	printf("\nDecimais de PI = ");
	scanf("%d", &casas);

	PI = ("%.*f", &casas, M_PI);
	
	printf("\n%f", PI);

	printf("\n%f", res);

return(0); }

O programa visa calcular a área de um círculo de raio definido pelo usuário. O usuário também seria responsável por definir o número de casas decimais utilizadas no PI do cálculo.

 

PI = ("%.*f", &casas, M_PI);, entretanto, não está definindo o PI com o número de casas escolhidas.

 

Não posso utilizar uma "expressão" para atribuir valor a uma variável? Caso possa, como devo fazê-lo, uma vez que assim está dando errado?

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

Eu sei que é uma gambiarra bem feia, poderia fazer usando POW também, mas parece que assim funcionou

#include <stdio.h>

int main() {
	int raio, casas;
	float M_PI, PI, res;

	M_PI = 3.14159265359;
	PI = M_PI;

	printf("\nRaio = ");
	scanf("%d", &raio);

	printf("\nDecimais de PI = ");
	scanf("%d", &casas);

    int i;
	for(i = 0; i < casas; i++)
        PI *= 10;
    PI = (int)PI;
    for(i = 0; i < casas; i++)
        PI /= 10;

	res = PI*raio*raio;

	printf("\n%f", PI);

	printf("\n%f", res);

    return(0); 
}

 

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

@fgamaral.kaio  você colocou o calculo no começo e precisava ser no final, assim funcionou

mas não consegui determinar o numero de casa decimais de pi.   veja como ficou:

#include <stdio.h>
#include <iostream>
int d;
using namespace std;
int main() {
	int raio, casas;
	float M_PI, PI, res;
 PI=3.141592;
    cout.precision(2); 
	M_PI = 3.14159265359;
	res = PI*(raio*raio);

 	printf("\nRaio em centimetro = ");
	scanf("%d", &raio);

	printf("\nDecimais de PI = ");
	scanf("%.f",&casas);

	
	printf("\n%f", PI);
    res = PI*(raio*raio);
	printf("\n%.2f",res);
	printf(" centimetros");
	printf("\n\ndigite u numero e tecle enter "); 
	scanf("%d",&d);
	scanf("%d",&d);	

return(0); }

 

Link para o comentário
Compartilhar em outros sites

@vangodp , primeiramente, obrigado pela paciência. Iniciei em programação por agora e muitas de minhas dúvidas, aos olhos de quem já programa a algum tempo, são demasiado bestas.

  Minha dúvida, em realidade, concernia à possibilidade de definir uma variável de modo análogo com o qual escrevo um printf, por exemplo. Como, aparentemente, não há essa possibilidade, ao menos não de maneira simples, o tópico assemelhou-se muito com o outro que criei. Peço perdão por isso: talvez deveria ter linkado essa dúvida no outro tópico.

  Respondendo sua dúvida, o motivo de eu buscar limitar o número de casas do PI para o programa em questão, é com o intuito de salvar recursos em casos que sejam necessários, por exemplo, apenas 2 casas decimais do PI. Em um programa dessa proporção, praticamete não há diferença, porém em um programa de várias linhas de código, que utilize cálculos mais pesados com o PI e/ou contas  mais extensas, o fato de se usar 2 decimais ao invés de 20, realmente salva recursos, não? Peço, humildemente, que me corrija, caso meu pensamento apresente erro(s).

  Tomando como base os dados exibidos na imagem que postou, realizar um cálculo com "PI" gasta mais recursos do que com "PI2", que por sua vez utiliza o mesmo tanto que "PI3"?

  Novamente, peço perdão caso a dúvida seja demasiado leiga. Apenas quis verificar se entendi.

 

@devair1010 , o cálculo sem delimitar o número de casas decimais eu já estava conseguindo fazer.

 

@MassakiMsk , obrigado. Embolei-me um pouco na parte for, porém esforçarei-me mais para tentar compreender. Qualquer coisa, posto aqui.

 

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

@fgamaral.kaio     você pode atribuir valor com casas decimais à uma variável float veja seu 

código com algumas modificações :

#include <stdio.h>
#include <iostream>
int d,g;
double pi;//double pode ter até infinito
using namespace std;
int main() {
	int raio, casas;
	float M_PI, res;
	M_PI = 3.14159265359;
 	printf("\nRaio em centimetro = ");
	scanf("%d", &raio);
l1:
	printf("Decimais de PI     = ");
	scanf("%d",&casas);//.f 
    if(casas==1){pi=3.1;}
    if(casas==2){pi=3.14;}
    if(casas==3){pi=3.141;}
    if(casas==4){pi=3.1415;}
    if(casas==5){pi=3.14159;}
    if(casas==6){pi=3.141592;}
    if(casas==7){pi=3.1415926;}
    if(casas==8){pi=3.14159265;}
    if(casas==9){pi=3.141592653;}
    if(casas==10){pi=3.1415926535;}
    if(casas==11){pi=3.14159265358;}
    if(casas==31){pi=3.1415926535897932384626433832795;}
    if(casas >11){printf("\nsó pode ser ate 11 casas depois da virgula\ndigite um numero e tecle enter");
    scanf("%d",&casas);goto l1;} 
	printf("\nvalor de casas     = %d",casas);
	printf("\nvalor de pi        = %.11f",pi);// coloque .11 para imprimir as 11 casas ou 9 para 9 casas
	printf("\nvalor de raio      = %d",raio);
    res = pi*(raio*raio);
	printf("\n\nArea do Circulo    = %.11f",res);
	printf(" centimetros");
	printf("\n\n       digite um numero e tecle enter "); 
	scanf("%d",&d);
 
return(0); }

 

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

  • 4 semanas depois...

Pessoal, preciso de uma ajuda urgente, um professor deu até meia noite pra isso,

 

Preciso que, quando o resultado de  um cálculo for um número decimal, o ponto ou vírgula seja substituido pela letra V, ficando assim: ao invés de 3.5 seja 3v5.

 

segue código da minha calculadora

 

 

#include<stdio.h>
#include<stdlib.h>
#include <string.h>
int main(void)
{
    float dgt1, dgt2;
    char op;
    //THIAGO MARCELO ARRUDA

    printf("Digite a operacao: ");
    scanf("(%f)%c(%f)", &dgt1, &op, &dgt2);
    switch(op)
    {
    case '+':
     printf("\n Resultado = %1f\n", dgt1+dgt2);
     break;
    case '-':
     printf("\n Resultado = %1f\n", dgt1-dgt2);
     break;
    case '*':
    case 'x':
     printf("\n Resultado = %1f\n", dgt1*dgt2);
     break;
    case '/':
    case':':
     printf("\n Resultado = %1f\n", dgt1/dgt2);
     break;
    default:
     printf("\n Operacao impossivel de ser realizada!!\n");
    }

    system ("PAUSE");
    return 0;
}

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