Ir ao conteúdo
  • Cadastre-se

C Função sempre retorna valor 0


Ir à solução Resolvido por Ricardov,

Posts recomendados

Bom dia a todos.

 

Estou tentando fazer um programa de simulação de lançamentos na Física, onde os inputs são a velocidade inicial e o ângulo e o output seria o tempo de subida.

 

O problema é que, não importa os valores que eu coloque, o programa sempre dará 0 segundos como resultado.

 

Alguém tem alguma ideia que possa ajudar?

 

Segue o programa:

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

int main(){

    int v0, ts, teta

    printf("Defina sua velocidade inicial: \n");

    scanf("%d", &v0);

    printf("Defina seu angulo de lancamento: \n");

    scanf("%d", &teta);
    
    ts = v0*sin(teta)/10

    printf("O tempo de subida do projetil foi de %d segundos", ts);

    return 0;


}

Ts = V0senθ/g

 

Retorno:

 

Defina sua velocidade inicial:
6
Defina seu angulo de lancamento:
30
O tempo de subida do projetil foi de 0 segundos
Process returned 0 (0x0)   execution time : 4.347 s
Press any key to continue.

Agradeço desde já.

 

PS: tem alguma problema se eu multiplicar um float por um int?

 

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

@Rafael Silva de Oliveira    não, não tem problema em multiplicar int por float apenas que o resultado será em float e para imprimir esse resultado precisa usar " %.2f ",  e seu programa está dando o resultado como zero porque o resultado é menor que 1 e como é inteiro ele não mostra o resultado com casas decimais  arredondando para zero, então para imprimir o resultado certo use float  no lugar de int e na hora de imprimir também .

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

Pessoal, certamente aprendi com as dicas de vocês, portanto agradeço, mas ainda não consegui resolver o problema

de forma satisfatória. A diferença é que o resultado retornado não foi zero, mas sim -0.59 (?).

 

Meu código ficou assim:

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

int main(){

    float v0, ts, teta;

    printf("Defina sua velocidade inicial: \n");

    scanf("%f", &v0);

    printf("Defina seu angulo de lancamento: \n");

    scanf("%f", &teta);

    ts = (v0*sin(teta))/10.0;

    printf("O tempo de subida do projetil foi de %f segundos", ts);

    return 0;


}

E o retorno foi:

 

Defina sua velocidade inicial:
6
Defina seu angulo de lancamento:
30
O tempo de subida do projetil foi de -0.592819 segundos
Process returned 0 (0x0)   execution time : 1.982 s
Press any key to continue.

Sendo que o resultado deveria ser ts = 6*sen30/10 = 0.3 s.

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

@Ricardov Muito obrigado mesmo, agora a função retornou o valor certo!

 

Código final:

 

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

int main(){

    float v0, ts, teta, a;

    printf("Defina sua velocidade inicial: \n");

    scanf("%f", &v0);

    printf("Defina seu angulo de lancamento: \n");

    scanf("%f", &a);

    teta = a*M_PI/180;

    ts = (v0*sin(teta))/10.0;

    printf("O tempo de subida do projetil foi de %f segundos", ts);

    return 0;


}

 

Retorno:

 

Defina sua velocidade inicial:
6
Defina seu angulo de lancamento:
30
O tempo de subida do projetil foi de 0.300000 segundos
Process returned 0 (0x0)   execution time : 1.947 s
Press any key to continue.

 

Muito obrigado a todos!

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

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!