【发布时间】:2018-02-15 18:35:41
【问题描述】:
当我尝试像这样从控制台读取输入时:
6 6 4
1 1 1
2 1 1
1 2 1
2 2 1
使用以下代码片段,对于每行三元组,我只想计算 (n/a+1)*(m/a+1) 并将结果输出到控制台。
while(cin.get()!='\n'){
int n=0, m = 0, a =0;
cin >> n >> m >> a;
cout <<(n/a+1) * (m/a+1) << endl;
}
但是,它不起作用,为什么?
【问题讨论】:
-
您知道
cin.get()将从输入缓冲区中提取一个字符。那个角色将永远消失。如果要一次读取一行,请使用std::getline和std::istringstream进行提取。 -
欢迎堆栈溢出。 “它不起作用”你能说出发生了什么吗?
-
shin 我回答了你的问题,你看到了吗?
-
FYI
(n/a+1) * (m/a+1)如果 n 和 m 是 100,000 并且 a 是个位数,则会溢出。将乘法结果类型转换为long intsice m,n,a 是整数。喜欢这个(long int)((n/a+1) * (m/a+1))