C++程序设计实践指导1.14字符串交叉插入改写要求实现
改写要求: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字符串交叉插入改写要求实现的更多相关文章
- C++程序设计实践指导1.9统计与替换字符串中的关键字改写要求实现
改写要求1:将字符数组str改为字符指针p,动态开辟存储空间 改写要求2:增加统计关键字个数的函数void CountKeyWords() 改写要求3: 增加替换函数void FindKeyWords ...
- C++程序设计实践指导1.4正整数转换为字符串改写要求实现
改写要求1:改为适合处理超长整数 #include <cstdlib> #include <iostream> #include <string> using na ...
- C++程序设计实践指导1.15找出回文数改写要求实现
改写要求1:用单链表实现 #include <cstdlib> #include <iostream> using namespace std; struct LinkNode ...
- C++程序设计实践指导1.13自然数集中找合数改写要求实现
改写要求1:用单链表实现 改写要求2:析构函数中依次将链表结点删除 #include <cstdlib> #include <iostream> using namespace ...
- C++程序设计实践指导1.12数组中数据线性变换改写要求实现
改写要求1:分别用指针pa.pb代替数组 改写要求2:从键盘输入data元素 元素个数任意,输入0结束 #include <cstdlib> #include <iostream&g ...
- C++程序设计实践指导1.10二维数组元素换位改写要求实现
改写要求1:改写为以单链表和双向链表存储二维数组 改写要求2:添加函数SingleLinkProcess()实现互换单链表中最大结点和头结点位置,最小结点和尾结点位置 改写要求3:添加函数Double ...
- C++程序设计实践指导1.1删除序列中相同的数改写要求实现
改写要求1:改写为以指针为数据结构 #include <iostream> #include <cstdlib> using namespace std; class ARP ...
- C++程序设计实践指导1.7超长数列中n个数排序改写要求实现
改写要求1:将以上程序改写为适合超长整数 改写要求2:将以上程序改写为适合超长数列 改写要求3:将数列中指定位置m开始的n个结点重新按降序排序 改写要求4:输出指定位置m开始的n个结点的超长整数 #i ...
- C++程序设计实践指导1.8求指定范围内的所有素数改写要求实现
改写要求1:以指针为数据结构动态开辟存储空间 #include <cstdlib> #include <iostream> using namespace std; class ...
随机推荐
- UVA442 栈
C - Matrix Chain Multiplication Crawling in process... Crawling failed Time Limit:3000MS Memory ...
- ajax请求参数为中文乱码的情况
解决中文乱码问题的方法有很多. 一.前提是ajax请求传递参数对象到后台,对象中的某个参数的值为中文,到后台之后出现乱码,导致报错.问题解决如下: rest层: 二.在tomcat的server.xm ...
- No1_8.类和对象2_Java学习笔记_对象
对象 /**** * *一.对象 *1.概念:对象是由类抽象出来的,对象可以操作类的属性和方法解决问题,了解对象的创建.操作和消亡很必要: *2.对象的创建: * a. new操作符创建:每实例化一个 ...
- linux下查找文件和文件内容
find /xxx -name "*" | xargs grep "某内容" /xxx表示路径,"*"表示在含有某关键字名字下的文件中查找, ...
- Maven基础教程
更多内容请参考官方文档:http://maven.apache.org/guides/index.html 官方文档很详细,基本上可以查找到一切相关的内容. 另外,快速入门可参考视频:孔浩的maven ...
- 大转盘Demo
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- Python学习(一) Python安装配置
我本身是Java程序猿,听说Python很强大,所以准备学习一下Python,虽说语言都是相同的,但java跟python肯定还是有区别的.希望在此记录一下自己的学习过程. 目前,Python分2.X ...
- 用jquery可以用使用serialize()序列化表单值,那有没有什么方法可以将值填充到表单中呢? (一段不错的代码)
serialize()的作用,是生成一个类似这种格式的字符串用于ajax提交 a=&b=&c=.你想将值填写到表单,首先要有值,然后就是表单控件的id或者能唯一定位控件的属性.然后就$ ...
- Liunx+C编程一站式学习
Liunx+C编程一站式学习这本书有什么特点?面向什么样的读者?这本书最初是为某培训班的嵌入式系统Linux工程师就业班课程量身定做的教材之一.该课程是为期四个月的全日制职业培训,要求学员毕业时具备非 ...
- gridview两列数据的互换
如下图所示: GridView绑定数据的时候,若ReName列里面有数据,则显示ReName列里面的数据,如果没有数据,则显示Name列里面的数据.Name和ReName是数据表里面的两个字段< ...