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

问题描述

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

1.读取一个文件 链接起来 行,列;
2.利用这个链表,输出成员间的所有可能组合;
本人挤出的代码如下,供参考:

#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("文件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);
p->Display();q->Display();r->Display();s->Display();
printf("n");
}

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

return 0;

}
输出没有扩展性
本人尝试过利用 类似进位的思想来解答,在行链表向下方访问并到达NULL时下个结点向一位,由此输出所有的可能组合;估计类的成员结构组成欠缺;
?如果文件格式如下
语文 李老师 黄老师 华老师 end
数学 黄老师 金老师 刘老师 end
国文 赵老师 钱老师 孙老师 end
算数 花老师 月老师 吴老师 end
则输出有81中组合:
如:李黄赵花;李黄赵月;李黄赵吴;李黄钱花;李黄钱月;李黄钱吴;李黄孙花;李黄孙月;李黄孙吴;。。。。。。。;
请给出通用性的手法 请不要使用数据库 数组 迭代等之类可能更便捷的方法 只能增加些类成员并输出出来

解决方案

原文件格式如下
语文 李老师 黄老师 华老师 end
数学 黄老师 金老师 刘老师 end
国文 赵老师 钱老师 孙老师 end
算数 花老师 月老师 吴老师 end

解决方案二:

这应该是个排列组合的问题,
输出是以下这样吗?

语文 李老师 黄老师 华老师 金老师 刘老师 赵老师 钱老师 孙老师 花老师 月老师 吴老师

解决方案三:

代码问题比较多,建议调试。
如果你肯采纳我的两个问题的回答,我可以帮你调试下。

解决方案四:

原文是:
语文 李老师 黄老师 华老师 end
数学 黄老师 金老师 刘老师 end
国文 赵老师 钱老师 孙老师 end
算数 花老师 月老师 吴老师 end

组合规则是把每门课和所有老师的所有可能组合,还是把所有字两辆组合,要求不重复啊?
没弄明白要求是啥。

时间: 2024-10-27 13:56:16

c-C(++)语言 碰到输出手法 不能搞定 求解答 (注 : 不用迭代 )的相关文章

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

问题描述 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<<

c语言问题,编译出错,急求解答

问题描述 c语言问题,编译出错,急求解答 编译时显示 error c2046:illegal case error c2047:illegal default 解决方案 不是break的问题,是大括号的问题, switch(a) { case 1: /*do your some thing*/ break; case 2: /*do your some thing*/ break; default: /*do your something*/ } 解决方案二: switch后面应该有一个大括号,

c语言中的排序问题,搞蒙了!

问题描述 c语言中的排序问题,搞蒙了! void sortbyname(){ int i,j; struct student temp; FILE fp; fp=fopen ("D:student.txt","rb+"); for (i=0;i<num;i++) fread(&student[i],sizeof(struct student),1,fp); fclose(fp); system("cls"); printf(&quo

设计-c语言 一个输出出现次数最多的字母的程序

问题描述 c语言 一个输出出现次数最多的字母的程序 字母不区分大小写 输出格式:出现的次数 该字母 如果有复数个出现次数最多的字母,就按字母排列顺序输出 例 输入 One Two Buckle My Shoe 输出 3 eo 输入 Once upon a time,there lived a manwhose name wos Lip van Winkle. 输出 8 e 使用以下代码雏形 #include<stdio.h> int main(void) { int i,max=0; char

WPS2009,输出、阅读PDF一键搞定

听说WPS 2009个人新版发布了,作为一个勤劳的文字工作者,办公软件是我最离不开的工作工具,因为WPS是免费正版的,所以就一直用了,新的2009一出试用之下喜出望外.就把我最喜欢的一个功能分享给大家.这就是PDF的输出和阅读. 做文字工作,总经常会遇到需要把撰写的文稿输出成PDF的格式,也总会遇到需要阅读和借用一些PDF格式的文件,以往因为PDF是专属格式,需要安装acrobat reader或其他PDF阅读器来阅读此类文档,在工作中来回窗口的切换很是不方便.现在WPS2009在以往输出PDF

彻底搞定C语言指针 第四篇

1 int i 说起 你知道我们申明一个变量时象这样int i :这个i是可能在它处重新变赋值的. 如下: int i=0: //- i=20://这里重新赋值了 不过有一天我的程 序可能需要这样一个变量(暂且称它变量),在申明时就赋一个初始值.之后我的程序在其它任何处都 不会再去重新对它赋值.那我又应该怎么办呢?用const . //************** const int ic =20: //- ic=40://这样是不可以的,编译时是无法通过,因为我们不能对 const 修饰的ic

win7语言栏不见了怎么办?简单两步搞定

win7语言栏不见了怎么办?很多网友遇到这种问题都急得像热锅上的蚂蚁,其实解决方法很容易,只需简单几步就可以搞定啦. 操作步骤如下: 1. 依次单击"开始"--"控制面板"--"更改键盘或其它输入法"--"更改键盘"; 2. 打开"语言栏"选项卡,点击选中"停靠于任务栏"后按"确定"退出.         注:更多精彩教程请关注三联windows7教程栏目,三联电脑办

c语言 char输出问题,实在找不出来问题

问题描述 c语言 char输出问题,实在找不出来问题 #include #define N 3 struct Student{ int number; int age; char sex; char name[20]; float english; float math; float computer; float aver; }; void main(){ struct Student stu[N]; struct Student *p; p=stu; void input(struct St

【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】下 ~ Net程序员的福利

上一节我们通过通用封装说了下QQ登录的申请和通用讲解,[开源]简单4步搞定QQ登录,无需什么代码功底[无语言界限]:http://www.cnblogs.com/dunitian/p/5055789.html 这次我们专门为Net程序员准备一个专版(其他方向的看通用封装即可,使用起来很简单) 做个简单的案例:(EF+MVC) 1.先看一下自己的appid 2.前台一系列设置:(图片看不见的话点开看,会放大的) 3.数据库设计(简单版本) 4.Model类 5.后台处理(不同框架处理不一样,这边给