C++实验二 控制结构和函数 打印温度柱状图 2.2 处理零下温度

2.2 处理零下温度

(1)要求柱状图能够处理多个零下温度的情况,以如下形式打印。(10 )


-2               **|

4                   |****

-5           *****|

6                   |******

3                   |***


(2)求出现次数最多的温度,及其出现次数。(10 分)

                   例如:12 13 12 12 14 13 13 12 13 13 中,出现次数最多的是13 度,出现了 5 次。



#include<iostream>
#include<cmath>
using namespace std;
/*
一组温度数据 -3 -4 -7 8 6 15 14 13 -5 -2 11 14 11 11 12

输入n个温度  11 12 13 11 11 11 11 10 9 13 13 11 16 14 15
*/
void inputTemps(int temp[], int n) {

	int i;
	cout << "Please input the tempratures:" << endl;
	for (i = 0; i<n; i++) {
		cin >> temp[i];

	}
	cout << endl;
}

/*
寻找最小值,控制温度,输出格式
*/
int minTemps(int temp[], int n) {
	int min = temp[0];
	for (int i = 1; i < n; i++) {
		if (min > temp[i]) {
			min = temp[i];
			return min;
		}
	}


}


/*
显示柱状图
*/
void displayTemps(int temp[], int n) {
	
	int min = abs(minTemps(temp, n)) + 3;
	cout << "显示柱状图如下:" << endl;
	for (int i = 0; i < n; i++) {
		cout.width(3);     //设置温度所占域宽
		cout << temp[i];
		if (temp[i] < 0) {
			for (int j = 0; j < min - abs(temp[i]); j++) {
				cout << " ";
			}
		}

		else //if(temp[i]>0)
		{
			for (int j = 0; j < min; j++) {
				cout << " ";

			}
			cout << "|";
		}
		for (int k = 0; k < abs(temp[i]); k++){
			cout << "*";

		}
		if (temp[i] < 0) {
			cout << "|";
		}
		cout << endl;


		}
		cout << endl;

	}


/*
寻找出现次数最多的温度
*/
int maxNum(int num[], int n) {
	int max = num[0];
	for (int i = 0; i < n; i++) {
		if (max < num[i]) {
			max = num[i];
		}
	}
	return max;
}
/*
开辟动态数组
*/
void mostNum(int temp[], int n) {
	int *point = new int[n]();   //开辟动态数组,存放每个温度出现次数
	for (int i = 0; i < n; i++) {     //记录n个温度每个温度出现次数
		int m = 1;
		for (int j = 0; j < n; j++) {
			if (i != j) {           //可先判断下标,也可先判断温度
				if (temp[i] == temp[j]) {
					m++;
				}


			}
			
		}
		point[i] = m;
		
	}
	int b = maxNum(point, n);

	point = NULL;
	for (int q = 1; q < n; q++) {
		int p = 1;
		for (int r = 0; r < n; r++) {
			if (temp[q] == temp[r]) {
				if (r > q) {
					p++;
				}
			}
		}
		if (p == b) {
			cout << "出现次数最多的温度为" << temp[q] << ",出现了" << b << "次。" << endl;
		}


	}
	cout << endl;

}




/*
主函数
*/
int main()
{
	int temps[30];


	inputTemps(temps, 15);

	displayTemps(temps, 15);

	 mostNum(temps, 15);

	return 0;
}












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值