| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 770 人关注过本帖
标题:帮忙修改一下程序,谢谢
只看楼主 加入收藏
bclee
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-9-16
收藏
 问题点数:0 回复次数:5 
帮忙修改一下程序,谢谢
# include <iostream>
# include <vector>
  using namespace std;
  vector <int>::const_iterator find_val ( vector <int>::const_iterator beg , vector <int>::const_iterator end,int value , vector <int>::size_type &occurs);
 void main()
{  int i ;
   vector<int>::size_type ctr;
   /*vector<int> vec;
    *cout << "please enter num "<<endl;
    *while (cin>>i)
    *{ if ( i = 0)      有朋友说 i=0 是错的,到底怎么错呢? 是因为如果输入的数字不是0就退出while循环,没有给容器添加元素? 还是语法错误呢?           
    *  break;
    *  else                怎么 实现 给容器vec添加一定元素(数字)后,输入一个操作退出while循环?
    *   vec.push_back(i);   
    * }
    */
 int num[] = {1, 2, 3, 8, 9, 4, 5, 8, 7, 8}
 vector<int> vec (num, sizeof(num)/sizeof(num([0]));
 vector<int> ::const_iterator iter;
   iter = find_val ( vec.begin() ,vec.end(), 8,ctr);
   cout << *iter << ctr <<endl;

  }
vector <int>::const_iterator find_val ( vector <int>::const_iterator beg , vector <int>::const_iterator end,int value , vector <int>::size_type &occours)
{
 vector <int> ::const_iterator res_iter = end;
 occours = 0;
 for ( ; beg != end; ++end)
 { if (*beg == value ){
       if ( res_iter == end)
           res_iter = beg;
       ++occours;
 }
 }
 return res_iter;
 }

编译没有错误,就是不能显示ctr,和迭代器,我的目的是定义既返回一个迭代器又返回出现满足要求元素次数的函数!!!

[[italic] 本帖最后由 bclee 于 2008-1-22 15:39 编辑 [/italic]]
2008-01-22 11:27
zabbey
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-10-10
收藏
得分:0 
一眼就看到一个错误:if ( i = 0)

2008-01-22 15:13
zabbey
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-10-10
收藏
得分:0 
for ( ; beg != end; ++end)
改为for ( ; beg != end; ++beg)
LZ好粗心啊!

2008-01-22 15:28
bclee
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-9-16
收藏
得分:0 
原帖由 [bold][underline]zabbey[/underline][/bold] 于 2008-1-22 15:28 发表 [url=http://bbs.bccn.net/redirect.php?goto=findpost&pid=1185737&ptid=198279][/url]
for ( ; beg != end; ++end)
改为for ( ; beg != end; ++beg)
LZ好粗心啊!

谢谢 !!
2008-01-22 15:42
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:0 
程序代码:
#include <iostream>
#include <vector>

#define cpivec vector<int>::const_iterator
using namespace std;

cpivec find_val (cpivec beg, cpivec end, int value, vector <int>::size_type &occurs);

int main()
{  
    int i ;
    vector<int>::size_type count;
    vector<int> vec;
    cout << "please enter several numbers: "<<endl;
    cin>>i;
        //输入0以结束输入
    while (i != 0)
    {
        vec.push_back(i);
        cin>>i;
    }
    
//  num[] = {1, 2, 3, 8, 9, 4, 5, 8, 7, 8};
//    vector<int> vec (num, sizeof(num)/sizeof(num([0]));
    vector<int> ::const_iterator iter;
    iter = find_val (vec.begin() ,vec.end(), 8, count);
    cout << *iter << endl 
         << count <<endl;
    return 0;
}


cpivec find_val (cpivec beg, cpivec end, int value, vector <int>::size_type &occours)
{ 
        // 返回指向最后一个找到元素的迭代器
        // 如果找不到,则返回vec.end()
    vector <int> ::const_iterator res_iter = end;
    occours = 0;
    for ( ; beg != end; ++beg)
    { 
        if (*beg == value ) 
        {
//            if ( res_iter != end)
//                 res_iter = beg;
                // 一旦找到则将beg赋值给res_iter
            res_iter = beg;
            ++occours;
        }
    }
    return res_iter; 
}
2008-01-22 16:31
FireG
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-1-21
收藏
得分:0 
if ( i = 0) 。。。。if(i==0)吧
2008-01-22 20:02
快速回复:帮忙修改一下程序,谢谢
数据加载中...
 
   



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

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