用C++对数组A中的N(0<N<L00)个整数从小到大进行连续编号,要不能改变数组A中元素的

对数组A中的N(0<N<L00)个整数从小到大进行连续编号,要不能改变数组A中元素的顺序
且相同的整数具有相同的编号.例如: 若A 数组为{5,3,4,7,3,5,6} 则输出为: 3,1,2,5,1,3,4

1、首先,定义一个结构体,包含数值、排名和序号。

2、定义一个结构体数组变量d,保存所有的整数信息。

3、接着,定义一个自定义函数,比较整数序列中,任意两个整数的大小。

4、定义一个自定义函数,比较整数序列中,任意两个数的序号大小。

5、主函数中,先定义两个整数,保存整数个数和排名计数。

6、用for循环,输入序列中的各整数,并设置每个整数在数列中的序号。

7、数列中的所有数值,按其整数大小进行排序。

8、运行程序,输入规定个数的整数,电脑就会输出每个整数在序列中的排名。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-03
对数组A中的N(0<N<L00)个整数从小到大进行连续编号,要不能改变数组A中元素的顺序
且相同的整数具有相同的编号.例如: 若A 数组为{5,3,4,7,3,5,6} 则输出为: 3,1,2,5,1,3,4
第2个回答  2011-05-03
只能有方法不能给代码
先对数组排序放入另外一个空间,在原数组中查询与新数组对应的数
输出技术变量即可
或者生成对应数组后输出也可
第3个回答  推荐于2017-12-16
//C++代码如下
#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
using namespace std;

int main()
{
int *ptr=NULL;
int n;//存储输入的整数个数
vector<int> v;
map<int,int> m;//map存储索引,备查
cout<<"请输入整数个数"<<endl;

cin>>n;
ptr=new int [n];
cout<<"获取数组元素"<<endl;
for(int i=0;i!=n;++i)
{
cin>>ptr[i];
v.push_back(ptr[i]);
}
sort(v.begin(),v.end());//排序
v.erase(unique(v.begin(),v.end()),v.end());//将排序后的元素唯一化,即v中只存在互异的元素。

for(int i=1;i<=(int)v.size();++i)
m[v[i-1]]=i;//计算索引下标

for(int i=0;i!=n;++i)
{
cout<<m[ptr[i]]<<",";//到map中查找,输出结果
}
cout<<endl;

delete [] ptr;
ptr=0;
return 0;
}追问

d:\练习学生端(vcpp)\dddddd\ddddd.cpp(27) : error C2374: 'i' : redefinition; multiple initialization
d:\练习学生端(vcpp)\dddddd\ddddd.cpp(19) : see declaration of 'i'

追答

难道你不是学计算机的,一个这么简单的编译错误你也不会改正?
你用的是什么编译器?C语言不行,但是标准C++的循环变量是可以这个样子定义的。

追问

刚开始学C++,不懂么。。。VC6.0

追答

你把循环控制变量i只出现一次就可以了。
其余的i你可以改成其他的变量嘛,例如j,k。
按理说,编译器是不应该报错的。因为我的
那个代码符合C++标准。

本回答被提问者采纳
第4个回答  2011-05-04
抱歉!这个问题不懂哦,请再加油吧!
相似回答