Ir para conteúdo
Fórum Script Brasil
  • 0

Programa com formula de fisica


vjunior

Pergunta

Olá to precisando de uma ajuda em um trabalho pra quem manja em C é o seguinte não estou conseguindo encaixar a formula corretamente de velocidade media quem pode me ajuda aê agradeço desde de já.

8) Faça um programa que seja capaz de resolver problemas de Física, ou seja,

Movimento Uniforme - MU.

Entrada: O usuário deverá entrar com duas informações das três possíveis, ou seja:

a velocidade (km/h ou m/s), o tempo gasto (min,seg,hora) num percurso e/ou o

espaço percorrido (m ou km).

Crítica: As duas informações dadas pelo usuário devem ser maiores que ZERO.

Lembre-se: Há três informações para esses tipos de problemas, conforme acima. A

que não for informada, é a

que deverá ser calculada.

a) Use MENUS para mostrar as opções que o programa oferece, ou seja:

B) Calcular o espaço percorrido e fazer as devidas conversões com as unidades de

medida;

c) Calcular o tempo gasto num percurso e fazer as devidas conversões com as

unidades de medida;

d) Calcular a velocidade média e fazer as devidas conversões com as unidades de

medida;

e) A resposta do espaço percorrido deverá ser obtida em km ou m, o usuário

escolhe.

f) A resposta do tempo gasto deverá ser obtida em h ou min, o usuário escolhe.

g) A resposta da velocidade média deverá ser obtida em km/h ou m/s, o usuário

escolhe.

h) Use e funções.

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

Queria só uma ajuda sobre as funções tipo montei so o menu, e to tentando chamar a função pelo switch case.

