0

私は、ユーザーに赤ちゃんの数を尋ね、各赤ちゃんに関する入力を収集して、それをコンソールに表示するプログラムを作成しようとしています。私はそこまでの道のりの90%ですが、行き詰まっています。

コンソールの入出力は次のようになります。

赤ちゃんの数を入力してください:2

赤ちゃん#1の身長を入力してください:21.5

赤ちゃん#2の身長を入力してください:19.75

赤ちゃん#1の情報:身長:21.5インチ

赤ちゃん#2の情報:身長:19.75インチ

私のコードの出力は、両方の赤ちゃんの身長として19.75を表示し続けます。ポインターを使用してさまざまな値をaBaby.heightに動的に割り当てる必要があることはわかっていますが、これまで構造内でポインターを使用したことはありません。どんな助けでも大歓迎です。

#include <iostream>
using namespace std;

struct Baby {
double length;
};
int main ()
{    
int iNumBaby = 0;

cout<<"Please enter the number of babies: ";
cin>>iNumBaby;
cout<<endl;
Baby aBaby;

Baby* pBaby = new Baby[iNumBaby];

for(int i = 0; i < iNumBaby; i++)
{
cout << "Please enter baby #"<< i + 1 <<"'s height <inches>: ";
cin >> aBaby.length;
cout << "\n";
}  
for(int i = 0; i < iNumBaby; i++)
{
cout << "\Baby #"<<i + 1<<"'s info:\n";
cout << "Height: " <<aBaby.length<<" inches"<<endl;
cout << "\n";
}
system("PAUSE");  
delete[] pBaby;
return 0;
}
4

2 に答える 2

1

ポインタとは何の関係もありません。コードにバグがあるだけです。次のブロックを参照してください。

for(int i = 0; i < iNumBaby; i++)
{
    cout << "Please enter baby #"<< i + 1 <<"'s height <inches>: ";
    cin >> aBaby.length;
    cout << "\n";
}

ここでの主な問題は、エントリをaBaby.length毎回保存していることです。実際、pBabyコードのどこでも使用したことはありません。私はこれがあなたが望むものだと思います:

for(int i = 0; i < iNumBaby; i++)
{
    cout << "Please enter baby #" << i + 1 << "'s height <inches>: ";
    cin  >> pBaby[i].length;
    cout << "\n";
}

for(int i = 0; i < iNumBaby; i++)
{
    cout << "Baby #" << i + 1 <<"'s info:\n";
    cout << "Height: " << pBaby[i].length << " inches" << endl;
    cout << "\n";
}
于 2013-03-07T03:41:39.570 に答える
1
for(int i = 0; i < iNumBaby; i++)
{
cout << "Please enter baby #"<< i + 1 <<"'s height <inches>: ";
cin >> aBaby.length;
cout << "\n";
}  

問題はaBaby.lengthへの割り当てにあります。すべての赤ちゃんの長さを同じオブジェクトに割り当てています。作成した赤ちゃんの配列にアクセスして、それらの長さを変更してみてください。例:

cin >> pBaby[i].length
于 2013-03-07T03:42:04.727 に答える