zoukankan      html  css  js  c++  java
  • Absolute C++ 第9章字符串 编程练习4

    编写程序将一行文本中所有长度为4的单词替换成单词“love“,比如输入下面的字符串:
    I hate you, you dodo!
    应该产生下面的输出:
    I love you,  you love!
    如果4字母单词的首字母大写,那么应该把它替换成“Love”而不是“love”。除了单词首字母外不需要再检查大写。一个单词定义成一个由字母构成的字符串,它的两端可以由一个空格,行结束符或不是字母的其他任何字符来定界。您的程序应该重复这个操作,知道用户要求退出。

    没什么好的思路,下面是基本可以实现的程序。想过读取非字母之间的间距进行判断和修改的,但是没实现,打算接着看看相关内容再进行改进。
    代码:
    #include<iostream>
    #include<cstdlib>
    #include<cstdio>
    #include<cstring>
    #include<cctype>
    using namespace std;
    int main()
    {
        int len;
        string str;  //字符串
        do     //循环实现连续输入
        {
           getline(cin,str);
           len=str.length();
           for(int i=0;i<len-3;i++)
           {
               if(isalpha(str[i])&&isalpha(str[i+1])&&isalpha(str[i+2])&&isalpha(str[i+3]))  //在此基础上判断该子字符串左边和右边是否为非字母
               {
                   if(i!=len-4)
                   {
                       if(!isalpha(str[i+4]))
                       {
                            if(i>0)
                            {
                                if(!isalpha(str[i-1]))
                                {
                                    str[i]='l';
                                    str[i+1]='o';
                                    str[i+2]='v';
                                    str[i+3]='e';
                                }
                                else
                                    continue;
                            }
                            else
                            {
                                str[i]='l';
                                str[i+1]='o';
                                str[i+2]='v';
                                str[i+3]='e';
                            }
                       }
                       else
                        continue;
                   }
                   else
                   {
                        if(i>0)
                        {
                            if(!isalpha(str[i-1]))
                            {
                                str[i]='l';
                                str[i+1]='o';
                                str[i+2]='v';
                                str[i+3]='e';
                            }
                            else
                                continue;
                        }
                        else
                        {
                            str[i]='l';
                            str[i+1]='o';
                            str[i+2]='v';
                            str[i+3]='e';
                        }
                   }
                   if(i==0)
                   {
                       str[i]='L';
                   }
               }
           }
           cout<<str<<endl;
        }while(len>0);
        return 0;
    }
    

    测试用例:
    奇数行是测试数据,偶数行是替换后的字符串。暂时先给出这么多。



    希望自己可以早点把优化思路的代码尽快实现。

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    引物设计重复性查看
    NCBI获取指定区域基因序列及其引物设计
    视频录制软件——Bandicam使用介绍
    SX知识学习——IGV
    常用网站总结
    计算机知识学习——window上配置perl环境(转)
    ubuntu virtualenv安装
    Windows下使用virtualenv
    linux ssh连接设置
    linux 搭建FTP
  • 原文地址:https://www.cnblogs.com/Tobyuyu/p/4965406.html
Copyright © 2011-2022 走看看