안녕하세요, 코드에서 void initialize() 함수를 호출하는 데 문제가 있습니다. 나는 배열이 초기화 (에 정의되어이void 함수 문제가 발생했습니다.
//cccccccccccccccccccccccccc
cxxxxxxxxxxxxxxxxxxxxxxxxc
cxxxxxxxxxxxxxxxxxxxxxxxxc
cxxxxxxxxxxxxxxxxxxxxxxxxc
cxxxxxxxxxxxxxxxxxxxxxxxxc
cxxxxhhhhhhhxxxxxxxxxxxxxc
cxxxxhhhhhhhxxxxxxxxxxxxxc
cxxxxhhhhhhhxxxxxxxxxxxxxc
cxxxxhhhhhhhxxxxxxxxxxxxxc
cxxxxxxxxxxxxxxxxxxxxxxxxc
cccccccccccccccccccccccccc//
과 같은 배열)을 얻기 위해 가정 및 변수는 FIN, SteamPipe 및 GridPT 클래스에서 제공하고 있습니다. 내 코드 배열 내에서 첫 번째 답변 집합을 제공하고 있지만 배열에 도착하면 기호 '?' 이것이 GridPT 클래스에서 지정된 것입니다. void 함수를 호출하는 방식이 잘못되었거나 변수를 전달하는 데 잘못된 것이 있다고 생각합니까? 나는 이미 const를 꺼내려고 노력했지만 여전히 동일하다. 여기 내 코드 .H 파일
#include<iostream>
#include<istream>
#include<cmath>
#include<cstdlib>
using namespace std;
const int maxFinHeight = 100;
const int maxFinWidth = 100;
class Steampipe
{
private:
int height, width;
double steamTemp;
public:
Steampipe (int H = 0, int W = 0, double sT = 0.0)
{
height = H;
width = W;
steamTemp = sT;
}
// Access function definitions
int getWidth()const{return width;};
int getHeight()const{return height;};
double getSteamTemp()const{return steamTemp;};
void setWidth(int dummysteamwidth) {width = dummysteamwidth;};
void setHeight(int dummysteamheight){height = dummysteamheight;};
void setSteamTemp(double dummysteamtemp){steamTemp = dummysteamtemp;};
// Access function definitions
friend istream& operator>>(istream& , Steampipe&); // YOU MUST DEFINE
friend ostream& operator<<(ostream& , const Steampipe&); // YOU MUST DEFINE
};
class GridPt
{
private:
double temperature;
char symbol;
public:
GridPt(double t = 0.0, char s = '?')
{
temperature = t;
symbol = s;
}
// Access function definitions
double getTemperature()const {return temperature;};
char getsymbol() const {return symbol;};
void setTemperature (double T=0) {T=temperature;}
void setsymbol (char S='?'){S=symbol;}
};
class Fin
{
private:
int width, height; //width and height of fin
int pipeLocationX, pipeLocationY; //grid location of lower left corner of steampipe
double boundaryTemp; //temperature of fin surroundings
Steampipe Pipe; //steampipe object - COMPOSITION
GridPt GridArray[maxFinHeight][maxFinWidth]; // array of GridPts - COMPOSITION
public:
int getwidth() {return width;}
int getheight() {return height;}
int getpipeLocationX(){return pipeLocationX;}
int getpipeLocationY(){return pipeLocationX;}
double get_boundarytemp(){return boundaryTemp;}
void setwidth (int w){w=width;}
void setheight (int h){h=height;}
friend istream& operator>>(istream& , Fin&); // YOU MUST DEFINE
friend ostream& operator<<(ostream& , const Fin&); // YOU MUST DEFINE
void initialize(); // YOU MUST DEFINE
};
void Fin::initialize()
{
int j(0) ,i(0);
for (i = 0; i < height; i++)
{
for ( j = 0; j < width; j++)
{
if ( j == pipeLocationX && i == pipeLocationY
&& i < Pipe.getHeight() + pipeLocationY
&& j < Pipe.getWidth() + pipeLocationX)
{
GridArray [j][i].setTemperature(Pipe.getSteamTemp());
GridArray [j][i].setsymbol('H');
}
else if (j == (width -1) || i == (height -1) || j == 0 || i == 0)
{
GridArray [j][i].setTemperature(boundaryTemp);
GridArray [j][i].setsymbol('C');
}
else
{
GridArray [j][i].setTemperature((Pipe.getSteamTemp() + boundaryTemp)/2);
GridArray [j][i].setsymbol('X');
}
}
}
}
istream &operator >> (istream & in, Fin& f)
{
int ws, hs;
double ts;
char comma;
cout << "Enter the height of the fin (integer) >>> ";
in >> f.height;
cout << "Enter the width of the fin (integer) >>> " ;
in >> f.width;
cout << "Enter the height of the streampipe (integer) >>> ";
in >>hs;
f.Pipe.setHeight(hs);
cout << "Enter the width of the steampipe (integer) >>> ";
in >> ws;
f.Pipe.setWidth(ws);
cout << "Enter coordinates of lower left corner of steampipe (X,Y) >>> ";
in >> f.pipeLocationX >> comma >> f.pipeLocationY;
cout << "Enter the steam temperature (floating point) >>> ";
in >> ts;
f.Pipe.setSteamTemp(ts);
cout << "Enter the temperature around the fin (floating point) >>> ";
in >> f.boundaryTemp;
return in;
}
ostream &operator << (ostream &stream, const Fin& t)
{
int i = 0;
int j = 0;
stream << "The width of the fin is " << t.width << endl;
stream << "The height of the fin is " << t.height << endl;
stream << "The outside temperature is " << t.boundaryTemp << endl;
stream << "The lower left corner of the steam pipe is at "
<< t.pipeLocationX << "," << t.pipeLocationY << endl;
stream << "The steampipe width is " << t.Pipe.getWidth() << endl;
stream << "the steampipe height is " << t.Pipe.getHeight() << endl;
stream << "The temperature of the steam is " << t.Pipe.getSteamTemp() << endl;
for (i = 0; i < t.height; i++)
{
for ( j = 0; j < t.width; j++)
{
if (j == t.pipeLocationX && i == t.pipeLocationY && i < t.Pipe.getHeight() + t.pipeLocationY && j < t.Pipe.getWidth() + t.pipeLocationX)
{
t.GridArray [j][i].getTemperature();
stream<<t.GridArray [j][i].getsymbol();
}
else if (j == (t.width -1) || i == (t.height -1) || j == 0 || i == 0)
{
t.GridArray [j][i].getTemperature();
stream<<t.GridArray [j][i].getsymbol();
}
else
{
t.GridArray [j][i].getTemperature();
stream<<t.GridArray [j][i].getsymbol();
}
}stream<<endl;
}
int coorx(0),coory(0);char comma;
stream << "Enter the coordinates of the gridpoint of interest (X,Y) >>> "
<< endl;
cin>>coorx>>comma>>coory;
stream<<"The temperature at location ("<<coorx<<","<<coory<<") is "
<< t.GridArray << endl;
return stream;
}
이고 내 드라이버 파일 CPP는 다음과 같습니다
#include "pipe.h"
int main()
{
Fin one;
cin >> one;
one.initialize();
cout << one;
return 0;
}
어떤 제안은 매우 이해할 수있을 것이다. 다음 코드에서 당신에게
적어도 들여 쓰기 된 코드를 가지고 실제 문제를 좁히려 고 노력하십시오. 이것은 그렇지 않으면 너무 고통 스럽다. – pmr
그래, 더 읽기 쉽도록 코드를 편집하는 것은 너무 많은 노력처럼 보입니다. 간결하고 형식이 좋은 예를 보여주세요. – Rook