2 qq 27965507 qq_27965507 于 2015.05.30 12:48 提问

C+语言 碰到输出手法 不能搞定 求解答 (注 : 不用迭代 )

#include "stdafx.h"
#include
using namespace std;
class Teacher
{
public:
char name[20];
Teacher * tnext;
Teacher (char * name):tnext(tnext=NULL)
{
strcpy(this->name,name);
}
void Display()
{
cout<<name;
}
};
class Course
{
public:
char name[20];
Course * next;
Teacher * thead;

Course(char * name):thead(thead=NULL),next(next=NULL)
{
    strcpy(this->name,name);
}
void Display()
{
    cout<<name;
}

};

int _tmain(int argc, _TCHAR* argv[])
{
Course * head=NULL,*before;
Teacher * te=NULL,* pre;
FILE fp=fopen("E:\VC++\heminglen\组合排序test.txt","r");
do
{
char name[20];
fscanf(fp,"%s",name);
Course * temp= new Course (name);
do
{
fscanf(fp,"%s",name);
te=new Teacher (name);
if(strncmp(te->name,"end",3)==0)break;
else
{
if(NULL == temp->thead)
temp->thead=te;
else{pre->tnext=te;}
pre=te;
}
}
while (strncmp(te->name,"end",3)!=0);
if (NULL==head)
head= temp;
else
{
before->next=temp;
}
before=temp;
}
while(!feof(fp));
/*long int a=0;
Course * k=head,*u,*v,*w;
Teacher * p,
q,*r,*s;
for(p=k->thead;p!=NULL;p=p->tnext)
for(q=k->next->thead;q!=NULL;q=q->tnext)
for(r=k->next->next->thead;r!=NULL;r=r->tnext)
for(s=k->next->next->next->thead;s!=NULL;s=s->tnext)
{
a+=1;
printf ("%ld",a);
printf("\n");
}

printf("=================================\n");*/
本意对如下原始文件
数学 赵老师 钱老师 end
语文 孙老师 李老师 end
历史 何老师 郑老师 end
化学 华老师 王老师 end
输出选课老师所有组合可能 如上有81种
现在需要输出所有的可能组合 需要通用方法 用链就是为了可扩展

2个回答

devmiao
devmiao   Ds   Rxr 2015.05.30 12:55

仔细调试下你的程序,你的程序问题太多了。

qq_27965507
qq_27965507 回复xiangguangxu: 你会么
2 年多之前 回复
xiangguangxu
xiangguangxu 回复qq_27965507: HAO
2 年多之前 回复
qq_27965507
qq_27965507 我一直在琢磨改动 求帮的时候把输出行复制漏了。。谢谢
2 年多之前 回复
qq_27965507
qq_27965507 a+=1; printf ("%ld",a); p->Display();q->Display();r->Display();s->Display(); printf("\n");
2 年多之前 回复
qq_27965507
qq_27965507 不好意思 回复放楼层去了 刚入住CSDN
2 年多之前 回复
qq_27965507
qq_27965507   2015.05.30 13:05

那是因为我复制的时候没把 结尾
return 0;
}
复制出来 在while后面/* 也忘记删除
可以运行的;我是要改后面的输出部分 以便 改动原始文件时候可以 输出正确

#include "stdafx.h"
#include
using namespace std;
class Teacher
{
public:
char name[20];
Teacher * tnext;
Teacher (char * name):tnext(tnext=NULL)
{
strcpy(this->name,name);
}
void Display()
{
cout<<name;
}
};
class Course
{
public:
char name[20];
Course * next;
Teacher * thead;

Course(char * name):thead(thead=NULL),next(next=NULL)
{
    strcpy(this->name,name);
}
void Display()
{
    cout<<name;
}

};

int _tmain(int argc, _TCHAR* argv[])
{
Course * head=NULL,*before;
Teacher * te=NULL,* pre;
FILE fp=fopen("E:\VC++\heminglen\组合排序test.txt","r");
do
{
char name[20];
fscanf(fp,"%s",name);
Course * temp= new Course (name);
do
{
fscanf(fp,"%s",name);
te=new Teacher (name);
if(strncmp(te->name,"end",3)==0)break;
else
{
if(NULL == temp->thead)
temp->thead=te;
else{pre->tnext=te;}
pre=te;
}
}
while (strncmp(te->name,"end",3)!=0);
if (NULL==head)
head= temp;
else
{
before->next=temp;
}
before=temp;
}
while(!feof(fp));
long int a=0;
Course * k=head,*u,*v,*w;
Teacher * p,
q,*r,*s;
for(p=k->thead;p!=NULL;p=p->tnext)
for(q=k->next->thead;q!=NULL;q=q->tnext)
for(r=k->next->next->thead;r!=NULL;r=r->tnext)
for(s=k->next->next->next->thead;s!=NULL;s=s->tnext)
{
a+=1;
printf ("%ld",a);
printf("\n");
}

printf("=================================\n");

return 0;

}

Csdn user default icon
上传中...
上传图片
插入图片