2013-12-10 15 views
0

我很新的C++, 在這個程序結束時,我希望它跳回一個較早的子函數,允許用戶在稍後的子函數中提供新的輸出之前輸入新的值。 目前它將成功返回到所需的子功能。然而程序退出後,而不是繼續下一個子功能。更改子函數C++

這裏是int main;

int main() 
{ 
welcome(); 
input_dimensions(); 
input_loading(); 
transition(); 
twodarray(); 
initial_calculations(); 
bending_stress(); 
shearing_stress(); 
bearing_stress(); 
conclusion(); 
cin.get(); 
cin.get(); 
return 0; 
} 

和繼承人的最後一個子功能

// C O N C L U S I O N 
void conclusion() 
{ 
// End Results 
cout << "\n\n\n____________ C O N C L U S I O N_____________ \n\n" << endl; 

if ((bendingstress < designbending) && (shearstress < designshear) && (( bearingstress <= (designbearing * kc90)))) 
{ 
    cout << "Beam is adequate for the input loads \n\n\n" << endl; 
    cout << "\n\n\nPlease scroll up for more information \n\n\n" <<endl; 
    cout << "\nPlease press ENTER to design a new beam or close this screen to quit" <<endl; 
    system ("pause > nul");  
    system ("CLS"); 
    return input_dimensions(); 
} 

else 
{ 
    cout << "\n\n   W A R N I N G\n THIS BEAM IS AT RISK OF FAILURE ! \n" << endl; 
    cout << "\nPlease scroll up for more information before trying new values \n" <<endl; 
    cout << "\nOnce ready, please press ENTER to try new beam member properties \n" <<endl; 
    system ("pause > nul");  
    system ("CLS"); 
    return input_dimensions(); 
} 
} 

謝謝您的時間

+1

閱讀有關循環。 – jwodder

+1

另外,在繼續之前,'system(「pause」)'是一個等待按鍵的非常不方便的方法。 'getch'&'getche'是更好的選擇。 – enhzflep

+0

謝謝@enhzflep – CHARLIE

回答

0

但是在程序退出後它,而不是繼續到下一個子功能 。

  • 你叫input_dimensions()conclusion()
  • input_dimensions()返回時,將執行conclusion()內的下一個語句。
  • conclusion()返回, 執行將在main()繼續調用conclusion()後的語句。
  • 在那裏,你在main()裏面還有三條語句可以運行,然後程序退出。

除非您告訴它,否則C++不會多次運行語句,因此main()中的函數調用僅運行一次(您沒有任何循環)。

這裏是一個可能的解決問題的方法:

而不是讓所有的函數調用main(),可以使函數調用對方是這樣的:

void welcome(); 
void input_dimenstions(); 
void conclusion(); 
void initial_calculations(); 

void welcome() { 
    input_dimensions(); 
} 
void input_dimensions() { 
    initial_calculations(); 
} 
void initial_calculations() { 
    conclusion(); 
} 
void conclusion() { 
    if (...) { 
       input_dimensions(); 
    } 
    else { 
     ... 
    } 
} 

int main(int argc, char **argv) { 
    welcome(); 
} 

這樣,您就可以控制在哪裏讓程序下一步inisde每個功能,而不是讓main()做到這一點,這通常很麻煩。

通過聲明頂部的所有函數,您不必擔心後面的順序。