C++ Primer Plus第七章 习题7

该程序演示了如何在C++中填充、显示和修改双精度浮点数数组。用户可以输入一系列正数,程序会检查输入的有效性。如果输入有误,程序将清除输入缓冲区并终止输入。之后,用户可以输入一个系数来重新赋值数组元素,并再次显示更新后的数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <iostream>

const int Max{ 5 };

double* fill_array(double* ptrBegin, double* ptrEnd);
void show_array(const double* ptrBegin, const double* ptrEnd);
void revalue(double r, double* ptrBegin, double* ptrEnd);

int main()
{
	double properties[Max];

	double* pEnd = fill_array(properties, properties + Max);
	show_array(properties, pEnd);

	if (pEnd - properties > 0)
	{
		std::cout << "请输入系数:";
		double factor;
		while ( !(std::cin >> factor))
		{
			std::cin.clear();
			while (std::cin.get() != '\n')
			{
				continue;
			}

			std::cout << "输入有误,请输入有效数字: ";
		}

		revalue(factor, properties, pEnd);
		show_array(properties, pEnd);
	}

	return 0;
}

double* fill_array(double* ptrBegin, double* ptrEnd)
{
	double temp;
	double* ptr { nullptr };
	unsigned int i{};
	for (ptr = ptrBegin; ptr != ptrEnd; ptr++)
	{

		std::cout << "输入第 " << i + 1 << " 号数字:";
		std::cin >> *ptr;
		if (!std::cin)
		{
			std::cin.clear();
			while (std::cin.get() != '\n')
			{
				continue;
			}

			std::cout << "输入有误, 输入过程终止。" << std::endl;
			break;
		}
		else if(*ptr < 0)
		{
			break;
		}

		i++;
	}

	return ptr;
}

void show_array(const double* ptrBegin, const double* ptrEnd)
{
	const double* ptr{ nullptr };
	unsigned int i{};
	for (ptr = ptrBegin; ptr != ptrEnd; ++ptr)
	{
		std::cout << "第 " << i + 1 << " 号数字:";
		std::cout << *ptr << std::endl;
		i++;
	}
}

void revalue(double r, double* ptrBegin, double* ptrEnd)
{
	 double* ptr{ nullptr };
	for (ptr = ptrBegin; ptr != ptrEnd; ++ptr)
	{
		*ptr *= r;
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值