자료구조 C++ 다변수 다항식 (변수 3개 ) 범용리스트에 저장
본 자료는 5페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
해당 자료는 5페이지 까지만 미리보기를 제공합니다.
5페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

자료구조 C++ 다변수 다항식 (변수 3개 ) 범용리스트에 저장에 대한 보고서 자료입니다.

목차

1. 메인 함수 파일

2. 입력받은 다항식을 변수 별로 묶어서 입력하기 쉬운 형태로 바꾸는 클래스 파일

3. 바뀐 형태의 다항식을 범용 리스트 의 구조에 저장하고, 값을 계산하고 , 형태를 출력하는 클래스 파일

본문내용

았을 때
{
ptr->coef=atoi(tempo.c_str()); // 계수를 수로 바꾸어 입력한다.
ptr->trio=no;
ptr->exp=0; // 위의 변수가 나오지 않았기 때문에 지수를 0으로 입력
tempo="";
Incoef=true;
}
num++; // 1칸 뒤로 이동시킨뒤
ptr->link=InsertNode(poly, false, y); // link 에 새 노드 생성
Inlink=true; // link 값이 있다는 표시
}
if (poly[num]==')' || poly[num]=='#') // ) # 이면 끝내는 기능
{
if (Incoef==false) // 계수 입력이 되지 않았을 때
{
ptr->coef=atoi(tempo.c_str()); // 아직 계수가 입력이 되지 않은것은
ptr->trio=no; // 변수가 나오지 않거나 마지막 상수라는 표시 기 때문에
ptr->exp=0; // 지수값에 0을 입력한다.
tempo="";
Incoef=true;
}
if (ptr->exp==NULL) // 지수값이 NULL 이면 0을 입력
ptr->exp=0;
num++;
if (!Inlink) // Inlink 값이 없으면
ptr->link=0; // 노드의 링크에 0을 입력
}
return ptr; // ptr의 값을 반환
}// end of else
}//end of function
//--------------------------------------------------------------------------------------
// 기능 : 수를 입력 하면 그 수를 각 변수에 넣고 식을 계산하는 변수
// 설명 : 시작 노드 주소를 이용하여 시작 노드 부터 다음 노드가 있는 지
// 검사하고 따라가며 값을 계산 한뒤 반환한다.
// 최종적으로 전체 계산된 값이 반환되게 된다. (처음값:노드 주소|두번째값:변수결정
//--------------------------------------------------------------------------------------
float Insertpoly::eval(ListpolyNode *stN, int q) {
float sum=1;
float vari;
switch (q)/// 현재 노드 위치의 변수가 무엇인지 결정
{
case 1:
vari=a;
break;
case 2:
vari=b;
break;
case 3:
vari=c;
}
if (stN->trio==var && stN->link) // 헤드 노드이고 링크 값이 있으면
{
sum=eval(stN->link,q);// 그 링크 노드로 이동 하고
return sum; // 반환된 값을 다시 반환
}
for (int i=1;i<=stN->exp;i++)// 변수값을 지수 번 만큼 반복해서 곱한다.
sum*= vari; // sum 변수에 저장
if (stN->trio==ptrr) // dlink 가 있으면
{
sum*=eval(stN->dlink,q-1); // dlink 를 따라가서 반환되는 값을 sum 과 곱한다.
} else {
sum*=stN->coef; // 상수 계수 값이 있으면 계수값을 sum 과 곱한다.
}
if (stN->link) // link 값이 있으면
sum+=eval(stN->link,q); // link 노드에서 반환되는 값과 sum을 더한다.
return sum; // 최종적으로 sum 값을 반환
}// end of eval
//-------------------------------------------------------------
// 기능 : 3변수의 값을 입력 받는 함수
//-------------------------------------------------------------
void Insertpoly::inputdata() {
cout << "x y z 의 순으로 값을 넣으세요. ";
cin >> a >> b >> c;
}// end
//------------------------------------------------------------------
// 기능 : 화면에 노드의 형태를 출력하는 함수
// 설명 : 각 노드의 층을 번호로 나누고 그 번호 값이 같으면 출력한다.
// 처음 입력값 : 노드 주소 | 두번째 입력값 : 층 수(1-z,2-y,3-x)
//------------------------------------------------------------------
void Insertpoly::showNode(ListpolyNode *seq, int soo) {
if (number==soo) //number 와 입력한 수가 같으면 같은 층으로 보고 출력
{ // 줄바꿈을 하면 다시 올라갈수 없으므로 맨위에서 부터
cout << "("; // 차례로 출력하기 위한 것이다.
if (seq->trio==var)
cout << seq->vble;
else if(seq->trio==no)
cout << seq->coef;
else cout << "dlink";
cout << "," << seq->exp << ",";
if (seq->link)
{
cout << "link";
cout << ")----";
} else {
cout << 0;
cout << ") ";
}
if (seq->link)
showNode(seq->link,soo);
}
if (number!=soo) /// 수가 같지 않으면
{ /// dlink 나 link 를 검사하여 이동하고
if (seq->trio==ptrr) /// dlink 로 이동할 시는 number 값을 1증가 시켜
{ /// 입력한 수와 같은 지 본다.
number++; /// 이동중 입력한 수와 같게 되면 출력하게 된다.
showNode(seq->dlink,soo); /// 떨어져 있는 노드 끼리도 한줄에 표현 된다.
number--;
}
if (seq->link)
{
showNode(seq->link,soo);
}
}
}
#endif
  • 가격200
  • 페이지수15페이지
  • 등록일2003.11.26
  • 저작시기2003.11
  • 파일형식한글(hwp)
  • 자료번호#234633
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니