-1

こんにちは私はプログラムの助けが必要です、

データ:a = 8,5,0、f = 4,0,8、m = 0,2,4

ここで、0は次の式で数える必要があります:a = f / mなので、ここに私のコードがあります:

//Antrasis Niutono desnis
 #include <fstream>
 #include <iostream>
 using namespace std;
  //---------------------
void Odpowiedzi(int & a,int & f,int & m);
//---------------------
const char read[] = "duomenys1.txt";
const char result[] = "rezultatai1.txt";
//---------------------
int main() {
    ifstream rd(read);
    ofstream rs(result);
    int n,a,f,m;
    rd >> n;
    for(int i = 1; i <= n;i++) {
        rd >> a >> f >> m;
        Odpowiedzi(a,f,m);
        rs << a << "  " << f << "  " << m << endl;
    }
    rd.close();
    rs.close();
    return 0;
}
void Odpowiedzi(int & a,int & f,int & m)
{
    if(a=0 && f>0 && m>0)
        a=f/m;
    else if(f=0 && a>0 && m>0)
        f=m*a;
    else if(m=0 && a>0 && m>0)
        m=f/a;
}

結果はa=8,5,2 f = 4,10,8 m = 0,2,4である必要がありますが、私の結果はa = 0,0,0 f = 0,0,0 m = 0,0,0

4

1 に答える 1

2

C ++では、以下が割り当てです。

if(a=0 && f>0 && m>0)
    ^ THIS

ゼロに設定し、式の残りの部分を評価するときにa、そのゼロをブール値()として扱います。false

あなたは書くつもりでした:

if(a==0 && f>0 && m>0)
    ^^

この間違いはいくつかの場所で繰り返され、ゼロになる理由を説明しています。

コードをビルドするときにコンパイラの警告を有効にすることをお勧めします。これは、優れたコンパイラが発見して警告したエラーの1つです。

于 2013-03-13T16:41:44.717 に答える