2016-12-06 7 views
0

プログラムはn個の抵抗とキーボードの電圧を読み込み、等価抵抗と電流を計算する必要があります。 私の問題は、最後に入力された抵抗のみに基づいて計算することです。 関数内でメソッドを宣言できますか?または私はあなたが抵抗して読むと、あなたがするたびに全抵抗に加えないこと全抵抗の値を設定しているので、それがあるメソッド宣言の問題

#include "stdafx.h" 
#include<iostream> 
#include<conio.h> 

using namespace std; 

class rez { 
    float r; 
public: 
    void set(int n); 
    float val() { return r; } 
}; 

void rez :: set(int n) {   //n is the number of resistances 
    int i; 
    for (i = 1; i <= n; i++) { 

     cout << "R" << i << "="; 
     cin >> r; 
    } 

} 

float serie(rez r1,int n) 
{ 
    float s=0; 
    int i; 
    for (i = 1; i <= n; i++) 
    { 
     s = s+ r1.val(); 
    } 
    return s; 
} 

float para(rez r1, int n) 
{ 
    float s = 0; 
    int i; 
    for (i = 1; i <= n; i++) 
    { 
     s = s + (1/r1.val()); 
    } 
    return 1/s; 
} 


int main() 
{ 
    char c, k = 'y'; // 'c' selects series or para 
    rez r1;    
    int n; 
    cout << "number of resis:"; 
    cin >> n; 
    cout << endl; 
    while (k != 'q') 
    { 
      r1.set(n); 
      float i, u; 
      cout << "\n Vdc= "; 
      cin >> u; 
      cout << endl; 

     cout << "series or para(s/p)?"<<endl; 
     cin >> c; 
     switch (c) 
     { 
     case('s'):cout <<"\n equiv resistance = "<< serie(r1,n)<<endl; 
      i = u/serie(r1, n); 
      cout << "curr i = " << i << " amp"; 
      break; 
     case('p'):cout << "\n equiv res = " << para(r1, n)<<endl; 
      i = u/para(r1, n); 
      cout << "cur i = " << i << " amp"; 
      break; 
     } 



     cout <<endl<< "\n another set?(y/q)?"<<endl; 
     cin >> k; 

    } 
    return 0; 
} 
+0

に追加するには、一時的な変数を作成する必要があり、この問題を解決するには、「それは、関数内でメソッドを宣言することは可能ですか?」いいえ、ありがたいことに "functionception"(私が作成したばかりの用語)はC++ではサポートされていません。 – George

答えて

1

この完全に非現実的なアプローチをあきらめなければなりません。

void rez :: set(int n) {   //n is the number of resistances 
    int i; 
    for (i = 1; i <= n; i++) { 

     cout << "R" << i << "="; 
     cin >> r; // <- this sets the value of r, it does not add to it 
    } 

} 

は、あなたが入力抵抗を格納し、全抵抗

void rez :: set(int n) 
{ 
    int i; 
    for (i = 1; i <= n; i++) 
    { 
     float input; 
     cout << "R" << i << "="; 
     cin >> input; 
     r += input; 

    } 
} 
+0

'input'は' int'ではなく 'float'型でなければなりません。 –