| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 414 人关注过本帖
标题:[求助]关于一个条件判断
只看楼主 加入收藏
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
结帖率:100%
收藏
 问题点数:0 回复次数:0 
[求助]关于一个条件判断

大家来看下这个程序,总是出现"你要查找的数据不存在!"
我觉得可能是那两个条件判断的问题.
希望有人来给指点下.

/*
Name:
Copyright:
Author:
Date: 20-11-07 22:16
Description:
1、add()记录每个学生的各科成绩
2、place()根据总分排出名次
3、aver()求平均分
4、search()根据姓名查询成绩
5、print_result()打印出成绩单
*/
#include <iostream>
#include <fstream>
#include <string>
#include <map>
#include <algorithm>
#include <utility>

using namespace std;

typedef multimap<string, pair<string, float> > multi_map;
typedef multimap<string, pair<string, float> >::iterator map_iter;
const int subject_num = 6;

/*=========函数声明===============*/
multi_map add();
map_iter search(multi_map name_score, string name, map_iter &beg);
float aver(multi_map name_score, map_iter beg, map_iter end);

/*========1、add()记录每个学生的各科成绩=============*/
multi_map add()
{
cout << "添加一个记录:" << endl;
cout << "姓名:" << flush;
string name;
cin >> name;
cout << "学号:" << flush;
int stu_num;
cin >> stu_num;
//添加成绩
multimap<string, pair<string, float> > name_score;
float temp;
string subject[] = {"语文", "数学", "英语", "物理", "化学", "生物"};
for (int ix = 0; ix != subject_num; ++ix)
{
cout << subject[ix] << ":" << flush;
cin >> temp;
name_score.insert(make_pair(name, make_pair(subject[ix], temp)));
if (ix == subject_num-1)
cout << "输入完成!" << endl;
}
return name_score;
}


/*============search()根据姓名查询成绩=============*/
/*它接受三个参数:name_score为存放信息的容器
name为要查询的姓名
&beg为额外返回的一个name_score.lower_bound(name)产生的迭代器
end函数本身返回一个name_score.upper_bound(name)产生的迭代器
end和&beg用于初始化函数aver()的形参
*/
map_iter
search(multi_map name_score, string name, map_iter &beg)
{
int sum = 0;
beg = name_score.lower_bound(name);
map_iter end = name_score.upper_bound(name);
if(end != name_score.end()) //如果要查找的键不存在, //这个条件有问题吗????
{ //则upper_bound返回multi_maptimap容器超出末端的下一个位置
cout << "以下是为您查询到的内容:" << endl;
while(beg != end)
{
cout << beg->second.first << flush
<<beg->second.second << endl;
++beg;
}
}
else
cout << "您要查找的数据不存在!" << endl;
return end;
}

/*============aver()求平均分=============*/
float aver(multi_map name_score, map_iter beg, map_iter end) //
{
float sum = 0;
while(end != name_score.end() && end != beg) //这个条件有问题吗????
{
sum += beg->second.second;
++beg;
}
float average = sum/subject_num;
return average;
}

/*=============主函数===========*/
int main()
{
multi_map add_it;
add_it = add();
cout << "输入要查找的姓名:" << flush;
string name;
cin >> name;
map_iter beg, end;
end = search(add_it, name, beg);
cout << "平均分:" << aver(add_it, beg, end) <<endl;
system("pause");
return 0;
}


搜索更多相关主题的帖子: 记录 Copyright 查询成绩 include 
2007-11-21 11:26
快速回复:[求助]关于一个条件判断
数据加载中...
 
   



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

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