2016-02-05 48 views
0

我想讓程序解決我的方程,但很遺憾它沒有。另外,我想讓它打印一個答案,這取決於我在方程中輸入的x的值。請讓我知道我將如何打印答案或如何編程,以便方程式給出我可以打印的答案。如何在C中打印方程的答案?

/* Preprocessor directives */ 
#include <stdio.h> 
#include <math.h> 

/* Main program */ 
void main() 
{ 
    /* 
     variable declaration section comments 

    l:    length value 
    q:    value of q 
    ei:    value of ei 
    s:    l devided by 2 since 0 < x < l/2 
    b:    the length l (thus, 20) 
    z:    0 
    first_equation: The first equation pertaining to 0 < x < l/2 
    second_equation:The second equation pertaining to l/2 < x < l 
*/ 

double x, first_equation, second_equation, l, q, ei, s, b, z; 

l = 20.0; 
q = 4000.0; 
ei = 1.2 * (pow(10.0, 8.0)); 
s = l/2.0; 
b = l; 
z = 0.0; 

printf ("please enter the x-value\n"); 
scanf ("%lf", &x); 

/* Deflection equations */ 
first_equation = ((q * x)/(384.0 * ei)) * ((9 * (pow(l, 3.0))) - (24.0 * l  * (pow(x, 2.0))) + (16 * (pow(x, 3.0)))); 
second_equation = ((q * l)/(384.0 * ei)) * ((8 * (pow(x, 3.0))) -  (24.0 *  l * (pow(x, 2.0))) + (17 * (pow(l, 2.0)) * x) - (pow(l, 3.0))); 

    /* Determining what equation to use */ 
    if (x >= z && x <= s) 
     printf ("\n first_equation\n\n"); 
    else if (x > s && x <= b) 
     printf ("\n second_equation\n\n", second_equation); 
    else if (x < 0 || x > b) 
     printf ("\n invalid location\n\n"); 

    return; 
} 
+0

正因爲如此,這個問題只給出一半的數據。等式的數學表達式是什麼?而最重要的是,是什麼讓你認爲「方程式不解決」 - 什麼不符合你的期望?請明確點。 – iksemyonov

+1

這是「C」還是「C++」? – Galik

+0

所以基本上我會想給first_equation和second_equation給出值的答案和任何x要打印,或者至少使它爲我解決它,然後我會讓它與正確的值相對應。 – DanielRossi

回答

3

這...

printf ("\n second_equation\n\n", second_equation); 

...不打印second_equation變量:它提供了它作爲參數傳遞給printf,但printf僅使用的指導下%f或其他轉換額外的參數嵌入在作爲第一個參數提供的文本中的指令。你可以這樣寫:

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

你可能想爲first_equation做類似的事情。您可以使用C++ I/O例程(scanfprintf來自C庫,並且有許多缺點,這裏最明顯的就是您必須記住有趣的字母代碼,如「LF」符合您的數據類型)...

#include <iostream> 

...在你的文件的最頂部,然後在你的函數寫...

std::cout << "\n second_equation " << second_equation << "\n\n"; 

你可以還使用C++ I/O進行輸入,替代scanf與...

if (!(std::cin >> x)) 
{ 
    std::cerr << "you didn't enter a valid number\n"; 
    exit(1); 
} 
0

你的代碼是真的不清楚;但通過你的問題,你似乎希望能夠打印你的答案。在這種情況下,這裏是正確的語法

printf ("Answer: %d \n", yourAnswer); //if 'yourAnswer' is decimal or number 

要使用你的代碼片段之一,你有這樣的:

printf ("\n second_equation: %d\n", second_equation);