bonnate   3년 전

인접행렬 그래프에서 파일을 입력받아 해당 내용을 그래프에 알맞게 적용시키는 함수를 구현하고있는도중 막혀서 질문올립니다.

입력받은 텍스트는 아래와 같습니다.

4(줄넘김) //size

A0101(줄넘김) //정점의 이름과 간선 유무

B1011(줄넘김)

C0101(줄넘김)

D1110(줄넘김)

(비어있지만 줄넘김으로 인해 해당 줄도 존재)

이렇게 되어있습니다.

아래 load함수를 보면 처음엔 텍스트로부터 size입력,

후에 정점의 이름을 입력받아 대입 후, 숫자를 입력받아 간선 배열에 대입하는 방식인데 이를 어떻게 입력받아야 하는지 모르겠습니다. 도와주세요.

(수정)

void load(string filename)
{
ifstream readFile;
readFile.open(filename);
if(!readFile.is_open())
{
cout<<"Cannot read file";
return;
}

int readsize;
char readchar;

readFile>>readsize; //readsize를 입력받아 만큼 반복

for(int i = 0; i < readsize; ++i)
{
//A,B,C,D를 입력받고 이를 insertVertex에 대입
readFile>>readchar;
insertVertex(readchar);

for(int j = 0; j < readsize; ++j)
{
//각 행의 두번째열(숫자)부터 입력받아
//adj[i][j]에 숫자를 대입
readFile>>readchar;
adj[i][j] = readchar - 48; // 48을 빼줘야함
}
}
}

위에처럼 만들었더니 의도한대로 입력이 됩니다. 코드 중 48을 빼야지만 0과1이 나옵니다... 0,1이 아스키코드로 된 것 같은데.. 아스키코드가 아닌 원래의 수로 입력받고싶습니다

댓글을 작성하려면 로그인해야 합니다.