0

というわけで、私が取り組んでいるプログラムを以下に示します。これまでのところ、CPP ファイルの double 値を出力するだけです。設定した 2 つの文字配列に注意してください。どうしてこれなの?

Molecule.h

const int MAX_STRUCT = 10;
const int MAX_NAME = 20;

class Molecule {
    char molecule_structure[];
    char molecule_name[];
    double molecule_mass;
 public: 
    Molecule();
    bool read();
    void display() const;
};        

分子.cpp

#include <iostream>
#include <cstring>
using namespace std;
#include "Molecule.h"

Molecule::Molecule() {

molecule_structure[0] = '\0';
molecule_name[0] = '\0';
molecule_mass = 0;

}

bool Molecule::read(){

bool complete = false;

    cout << "Enter structure : ";
    cin.getline (molecule_structure, 10);

    if (strcmp (molecule_structure, "0") != 0){

    cout << "Enter full name : ";
    cin.getline (molecule_name, 20);

    cout << "Enter weight : ";
    cin >> molecule_mass;

    cin.ignore();
    complete = true;       
}

else {

molecule_structure[0] = '\0';
molecule_name[0] = '\0';
molecule_mass = 0;

}

return complete;

}


void Molecule::display() const
{       
cout << molecule_structure << "       " << molecule_name  << "       " << molecule_mass     << endl;
}

w4x.h

 const int MAX_MOLECULES = 10;

w4x.cpp

 #include <iostream>
 using namespace std;
 #include "w4x.h"
 #include "Molecule.h"

 int main() {
 int n = MAX_MOLECULES;
 Molecule molecule[MAX_MOLECULES];

 cout << "Molecular Information\n";
 cout << "=====================" << endl;

 for (int i = 0; i < MAX_MOLECULES; i++) {
     if (!molecule[i].read()) {
         n = i;
         i = MAX_MOLECULES;
     }
     cout << endl;
 }

 cout << "Structure            Name                     Mass\n";
 cout << "==================================================" << endl;

 for (int i = 0; i < n; i++)
     molecule[i].display();
 }

私が信じているエラーは、私が変更してきた Molecule.cpp ファイルから発生していると思われます。これは私が現在受け取っている出力です。

Molecular Information

=====================

Enter structure : Super 
Enter full name : Man
Enter weight : 57

Enter structure : 0

Structure            Name                     Mass
==================================================
              57
4

1 に答える 1