标题:输入double型的数据并进行排序,利用vector和迭代器解决。十万火急啊。谢谢 ...
只看楼主
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
结帖率:96.23%
已结贴  问题点数:20 回复次数:13 
输入double型的数据并进行排序,利用vector和迭代器解决。十万火急啊。谢谢。
#include<iostream>             //题目的要求是输入double型的数据直到输入0为止(0计算在内)并得出这些数据的最小值和最大值。
#include<vector>
using namespace std;
int main()
{vector<double> a;   //定义一个double类型的容器。
 double number,t;
 vector<double>::iterator q,p;
 p=q;
 q=a.begin();
 while(cin>>number)//将输入的double型 number 变量存储到容器a中
{a.push_back(number);
 if(*q==0)
  break;
  ++q;
}
int total,i,j;
total=a.size();//得到容器内数据的个数。
for(i=0;i<total-1;i++)//将容器内的数据从小到大进行排序。
{for(j=i+1;j<total;j++)
  {if((*(p+i))>(*(p+j)))
      {t=(*(p+i));
       (*(p+i))=(*(p+j));
       (*(p+j))=t;
      }
   }
}
cout<<*p<<endl;//输出最小的数据
cout<<*(p+total-1)<<endl;//输出最大的数据。
return 0;
}                                                   //这个是我写的代码,编译没有错误但是运行结果是segmentation fault.

[ 本帖最后由 fl8962 于 2013-10-25 08:09 编辑 ]
搜索更多相关主题的帖子: include double number 最大值 
2013-10-25 07:52
blueskiner
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:227
专家分:707
注 册:2008-9-22
得分:0 
STL有对容器进行排序的方法。在#include <algorithm>
2013-10-25 09:08
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
得分:0 
回复 楼主 fl8962
但是我现在没学啊,我就想知道我这样做为什么不行。

想抽苏烟了。
2013-10-25 09:11
blueskiner
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:227
专家分:707
注 册:2008-9-22
得分:0 
stl的iterator本身就类似指针的功能了,但又不完全是指针,你对容器vector的使用不是很恰当。
2013-10-25 09:15
xufan
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:232
专家分:804
注 册:2008-10-20
得分:0 
程序代码:
#include<iostream>             //题目的要求是输入double型的数据直到输入0为止(0计算在内)并得出这些数据的最小值和最大值。
 #include<vector>

 #include <algorithm>

 using namespace std;

 int main()

 {
     vector<double> vecList;
     double nNum;
     int flags = 1;
     while (flags)
     {
         cin>>nNum;
         if (0 == nNum)
         {
             vecList.push_back(nNum);
             break;
         }
         else
            vecList.push_back(nNum);
     }
    sort(vecList.begin(),vecList.end());
    for (vector<double>::iterator it = vecList.begin(); it != vecList.end(); it++)
        cout<<*it<<" ";
    cout<<endl;
    vector<double>::iterator it = vecList.begin();
    cout<<"Min = "<<*it<<endl;
    it = vecList.end() - 1;
    cout<<"Max = "<<*it<<endl;
    return 0;

 }

~~~~~~我的明天我知道~~~。
2013-10-25 09:20
blueskiner
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:227
专家分:707
注 册:2008-9-22
得分:0 
你的思路应该是冒泡排序,可以不用局限于double这个类型,随意拿个整型数组就可以作为测试数据了。也不必使用STL的容器。
2013-10-25 09:26
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
得分:0 
回复 5楼 xufan
亲,我运行你的代码仍旧是出现运行我的代码的错误同样是Segmentation fault.请问在你的电脑上可以正确运行代码么?我用的是linux自带的编译器不是微软的。谢谢

想抽苏烟了。
2013-10-25 09:32
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
得分:0 
回复 6楼 blueskiner
但是这个输入的数据是未知的,我不会定义未知长度的数组,所以只能用vector容器来解决。我就是想问下我这个代码有什么错误。。能帮我指正一下么。谢谢

想抽苏烟了。
2013-10-25 09:37
blueskiner
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:227
专家分:707
注 册:2008-9-22
得分:10 
程序代码:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(int argc, char** argv)
{
    vector<double> a;   //定义一个double类型的容器。
    double number;
//    vector<double>::iterator q,p;
    vector<double>::iterator it;
//     p=q;
//     q=a.begin();
    while(cin>>number)//将输入的double型 number 变量存储到容器a中
    {
        if(number==0){
            break;
        }
        a.push_back(number);
//         ++q;
    }
    it=a.begin();
    while (it!=a.end())
    {
        it++;
    }
    sort(a.begin(),a.end());
    it = a.begin();
    while (it != a.end())
    {
        cout<<*it<<" ";
        it++;
    }
    cout<<endl;
    it = a.begin();
    cout<<"Min = "<<*it<<endl;
    it = a.end() - 1;
    cout<<"Max = "<<*it<<endl;
    return 0;
}

自己挫一下代码吧,linux windows都一样的


[ 本帖最后由 blueskiner 于 2013-10-25 09:40 编辑 ]
2013-10-25 09:38
xufan
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:232
专家分:804
注 册:2008-10-20
得分:0 
我运行的没有问题呀!
-5 -2 3 1 -3 4 0
-5 -3 -2 0 1 3 4
Min = -5
Max = 4

Process returned 0 (0x0)   execution time : 11.883 s
Press any key to continue.

~~~~~~我的明天我知道~~~。
2013-10-25 09:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-422478-1-1.html




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

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