do{

printf("\n ********** MENU **********\n");

printf("\n 1 - Calcular o espaço percorrido e fazer as devidas conversões com as unidades de medida");

printf("\n 2 - Calcular o tempo gasto num percurso e fazer as devidas conversões com as unidades de medida");

printf("\n 3 - Calcular a velocidade média e fazer as devidas conversões com as unidades de medida");

printf("\n 4 - Sair\n");

printf("\n # Digite o numero da opcao desejada: ");

scanf("%d",&op);

Link para o comentário
Compartilhar em outros sites

  • 0

e cade o switch?

Uma maneira de se fazer é colocar o switch dentro do do-while.

do{
    printf("\n ********** MENU **********\n");
    printf("\n 1 - Calcular o espaço percorrido e fazer as devidas conversões com as unidades de medida");
    printf("\n 2 - Calcular o tempo gasto num percurso e fazer as devidas conversões com as unidades de medida");
    printf("\n 3 - Calcular a velocidade média e fazer as devidas conversões com as unidades de medida");
    printf("\n 4 - Sair\n");
    printf("\n # Digite o numero da opcao desejada: ");
    scanf("%d",&op);

    if(op<1 || op>4)
        continue;

    switch(op){
        case 1:
               ...comandos...
        break;

        case 2:
               ...comandos...
        break;

        case 3:
               ...comandos...
        break;
    }

} while(op != 4);

Link para o comentário
Compartilhar em outros sites

  • 0

estou tentando fazer por função dentro do switch a chamada pra ler as variaveis por exemplo, eu calculo a velocidade media e deixo o valor gravado de velocidade media e faço o calculo do espaço percorrido e do tempo com o uso das funções alguém poderia me ajudar com um exemplo com uma função com ponteiro?

qualquer ajuda será bem vinda!

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

void LeTempo(float tmp);

void LeVelocidadeMedia(float vm);

void LeSpaco(float esp);

float ConverSpaco(float esA, float esB);

float ConverTempo(float tmA, float tmB);

float CalculaVm(float esp, float tmp);

float CalculaS(float vm, float tmp);

float CalculaT(float vm, float esp);

int main(){

float tmp, esA, esB;

float vm, esp, tmA;

float tmB;

int t, op, m;

do{

printf("\n ********************************** MENU *****************************************************\n");

printf("\n 1 - Calcular o espaço percorrido e fazer as devidas conversões com as unidades de medida");

printf("\n 2 - Calcular o tempo gasto num percurso e fazer as devidas conversões com as unidades de medida");

printf("\n 3 - Calcular a velocidade média e fazer as devidas conversões com as unidades de medida");

printf("\n 4 - Sair\n");

printf("\n # Digite o numero da opcao desejada: ");

scanf("%d",&op);

system("cls");

if(op<1 || op>4)

continue;

switch(op){

case 1:

break;

case 2:

break;

case 3:

printf("\ndigite o espaco percorrido");

scanf("%f", &esp);

setbuf(stdin,NULL);

printf("\nQual a unidade de medida"

"\n1. Km"

"\n2. Metros");

scanf("%f", &t);

setbuf(stdin,NULL);

printf("%f", LeTempo(tmp));

//scanf("%f", &tempo);

setbuf(stdin,NULL);

printf("\nQual a unidade de medida"

"\n1. Horas"

"\n2. Minutos"

"\n3. Segundos");

scanf("%f", &m);

setbuf(stdin,NULL);

printf("%fkm/h", CalculaVm(esp, tmp));

break;

}

} while(op != 4);

system("pause");

getchar();

return(0);

}

void LeTempo(float tmp){

printf("Digite o tempo gasto: ");

scanf("%f", &tmp);

}

void LeVelocidadeMedia(float vm){

printf("Digite a velocidade media: ");

scanf("%f", &vm);

}

void LeSpaco(float esp){

printf("Digite o espaco percorrido: ");

scanf("%f", &esp);

}

float ConverSpaco(float esA, float esB){

}

float ConverTempo(float tmA, float tmB){

}

float CalculaVm(float esp, float tmp){

float VM;

VM=(esp/tmp);

return(VM);

}

float CalculaS(float vm, float tmp){

}

Link para o comentário
Compartilhar em outros sites

  • 0

Cara consegui fazer isso alguém ae pode me ajudar com as funções como posso colocar elas e como devo chamar as funções PF GENTE

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

float LeTempo(float tmp);

void LeVelocidadeMedia(float vm);

void LeSpaco(float esp);

float ConverSpaco(float esA, float esB);

float ConverTempo(float tmA, float tmB);

float CalculaVm(float esp, float tmp);

float CalculaS(float vm, float tmp);

float CalculaT(float vm, float esp);

int main(){

int hs, min, seg; //TEMPO

int km, mt, op; // ESPAÇO

int k_h, m_s; //TRANSFORMAÇÃO DE ESPAÇO

int op2, op3, op4;

float velocidade, tempo, espaco;

do{

printf("\n===================Menu======================="

"\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"

"\n1. calculo da velocidade media"

"\n2. calcular espaco percorrido "

"\n3. calcular tempo gasto "

"\n4. sair"

"\n" );

scanf("%d",&op);

system("cls");

if(op<1 || op>4)

continue;

switch(op){

case 1:

printf("\nDigite o espaco percorrido");

scanf("%f", &espaco);

setbuf(stdin,NULL);

while(op2<1 || op2>2){

printf("\nQual a unidade de medida? "

"\n1- Km"

"\n2- Metros"

"\n");

scanf("%d", &op2);

}

//while(op2<0 || op2>2); //mexendo

setbuf(stdin,NULL);

printf("\nDigite o tempo gasto");

scanf("%f", &tempo);

setbuf(stdin,NULL);

while(op3<1 || op3>3){

printf("\nQual a unidade de medida? "

"\n1- Horas "

"\n2- Minutos "

"\n3- Segundos "

"\n");

scanf("%d", &op3);

}

setbuf(stdin,NULL);

while(op4<1 || op4>2){

printf("\nQual a forma da resposta?"

"\n1- Km/h"

"\n2- m/s"

"\n");

scanf("%d", &op4);

setbuf(stdin,NULL);

}

break;

case 2:

break;

case 3:

break;

}

} while(op != 4);

getchar();

return(0);

}

float LeTempo(float tmp){

printf("Digite o tempo gasto: ");

scanf("%f", &tmp);

}

void LeVelocidadeMedia(float vm){

printf("Digite a velocidade media: ");

scanf("%f", &vm);

}

void LeSpaco(float esp){

printf("Digite o espaco percorrido: ");

scanf("%f", &esp);

}

float ConverSpaco(float esA, float esB){

}

float ConverTempo(float tmA, float tmB){

float t

switch(t)

case 1:

}

float CalculaVm(float esp, float tmp){

float VM;

VM=(esp/tmp);

return(VM);

}

float CalculaS(float vm, float tmp){

}

Link para o comentário
Compartilhar em outros sites

  • 0

É realmente necessário colocar cada leitura de dados em uma função?

Isso torna o código bem ilegível, e complica muito um algoritmo fácil.

Ao postar um código, utilize as tags 'CODE' do fórum. E sempre idente seu código.

Sobre o código, você tem uns ponto-e-vírgula faltando, uns abre-chaves sem fecha-chaves, uns erros de funções (por exemplo, um switch com variável float. Switch deve receber um inteiro).

O que eu recomendo...

Faça três funções apenas.

1º: Função do menu

int menu();
Apenas exibe o menu, e retorna o inteiro que corresponde á opção que o usuário quer. 2º: Função de E/S
void entrSaid(int opcao, float *valor1, float *valor2);
Recebe a opção (o que o usuário quer calcular), e dois ponteiros, que correspondem aos dois valores a serem entrados. Por receber por referência as variáveis a serem completadas, não é necessário retornar nada. 3º: Função de cálculo
float calculo(int opcao, float valor1, float valor2);

Recebe a opção, pois é a mesma que irá definir qual será o cálculo. Também recebe os valores a serem utilizados no cálculo, e retorna o float, que é o resultado.

Isso irá facilitar e muito.

Link para o comentário
Compartilhar em outros sites

  • 0

QUERIA SABER COMO FAZ PRO USUARIO não ENTRAR COM Zero se alguém poder colocar ae pra mim eu agradeço

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

float CalculaVm(float esp, float tmp);
float CalculaS(float vm, float tmp);
float CalculaT(float esp, float vm);

int main(){
    int hs, min, seg;   //TEMPO
    int km, mt, op;    // ESPAÇO
    int k_h, m_s;      //TRANSFORMAÇÃO DE ESPAÇO
    int op2, op3, op4;
    float velocidade, tempo, espaco;
  while(op<1 || op>4){
    printf("\n===================Menu======================="
           "\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
           "\n1. calculo da velocidade media"
           "\n2. calcular espaco percorrido "
           "\n3. calcular tempo gasto       "
           "\n4.  para sair " 
           "\n" ); 
           
    scanf("%d",&op);
    setbuf(stdin,NULL);
       
}
          

    switch(op){
        case 1:
              printf("\nDigite o espaco percorrido em Km");
              scanf("%f", &espaco);
              setbuf(stdin,NULL);
                printf("\nDigite o tempo gasto em Horas");
                scanf("%f", &tempo);
                setbuf(stdin,NULL);
           
            while(op2<1 || op2>2){     
                printf("\nQual a forma da resposta?"
                     "\n1- Km/h"
                     "\n2- m/s"
                     "\n");
                scanf("%d", &op2);
                setbuf(stdin,NULL);
                }
                switch(op2){
                    case 1:
                          printf("\n%.2f Km/h", CalculaVm(espaco, tempo));
                          getchar();  
                          setbuf(stdin,NULL);  
                    break;
                    
                    case 2:
                          printf("\n%.2f m/s", CalculaVm(espaco, tempo)/3.6);        
                          getchar();  
                          setbuf(stdin,NULL);  
                    break;        
                            }
                                           
        break;

        case 2:
               printf("\nDigite velocidade media em Km/h ");
               scanf("%f", &velocidade);
               setbuf(stdin,NULL);
               printf("\nDigite o tempo gasto em Horas");
               scanf("%f", &tempo);
               setbuf(stdin,NULL);
               
               
               while(op2<1 || op2>2){     
                printf("\nQual a forma da resposta?"
                     "\n1- Km"
                     "\n2- metros"
                     "\n");
                scanf("%d", &op2);
                setbuf(stdin,NULL);
                }
                switch(op2){
                    case 1:
                          printf("\n%.2f Km", CalculaS(velocidade, tempo));
                          getchar();  
                          setbuf(stdin,NULL);  
                    break;
                    
                    case 2:
                          printf("\n%.2f metros", CalculaS(velocidade, tempo)*1000);        
                          getchar();  
                          setbuf(stdin,NULL);  
                    break;        
                    }
                          
               
               
               
        break;

        case 3:
              printf("Digite a velocidade media em Km/h");
              scanf("%f", &velocidade);
              setbuf(stdin,NULL);
              printf("Digite o espaco percorrido em Km ");
              scanf("%f", &espaco);
              setbuf(stdin,NULL);
              
              while(op2<1 || op2>3){     
                printf("\nQual a forma da resposta?"
                     "\n1- HORAS"
                     "\n2- MINUTOS"
                     "\n3- SEGUNDOS"
                     "\n");
                scanf("%d", &op2);
                setbuf(stdin,NULL);
        
                
                }
                switch(op2){
                    case 1:
                          printf("\n%.2f HORAS", CalculaT(espaco, velocidade));
                          getchar();  
                          setbuf(stdin,NULL);  
                    break;
                    
                    case 2:
                          printf("\n%.2f MINUTOS", CalculaT(espaco, velocidade)*60);        
                          getchar();  
                          setbuf(stdin,NULL);  
                    break;        
                    
                    case 3:
                          printf("\n%.2f SEGUNDOS ", CalculaT(espaco, velocidade)*3600);        
                          getchar();  
                          setbuf(stdin,NULL);  
                    break;        
                    }
              
        break;
    }


    
 printf("Operacao realizada com sucesso!");   
 getchar();   
 return(0);   
    
    
        }

                      

float CalculaVm(float esp, float tmp){
       float VM;
          VM=(esp/tmp);
          return(VM);
      
}
float CalculaS(float vm, float tmp){
      float SP;
        SP=(vm*tmp);
        return(SP);
                     
}
float CalculaT(float esp, float vm){
      float T;
        T=(esp/vm);
        return(T);      
}

Link para o comentário
Compartilhar em outros sites

  • 0

Opa, Entrar com zero a onde? se for no inicio do programa( no menu) coloquei um "if" logo abaixo do main para testar a opção escolhida.Caso for menor do que 1 e maior do que 4, dá uma mensagem na tela, e fecha o programa.

Teu codigo alterado depois do menu.

int main(){
    int hs, min, seg;   //TEMPO
    int km, mt, op;    // ESPAÇO
    int k_h, m_s;      //TRANSFORMAÇÃO DE ESPAÇO
    int op2, op3, op4;
    float velocidade, tempo, espaco;
  while(op<1 || op>4){
    printf("\n===================Menu======================="
           "\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
           "\n1. calculo da velocidade media"
           "\n2. calcular espaco percorrido "
           "\n3. calcular tempo gasto       "
           "\n4.  para sair "
           "\n" );
          
    scanf("%d",&op);
    setbuf(stdin,NULL);
     

       if (op < 1 || op > 4)
    {
      printf("Opcao Invalida\n");
      system("pause");
      exit(0);
    }    
       
}
Agora se , não poderá entrar com zero em alguma das opções escolhida pelo usuario, como "espaço percorrido", "tempo em horas"... faça a mesma coisa, que eu fiz anteriormente, use um "if" e teste a variavel.. Exemplo:
switch(op){
        case 1:
              printf("\nDigite o espaco percorrido em Km");
              scanf("%f", &espaco);
              setbuf(stdin,NULL);
            
               if (&espaço == 0 || &espaço < 0){
               
                     //comandos;
               }
              
                printf("\nDigite o tempo gasto em Horas");
                scanf("%f", &tempo);
                setbuf(stdin,NULL);

                 if (&tempo == 0 || &espaço < 0){
               
                     //comandos;
                 }
              
                ............

Editado por Prog_Junior
Link para o comentário
Compartilhar em outros sites

  • 0

Opa, faça conforme expliquei anteriormente... faça um "if (comando de condição) para testar sua variavel. Conforme ultimo "post".

Logo após o usuario digitar o valor correspondente, teste esse valor, se for "zero", faça seus comandos;

Senão for zero, continue seu algoritimo.

Link para o comentário
Compartilhar em outros sites

  • 0

Agradeço a ajuda de voces gente e o programa ficou assim, poderia ter saido melhor mais não consegui se alguém conseguir editar alguma coisa me avisa ae que eu gostaria de poder revisar o meu programa também

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


float CalculaVm(float esp, float tmp);
float CalculaS(float vm, float tmp);
float CalculaT(float esp, float vm);


int main(){
    int hs, min, seg;   //TEMPO
    int km, mt, op;    // ESPAÇO
    int k_h, m_s;      //TRANSFORMAÇÃO DE ESPAÇO
    int op2, op3, op4;
    float velocidade, tempo, espaco;
    while(op<1 || op>4){
    printf("\n===================Menu======================="
           "\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
           "\n1. calculo da velocidade media"
           "\n2. calcular espaco percorrido "
           "\n3. calcular tempo gasto       "
           "\n4.  para sair " 
           "\n" ); 
           scanf("%d",&op);
           setbuf(stdin,NULL);       
                        }        
    switch(op){
        case 1:
              
              printf("\nDigite o espaco percorrido em Km = ");
              scanf("%f", &espaco);
              setbuf(stdin,NULL);
        if (espaco == 0 || espaco < 0){
              
                         printf("DIGITE UM NUMERO MAIOR QUE ZERO!\n");
                         printf("\nTENTE NOVAMENTE DO COMECO!\n");
                         system("pause");
                         exit(0);
                                               }        
              
                         printf("\nDigite o tempo gasto em Horas = ");
                         scanf("%f", &tempo);
                         setbuf(stdin,NULL);
        if(tempo == 0|| tempo < 0){
                         printf("DIGITE UM NUMERO MAIOR QUE ZERO!\n");
                         printf("\nTENTE NOVAMENTE DO COMECO!\n");
                         system("pause");
                         exit(0);
                                           }
           
        while(op2<1 || op2>2){     
                          printf("\nQual a forma da resposta?"
                          "\n1- Km/h"
                          "\n2- m/s"
                          "\n");
                          scanf("%d", &op2);
                          setbuf(stdin,NULL);
                             }
        switch(op2){
                    case 1:
                          printf("\n%.2f Km/h", CalculaVm(espaco, tempo));
                          getchar();  
                          setbuf(stdin,NULL);
                    break;
                    
                    case 2:
                          printf("\n%.2f m/s", CalculaVm(espaco, tempo)/3.6);        
                          getchar();  
                          setbuf(stdin,NULL);  
                    break;        
                 }
            
                               
        break;

        case 2:
               printf("\nDigite velocidade media em Km/h = ");
               scanf("%f", &velocidade);
               setbuf(stdin,NULL);
                         if(velocidade == 0|| velocidade < 0){
                         printf("DIGITE UM NUMERO MAIOR QUE ZERO!\n");
                         printf("\nTENTE NOVAMENTE DO COMECO!\n");
                         system("pause");
                         exit(0);}
               printf("\nDigite o tempo gasto em Horas = ");
               scanf("%f", &tempo);
               setbuf(stdin,NULL);
                         if(tempo == 0|| tempo < 0){
                         printf("DIGITE UM NUMERO MAIOR QUE ZERO!\n");
                         printf("\nTENTE NOVAMENTE DO COMECO!\n");
                         system("pause");
                         exit(0);}
               
               
        while(op2<1 || op2>2){     
                printf("\nQual a forma da resposta?"
                "\n1- Km"
                "\n2- metros"
                "\n");
                scanf("%d", &op2);
                setbuf(stdin,NULL);
                                    }
                switch(op2){
                    case 1:
                          printf("\nRESPOSTA = %.2f Km", CalculaS(velocidade, tempo));
                          getchar();  
                          setbuf(stdin,NULL);  
                    break;
                    
                    case 2:
                          printf("\nRESPOSTA = %.2f metros", CalculaS(velocidade, tempo)*1000);        
                          getchar();  
                          setbuf(stdin,NULL);  
                    break;        
                           }
               
               
                    break;

                    case 3:
                   
                         printf("Digite o espaco percorrido em Km = ");
                         scanf("%f", &espaco);
                         setbuf(stdin,NULL);
                     if(espaco == 0|| espaco < 0){
                         printf("DIGITE UM NUMERO MAIOR QUE ZERO!\n");
                         printf("\nTENTE NOVAMENTE DO COMECO!\n");
                         system("pause");
                         exit(0);}
                         printf("Digite a velocidade media em Km/h = ");
                         scanf("%f", &velocidade);
                         setbuf(stdin,NULL);
                     if(velocidade == 0|| velocidade < 0){
                         printf("DIGITE UM NUMERO MAIOR QUE ZERO!\n");
                         printf("\nTENTE NOVAMENTE DO COMECO!\n");
                         system("pause");
                         exit(0);}
              
                    while(op2<1 || op2>3){     
                         printf("\nQual a forma da resposta?"
                         "\n1- HORAS"
                         "\n2- MINUTOS"
                         "\n3- SEGUNDOS"
                         "\n");
                         scanf("%d", &op2);
                         setbuf(stdin,NULL);        
                                          }                                         
                switch(op2){
                    case 1:
                          printf("\nRESPOSTA = %.2f HORAS", CalculaT(espaco, velocidade));
                          getchar();  
                          setbuf(stdin,NULL);  
                    break;
                                        
                    case 2:
                          printf("\nRESPOSTA = %.2f MINUTOS", CalculaT(espaco, velocidade)*60);        
                          getchar();  
                          setbuf(stdin,NULL);  
                    break;
                                                
                    case 3:
                          printf("\nRESPOSTA = %.2f SEGUNDOS ", CalculaT(espaco, velocidade)*3600);        
                          getchar();  
                          setbuf(stdin,NULL);  
                    break;        
                            }
              
        break;
    }
    
 printf("\nOPERACAO REALIZADA COM SUCESSO!");   
 getchar();   
 return(0);
          }                    
                      
float CalculaVm(float esp, float tmp){
       float VM;
          VM=(esp/tmp);
          return(VM);
      
}
float CalculaS(float vm, float tmp){
      float SP;
        SP=(vm*tmp);
        return(SP);
                     
}
float CalculaT(float esp, float vm){
      float T;
        T=(esp/vm);
        return(T);      
}

Link para o comentário
Compartilhar em outros sites

  • 0

if (espaco == 0 || espaco < 0){
Nesses casos (verificação de uma variável), faça sem o ||...
if (espaco <= 0){
Sobre essa verificação pra saber se o usuário digitou zero... Prefira um laço 'do-while'. Ele executa no mínimo uma vez, e dependendo do valor da variável de controle, pode ou não ser executado mais vezes... Um exemplo:
do{
        printf("Digite um valor: ");
        scanf("%f", &valor);
} while(valor <= 0);
Ou seja, se o usuário digitar um número maior que zero, executa apenas uma vez. Ao contrário, executa até o usuário digitar um valor válido. Você também pode colocar um aviso para o usuário...
do{
        printf("Digite um valor: ");
        scanf("%f", &valor);
        if(valor <= 0)
               printf("Digite apenas valores maiores que zero.\n");
} while(valor <= 0);

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...