急求c++课件设计
1.集合元素不超过100个。2.集合用数组表示(数组预先定义大一些)。
功能有:
1. 程序初始运行时任意输入一批初始数放入集合(可少可多,不少于5个,不超过30个)。
2. 对该批数排序存放。
程序完成前两步后,通过循环可以不断选择下面的某项功能执行(用提示语句列出菜单,通过读入某变量值,可用switch判断该变量,如接受到1表示执行第一项,依次类推,某项功能执行完可以返回菜单,也可退出系统):
3. 任意插入一个数到排好序的集合中,保持集合依然有序。
4. 在集合中删除一个元素。
5. 查询某个值是否在集合中(该数由键盘输入)。
6. 输出该数据集合的最大值和最小值。
7. 输出数据集合中所有奇数。
8. 找出数据集合中的所有素数。
答案:程序工作量太大啦,按照你这分完整的程序清单很不值啊,我把主要思想告诉你吧:1:
int Array[50];
cout<<"please enter at least 5 numbers, stop enter with entering number: 000"<<endl;
for(i=0;i<50;i++)
{
cout<<"please enter the "<<i+1<<" number"<<endl;
cin>>Array[i];
if(i<4)
{
if(Array[i]==000)
{
break;
}
}
else
{
cout<<"enter at least 5 number"<<endl;
}
if(i>30)
{
cout<<"enter too many numbers"<<endl;
return 0;
}
}
用这个来实现输入;
2:排序就采用简单的冒泡排序方法,
void order(int &Order[50])//这个用法我不知道对不对,这里用了地址传递,通过改变order[]来改变array[]
int j,temp;
for(j=0;j<50;j++)
{
if(Order[j]>Order[j+1])
{
temp=Order[j+1];
Order[j+1]=Order[j];
Order[j]=temp;
}
}
)
然后就能在main()函数中用cin和switch函数来获得并处理用户的要求。
3;在该模式下就用上面第一个函数,不过要注意,要始终保持i为全局变量,要不然会改变i的值,然后就再次调用order函数;
4:这个要求不明显,没有指明怎么删除,是不是在键盘输入以后就删除,如果是,就能用一下方法:
获得这个数m,然后用find函数(下面会说道),找到这个数的数组,比如说是array[25],然后就用类似冒泡排序的方法,把array[25]=array[26],这样,逐个逐个把数往前移;当然这是通过for循环语句实现;
5:再次采用类似冒泡排序的方法,获得这个数以后,用循环语句逐个逐个地检查,如果存在就显示在屏幕上,就比如:for(n=0;n<50;n++) if(array[n]=那个数),cout<<……
6:这个就简单啦,由于采用冒泡排序,最大和最小那个就是数组的第一个和最后一个数;
7:这个就是把数组的数逐个逐个除以2.原理就是看这个数除以2有没有余数,大概是:if(array[i]%2==0)就是偶数,反之就是奇数啦,在用for语句输出;
8:素数就是除了一和他本身外没有数能把他除尽(这个小学知识,哥忘了,不知道对不对)要判断一个数n是不是素数,按照笨方法是把2~n-1之中的数分别除n,如果有数能把他除尽,就是没有余数(同上)就是素数。根据哥的观察(装B中……)其实这样的计算量太大,只要判断2~n/2有没有数能把他除尽就行了,不需要白白多一半计算量,大概就是双重嵌套for语句,计算时间会有些长,for(k=2;k<(array[i]/2)+1;k++)然后就用array(i)/k判断其中有没有余数为0的就可以知道有没有数除尽,就可以知道这个array[i]是不是素数,其实如果用指针来运算了话速度会快很多,比如做一个指针p指向数组首地址,通过指针自加(因为数组的地址是连续的)p++来改变指向的不同数据,再用*p(取值运算符)获取数组的值再运算会快很多很多,只不过很容易出错且编写复杂,就不说了,有什么不懂再问吧。
以上纯手打,望采纳
上一个:比较好的c++学习网站
下一个:如何用C++做游戏外挂?