zoukankan      html  css  js  c++  java
  • 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]='';
    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上修改

  • 相关阅读:
    共用体
    建立动态链表
    动态分配储存与链表
    结构指针变量作函数参数
    R语言实战 第7章
    R-6 线性回归模型流程
    R-5 相关分析-卡方分析
    R-4 方差分析
    R-3 t分布--t置信区间--t检验
    R-2
  • 原文地址:https://www.cnblogs.com/c5395348/p/4284986.html
Copyright © 2011-2022 走看看