2016-09-03 1 views
-8

функции есть, а также разделC: Правильный результат не возвращается к основному заголовку

расчет В принципе, правильный результат не возвращается в основной, где значение всегда равно нулю.

** Идеально отвечайте в визуальном коде для простоты.

(Этот код сокращен от исходного источника).

#include <stdio.h> 
#include <math.h> 
#define PI 3.14159265358979323846 
#define GRAVITY 9.8 

// Function header: air time 
double CalculateAirTime(double maxVelocity, double userAngle, double airTime); 


int main(void) 
{ 
    // Variables 
    double maxVelocity; 
    double userAngle; 
    double ansDistance; 
    double airTime; 


// Run function: air time 
airTime = CalculateAirTime(airTime); 


return 0; 
} 


// Function calc: air time 
double CalculateAirTime(double velocity, double angle, double time) 
{ 
    printf("Total air time: %f\n", time); 
    time = ((2*velocity)*sin(angle)/GRAVITY); 
    return time; 
} 
+5

Ваша функция имеет 3 аргумента, но вы только поставить один? – Li357

+1

Имейте в виду, что 'sin()' принимает аргумент в радианах вместо градусов. – timrau

+0

В чем вопрос? –

ответ

2

1. Ваша функция подписи принимает 3 аргумента, и вы только поставить 1. Как он компилирует, я не знаю, как я не думаю, что это должно быть.

2. Функция CalculateAirTime печатает переменную перед ее вычислением. Сначала это сделать: printf("Total air time: %f\n", time);, а затем рассчитать фактическое эфирное время: time = ((2*velocity)*sin(angle)/GRAVITY);

3. Как совет, так как функция CalculateAirTime нужна скорость и угол, чтобы вернуть расчетное время, не провести время в качестве параметра. Это бесполезно. Вы можете объявить двойную переменную внутри функции или напрямую вернуть расчетное время.

Заменить double CalculateAirTime(double velocity, double angle, double time){...} с double CalculateAirTime(double velocity, double angle){...}

* EDIT! Для ясности, вот как я бы, наверное, написать программу: **

#include <stdio.h> 
#include <math.h> 
#define PI 3.14159265358979323846 
#define GRAVITY 9.8 

/* 
I renamed some variables. Just from the variable names, I think you do not understand the solution 
for this "air time" problem well. I might be mistaken tough. If you have any questions, please 
ask them. You are not leaving this place until you fully understand what is happening. 
*/ 

// Function DECLARATION: 
double CalculateAirTime(double Initial_Velocity, double Launch_Angle); 

int main(void) 
{ 
    // variables 
    double Initial_Velocity; 
    double Launch_Angle; 

    // Initial_Velocity = 20.0 should work aswell. This is called a cast. You will learn about it later 
    Initial_Velocity = (double)(20.0); 
    // Converting 45 degrees to radians, because the sin() library function works with radians 
    Launch_Angle = (double)((45.0/180.0)*PI); 

    //Call function using our declared values as input 
    CalculateAirTime(Initial_Velocity,Launch_Angle); 


return 0; 
} 


// Function DEFINITION 
//Try to use the same name for paramaters here, as you did in the declaration! 
double CalculateAirTime(double Initial_Velocity, double Launch_Angle) 
{ 
    double Air_Time; 
    Air_Time = (double)((2*Initial_Velocity)*sin(Launch_Angle)/GRAVITY); 

    printf("Total air time: %f\n", Air_Time)); 
    return time; 
} 
+0

Могу ли я получить визуальную интерпретацию для простоты? –

+0

Что это значит? Вы хотите, чтобы я написал полную программу в окончательной форме? –

+0

Да, я редактировал некоторые параметры и другие элементы кода, и, похоже, он работает нормально. Спасибо за помощь. –

Смежные вопросы