如何在 for 循环内部或外部打印双精度变量
how do i print the double variable inside or outside the for loop
我正在做一个关于酒店入住率的项目,但我在打印double
变量时遇到困难。我需要知道如何使用 setprecision
显示double
变量。
#include <iostream>
using namespace std;
int main()
{
int numfloors=0; //for number of floors
int numrooms=0; //for number of rooms per floor
int numoccipied=0; //for rooms that are occupied
int TRooms=0; //for total rooms in hotel
int TOcuppied=0; //for total rooms occupied in the hotel
int TUnoccupied=0; //for unoccupied rooms in the hotel
double occupancy=0; //for persentage occupancy
cout<<"Enter the number of floors in the hotel"
<<"nNote: please do not write value less than 1: ";
cin>>numfloors;
for(int floor=1; floor<=numfloors; floor++) //loop starts
{
cout<<"how many rooms are there in no."<<floor<<"floor?n"; //ask user to for number of rooms per floor
cin>>numrooms;
TRooms+= numrooms; //total rooms in each floor will add and store in Trooms
cout<<"how many rooms are ocupied?n"; //ask user to put number of occupied rooms
cin>>numoccipied;
TOcuppied+=numoccipied; //number of rooms occupied per floor is added
TUnoccupied=TRooms-TOcuppied; //stores all unoccupied rooms
occupancy=(TOcuppied)/TRooms; //store persentage occupancy
cout<<"nnThe Hotel has "<<TRooms<<"roomsn";
cout<<"from which "<<TOcuppied<< " rooms are occupied,n";
cout<<"and "<<TUnoccupied<<" are Unoccupied.n ";
}
cout << fixed << showpoint << setprecision(1);
cout<<"nnOccupancy Rate: "<<occupancy*100<<"% nn";
return 0;
}
你似乎是一个初学者,所以我会列出你的代码的一些问题:
-
当除以两个整数时,结果也是一个整数。因此,在积分除法中,4/10 为 0。因此,此行始终产生零:
occupancy=(TOcuppied)/TRooms;
而是使用:
occupancy=(TOcuppied)/(double)TRooms;
-
cout
的设置显然必须全部出现在输入之前。因此,首先发送设置:cout << fixed << showpoint << setprecision(1);
然后:
cout << occupancy*100;
当然,你可以把它放在一行上:
cout << fixed << showpoint << setprecision(1)<< occupancy*100;
-
您允许某些类型的无效输出。由于您的作业看起来很像家庭作业,因此您可能需要对其进行消毒。一个是你允许一个人进入比可用更多的占用房间:
how many rooms are there in no.1floor? 10 how many rooms are ocupied? 20 The Hotel has 10rooms from which 20 rooms are occupied, and -10 are Unoccupied. Occupancy Rate: 200.00%
因此,请记住检查该输入:
if(numoccipied>numrooms) { // do something, such as asking the user to enter correct value }
同样,您应该防止用户进入少于 1 层:
if(numfloors<1) return 0;
相关文章:
- 如何循环打印顶点结构
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 如何在c++中打印目录
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 在线编译器中的分段C++没有打印消息
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 如何将结构插入到集合中并打印集合的成员
- 在循环C++中指定字符串之后,不会打印该字符串
- 以螺旋方式打印矩阵的程序.(工作不好)
- 从控制台中删除最后打印的元素
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 在函数内部的声明中初始化数组,并在外部使用它
- 如何仅使用对象名称打印特定于对象的成员
- c ++控制台应用程序,如何在控制台外部打印字符
- 如何在 for 循环内部或外部打印双精度变量
- 为什么 cout 不打印变量"C"外部?
- 在内核外部使用CUDA printf来打印设备变量
- 外部C/C++库未在C#中打印
- 根据函数集检查外部文件,并使用c++打印错误和行号