改写要求:1:以指针为数据结构开辟存储空间

改写要求2:被插入字符串和插入字符串不等长,设计程序间隔插入 如被插入字符串长度为12,待插入字符串长度为5 则插入间隔为2

改写要求3:添加函数InsertInOrder() 先将被插入字符串中的字母按照ASCII表顺序排序 再将插入字符串插入并保证原来的字母顺序

#include <cstdlib>
#include <iostream>
#include <cstring>

using namespace std;
class STRING
{
char *str1;
char *str2;
public:
STRING(char* s1,char* s2)
{
str1=new char[strlen(s1)];
str2=new char[strlen(s2)];
strcpy(str1,s1);
strcpy(str2,s2);

}
void InsertInOrder();
void process();
void print()
{
cout<<str1<<endl;
}
};

void STRING::process()
{
int len1,len2,count=1;
char str[80];
int i,j=0,k=0;
len1=strlen(str1);
len2=strlen(str2);
int n=len2/len1;
for(i=0;i<len1+len2;i++)
{
if(count%(n+1)==0)
{
str[i]=str1[j++];
count++;
}else{
str[i]=str2[k++];
count++;
}

}
str[i]='\0';
cout<<str<<endl;
strcpy(str1,str);
}

void STRING::InsertInOrder()
{
char temp;
int i,j,k;
int len1=strlen(str1);
int len2=strlen(str2);
for(i=0;i<len2-1;i++)
{
k=i;
for(j=i+1;j<len2;j++)
if(str2[k]<str2[j])
{
k=j;
temp=str2[i];
str2[i]=str2[k];
str2[k]=temp;
}
}
cout<<str2<<endl;
for(i=0;i<len1;i++)
{
for(j=len2-1+i;j>=0;j--)
{
if(str1[i]>str2[j])
str2[j+1]=str2[j];
else
break;
}
str2[j+1]=str1[i];
}
cout<<str2<<endl;
}

int main(int argc, char *argv[])
{
STRING test("abcd","ABCDEFG");//这里第一个参数是插入字符串 第二个是被插入字符串 测试要保证第二个参数比第一个长 因为程序没有写对短的情形的处理
// test.InsertInOrder();
test.process();
test.print();
system("PAUSE");
return EXIT_SUCCESS;
}

改写要求2和3要分开运行即注释掉改写InsertInOrder()来测试改写要求2 否则会出现错误 这是由于这里是直接在str1和str2上修改

C++程序设计实践指导1.14字符串交叉插入改写要求实现的更多相关文章

  1. C++程序设计实践指导1.9统计与替换字符串中的关键字改写要求实现

    改写要求1:将字符数组str改为字符指针p,动态开辟存储空间 改写要求2:增加统计关键字个数的函数void CountKeyWords() 改写要求3: 增加替换函数void FindKeyWords ...

  2. C++程序设计实践指导1.4正整数转换为字符串改写要求实现

    改写要求1:改为适合处理超长整数 #include <cstdlib> #include <iostream> #include <string> using na ...

  3. C++程序设计实践指导1.15找出回文数改写要求实现

    改写要求1:用单链表实现 #include <cstdlib> #include <iostream> using namespace std; struct LinkNode ...

  4. C++程序设计实践指导1.13自然数集中找合数改写要求实现

    改写要求1:用单链表实现 改写要求2:析构函数中依次将链表结点删除 #include <cstdlib> #include <iostream> using namespace ...

  5. C++程序设计实践指导1.12数组中数据线性变换改写要求实现

    改写要求1:分别用指针pa.pb代替数组 改写要求2:从键盘输入data元素 元素个数任意,输入0结束 #include <cstdlib> #include <iostream&g ...

  6. C++程序设计实践指导1.10二维数组元素换位改写要求实现

    改写要求1:改写为以单链表和双向链表存储二维数组 改写要求2:添加函数SingleLinkProcess()实现互换单链表中最大结点和头结点位置,最小结点和尾结点位置 改写要求3:添加函数Double ...

  7. C++程序设计实践指导1.1删除序列中相同的数改写要求实现

    改写要求1:改写为以指针为数据结构 #include <iostream> #include <cstdlib> using namespace std; class ARP ...

  8. C++程序设计实践指导1.7超长数列中n个数排序改写要求实现

    改写要求1:将以上程序改写为适合超长整数 改写要求2:将以上程序改写为适合超长数列 改写要求3:将数列中指定位置m开始的n个结点重新按降序排序 改写要求4:输出指定位置m开始的n个结点的超长整数 #i ...

  9. C++程序设计实践指导1.8求指定范围内的所有素数改写要求实现

    改写要求1:以指针为数据结构动态开辟存储空间 #include <cstdlib> #include <iostream> using namespace std; class ...

随机推荐

  1. poj1094 topsort

    Sorting It All Out Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 32275   Accepted: 11 ...

  2. 在js传递参数中含加号(+)的处理方式

    一般情况下,URL 中的参数应使用 url 编码规则,即把参数字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+).但是对于带有中文的参数来 ...

  3. 滚动到指定元素的id处+当元素出现在浏览器显示区域就会自动加载

    //滚动到指定元素的id处 如:$("#Exam82") function Jump() { var scroll_offset = $("#Exam82"). ...

  4. MySQL中的两个时间函数,用来做两个时间之间的对比

    TIMESTAMPDIFF,(如果当期时间和之前时间的分钟数相比较.大于1天,即等于1:小于1天,则等于0) select TIMESTAMPDIFF(DAY,'2016-11-16 10:13:42 ...

  5. PHP学习路上的一点心得

    继学些了java后,接触php的项目后发现 php真的也是很强大的一门语言,这只是一篇回想,想到什么就写什么把,大家随便看看. 1.php其实无需等待,一般的改完代码后直接刷新页面即可,不需要像jav ...

  6. ubuntu及终端快捷键

    1.关于终端的快捷键: Tab:tab键是比较常用的一个快捷键,它的作用是补全文件名或者路径.举例 来说,输入”cd /ho”在按一下tab键,终端里就会显示”cd /home”了.如果您的文件夹下, ...

  7. Android处理XML的三种方式

    http://www.cnblogs.com/zhangdongzi/archive/2011/04/14/2016434.html http://blog.csdn.net/zzp16/articl ...

  8. content的定义

    http://www.myexception.cn/HTML-CSS/1472528.html http://stackoverflow.com/questions/2770681/css-conte ...

  9. IPTABLES封闭和开放端口

    这个是个细心活儿,如果只开放特定端口,则在每一条规则里都要加上相应的端口. 任何一条不配DPORT,都有可能放行了其它端口. -A INPUT -p tcp -m tcp --dport 80 -m ...

  10. android:duplicateParentState属性解释

    android:duplicateParentState指的是当前控件是否跟随父控件的(点击.焦点等)状态 例:假设一Layout有两子View,对Layout进行监听点击事件:子ViewA一个设置d ...