| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 833 人关注过本帖
标题:输入几个字符串,算出相邻的一样的字符串的个数
只看楼主 加入收藏
yt414204458
Rank: 2
等 级:论坛游民
帖 子:260
专家分:55
注 册:2008-3-1
结帖率:50%
收藏
已结贴  问题点数:5 回复次数:10 
输入几个字符串,算出相邻的一样的字符串的个数
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
    string str;
    vector<string> svec;
    cout<<"输入几个字符串"<<endl;
    while(cin>>str)
        svec.push_back(str);//字符串存到容器里
    vector<string>::iterator iter=svec.begin();
    int cnt=0;//设置计数器
    for(;iter!=svec.end();++iter)//遍历容器,求相邻相同的次数
        if((*iter)==*(iter++))
            {++cnt;
    cout<<*iter<<" 次数是:0"<<cnt<<endl;}
    return 0;
}

这程序哪有问题啊,运行不出来。。

[ 本帖最后由 yt414204458 于 2014-3-27 12:38 编辑 ]
搜索更多相关主题的帖子: include return 计数器 字符串 
2014-03-26 20:55
yt414204458
Rank: 2
等 级:论坛游民
帖 子:260
专家分:55
注 册:2008-3-1
收藏
得分:0 
没人回答么。。。

一切从爱C开始
2014-03-26 22:12
yt414204458
Rank: 2
等 级:论坛游民
帖 子:260
专家分:55
注 册:2008-3-1
收藏
得分:0 
求帮助啊。。这个程序是错的很离谱么?

一切从爱C开始
2014-03-27 09:45
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:2 
以下是引用yt414204458在2014-3-27 09:45:45的发言:

求帮助啊。。这个程序是错的很离谱么?
if((*iter)==*(iter++)) 是个什么呀,看到这代码,别人就不会回答你了,因为你一窍不通说了也是白说呀

程序代码:
#include <iostream>
#include <string>
#include <vector>
#include <iterator>
#include <algorithm>
using namespace std;

int main()
{
    vector<string> strs;

    // 输入
    cout << "输入数个字符串" << endl;
    copy( std::istream_iterator<string>(cin), std::istream_iterator<string>(), std::back_inserter(strs) );

    // 计算相邻重复数
    size_t cnt = 0;
    for( vector<string>::const_iterator itor=strs.begin(); ; )
    {
        if( itor == strs.end() )
            break;
        const string& a = *itor;

        ++itor;
        if( itor == strs.end() )
            break;
        const string& b = *itor;

        if( a == b )
            ++cnt;
    }
    // 或者
    //if( !strs.empty() )
    //    for( vector<string>::const_iterator itor=strs.begin(); itor+1!=strs.end(); ++itor )
    //        cnt += ( *itor==*(itor+1) );
    cout << "相邻重复数: " << cnt << endl;

    return 0;
}

2014-03-27 11:15
yt414204458
Rank: 2
等 级:论坛游民
帖 子:260
专家分:55
注 册:2008-3-1
收藏
得分:0 
回复 4楼 rjsp
我想用*iter取得容器里面的字符串,*(iter+1)是它相邻的下一个空间里面放的字符串。这样比较一下可以不?iter++确实不妥

一切从爱C开始
2014-03-27 12:39
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
收藏
得分:2 
干吗不做测试,输出它的值是多少,如果输出的是地址而不是值怎么办??
size_t重载+号运算的时候又是按多少位增加的??
2014-03-27 17:44
hubinyes
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:104
专家分:557
注 册:2014-2-4
收藏
得分:2 
for(;iter!=svec.end();++iter)//遍历容器,求相邻相同的次数
        if((*iter)==*(iter++))

这肯定越界了。

    for(;iter!=svec.end()-1;++iter)
        if((*iter)==*(iter+1))

可以这样
2014-03-27 19:27
yt414204458
Rank: 2
等 级:论坛游民
帖 子:260
专家分:55
注 册:2008-3-1
收藏
得分:0 
回复 7楼 hubinyes
可这个程序在VS2012里面。。。不知道该怎么运行了,输入字符串以后没有反应

一切从爱C开始
2014-03-29 16:26
紫罗兰丹丹
Rank: 2
等 级:论坛游民
威 望:1
帖 子:14
专家分:13
注 册:2014-3-28
收藏
得分:2 
表示看不太懂,

7L大神
 for(;iter!=svec.end()-1;++iter)
        if((*iter)==*(iter+1))
是什么意思诶?
2014-03-30 16:56
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
收藏
得分:0 
for的三个段:定义体,中断体,过程体
除了中断体等于while括号内的东西,其它都不重要,只是为了让人方便阅读
for的最后一个过程体可以和后面的大括号内容互换,当然前提是要写的下,因为已经不能再用分号分隔了
定义体还可以初始化一个函数.

如果你觉得你这么做不是很牛A也不是很牛C,那人类已经阻止不了你了
2014-03-30 22:22
快速回复:输入几个字符串,算出相邻的一样的字符串的个数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021944 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved