c++判断输入不同位置重复数字的各自次数

2019-03-10  本文已影响0人  径向截面我没读懂

我拿数组来实现:

#include<iostream>

#include<Windows.h>

using namespace std;

int main(void){

int q=0; //a数组中有效数字的个数,初始为0;

int d=0; //固定a[0]辅助作用;

int n=0; //输入的数字

int num1=0;//每次输入n于a[]有效数字不相等的个数

int num2; //传给输出语句;

int a[20]; //放置有效数字,比如 1 2 3 2 1;要实现只存123就行;

int b[20]={0}; //计数器; 定义b数组所有元素为0;

cout<<"按Ctrl+z结束"<<endl;

while(cin>>n){

if(d==0){ //使输入的一组n的第一个数先固定为a[0];

a[0]=n;

d=d+1;

}else{ //第二个数开始就会在下面运行;

for(int i=0;i<=q;i++){ //从0到有效数字循环,q:有效数字,刚开始为a[0],下面还要增加的.

if(a[i] == n){ //  1.  如果输入数字m和a[]数组的有效数字有一样,则下一步;

b[i]++;     //则在b[i]数组的i位置(检索的第一个相同的位置,且有且只有一个)+1,.....存储次数

q=q-1; //并且有效数字-1

}else{ //  2.  输入的n和存在a[]无雷同的时候;

num1++; //不相等的个数;

}

if(num1==(q+1)){ //3. 检索的不相等的个数和一旦==有效的数字个数,则把n填上去

a[num1]=n;

num2=num1; //在下面num1清零之前把长度传给全局变量,输出要用.

}

}

num1=0; //每次输入的n都要重新查找,所以要把局部变量num1清零

q++; /*有效的长度也要多一个,上面的q=q-1,就是一旦有一样的就要把数据扔了,有效车长度-1,现在+1相当于没变

如果和前面的数据不一样,现在+1正好多一个*/

}

}

//以下是输出;

cout<<"a[]的有效元素有:"<<endl;

for(int x = 0;x<=num2;x++){

cout<<a[x]<<" ";

}

cout<<endl;

cout<<"b[]的次数:"<<endl;

for(int x = 0;x<=num2;x++){

cout<<b[x]+1<<"次"<<" ";

}

cout<<endl<<endl<<endl<<endl;

for(int q=0;q<=num2;q++){

cout<<a[q]<<"发生了"<<b[q]+1 <<"次"<<endl;

}

system("pause");

return 0;

}

怎么把代码格式写上去a,不太会,我直接沾上了,再附上效果图.


主要是实现的是思想,代码只是工具,比如,这个代码不会存储多余的数据,输入1 2 3 2 1,会把多的2 3扔掉,并给前面加一个次数...

上一篇 下一篇

猜你喜欢

热点阅读