Ir ao conteúdo
  • Cadastre-se
DL.Fernandes

C Comando de Repetição (erro na fórmula?)

Recommended Posts

Boa noite pessoal,

 

Tenho um problema aqui que parece ser simples mas não estou conseguindo progredir: tenho que criar um programa em C que calcule o custo do ouro em função da espessura da camada de ouro depositada em um anel. 

 

Então, por exigências do comando, eu preciso:

 

1. Entrar com raio interno do anel;

2. Entrar com diâmetro;

3. Entrar com mínimo e máximo de espessura que quero saber o preço (sendo esp. mín= 5 e máx. = 50 µm);

4. Entrar com Intervalo de espessura (em relação ao min e max, quantos valores eu quero saber) e;

4. Entrar com custo da grama do ouro.

 

Também devo criar um arquivo em txt onde apresente o valor da grama do ouro e os valores de espessuras de camadas de ouro depositadas no anel e seus respectivos custos.

 

 

Para facilitar, foi dado mais algumas informações:

 

Área superficial do anel S é:  S= pi² (2r +d)d 

Peso do revestimento é: P= p * S * t, onde p = peso especifico do ouro (17.7 g/cm³) , S = area superficial e t = a espessura.

 

 

Para testar, pode-se utilizar os valores:

raio: 8 mm

diâmetro: 2 mm

custo do ouro = 132 p/ grama.

 

 

Estou anexando o código que escrevi. Eu consigo criar o arquivo .txt e fazer o cálculo, porém como podem ver se testarem, o valor final sempre fica em 0 .. :huh:

Esse é o problema, o que não está funcionando que eu defino, por exemplo, 3 espessuras e as 3 me retornam 0 ?

 

 

PS. tentei converter tudo para mm para não ficar trabalhando com várias unidades.. por isso há lugares que os valores estão meio estranhos..

#include<stdio.h>
#include<math.h>
#include<conio.h>

int main(){

FILE *pont_arq;
float area, valor, superficie, espessura, quantidade, raio, peso, tmin, tmax, custoouro, diametro, PI;
int qtdade, i;

printf("\n\nVamos calcular o valor do seu revestimento de ouro!\nDigite o raio interno do anel [mm]: ");
scanf("%f", &area);

printf("\nDigite o diametro [mm]: ");
scanf("%f", &diametro);

printf("\nAgora entre com a espessura minima e maxima, respectivamente [mm]: ");
scanf("%f %f", &tmin, &tmax);

while (tmin < 0.005){
    printf("\nEspessura minima nao aceita. Favor digitar novamente um valor de espessura minima >= 0.005 [mm]: ");
    scanf("%f", &tmin);
}
while (tmax > 0.05){
    printf("\nEspessura maxima nao aceita. Favor digitar novamente um valor de espessura maxima <= 0.05 [mm]: ");
    scanf("%f", &tmax);
}

printf("\nEstamos acabando.. Informe agora a quantidade de valor da espessura que deseja visualizar: ");
scanf("%d", &qtdade);

printf("\nAgora basta informar o valor de custo da grama do ouro por [g/cm3]: ");
scanf("%f", &custoouro);

peso = 0.0177;
PI = 3.14;


pont_arq = fopen("dados.txt", "w");
fprintf(pont_arq, "\n\nCusto da grama do ouro: %f", &custoouro);



//Aqui entra um comando para repetir as expressões para os diferentes valores de T (espessura).
i=0;
for(i=1 ; i <= qtdade ; i++){
    superficie = ((PI * PI ) * ( ( (2 * raio) + diametro) * diametro));
    quantidade = (peso * superficie * espessura);

    valor = custoouro * (quantidade / 10);

    fprintf(pont_arq, "\n\nO valor do anel e: %f", &valor);
    printf("\n\nO valor do anel e: %f", &valor);
}


return 0;

}
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DL.Fernandes   o resultado está saindo zerado por que você colocou esse caractere  &  lá no printf nessa linha 

printf("\n\nO valor do anel e: %f", &valor);

então só remover esse caractere e ficaria assim   :

printf("\n\nO valor do anel e: %.2f", valor);

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
13 horas atrás, devair1010 disse:

então só remover esse caractere e ficaria assim   :


printf("\n\nO valor do anel e: %.2f", valor);

 

 

@devair1010  eu fiz como sugeriu e não resolveu... testei através do compilador online (https://www.onlinegdb.com/online_c_compiler) e utilizando o CodeBlocks 17.12... 

 

Deu certo quando compilou ai ? :huh:

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DL.Fernandes   sim está rodando normal ,  e mostra um resultado no final , mas creio que a fórmula de cálculo não esteja certa ,  pois ele mostra um resultado exagerado  .  olha o print do resultado  :

5afcc6d05108a_gramasdeouro.jpg.a6b9c1e114652cfda50104c9c4d660cf.jpg

Compartilhar este post


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 publicações 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

×