该程序应从键盘读取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;
}

最佳答案

这是因为当您读入电阻时,您每次都设置的是总电阻值而不是总电阻。

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;

    }
}

10-06 05:07
查看更多