余数除法和不允许除以零 (c++) 时遇到问题

Having trouble with remainder division and not allowing dividing by zero (c++)

本文关键字:c++ 遇到 问题 除法 不允许 余数      更新时间:2023-10-16

嗨,我对 c++ 和堆栈溢出相对较新。如果在提问时有任何特定的协议,请非常诚实,这样我在问其他问题时就不会犯同样的错误。

我正在尝试创建一个程序,该程序采用下图所示的输入。我想让用户不能除以零。我还想在计算后有十进制输出,但程序四舍五入到下。例如,如果我说股票股价是 50 1/2 并且有 10 个,那么它显示 500 而不是 505。

提前感谢!

#include <stdio.h>
#define addr(var) & var // programmer defined macro definition 
#define MAXINT 2^32-1
int main(void)
{
char Ticker[6+1]; //Declare Ticker as String
int numOfShares;
float whole,num,dem;
float pricePerShare;
float stockValue; 
int i=0;
bool inputOK = false;
int value;



for (i=1; i <= 10; i++)
{

printf("Enter the stock Ticker ==> ");
scanf("%s",&Ticker[0]);         //Accept Ticker
printf("How many shares of %s were purchased: ",Ticker);
scanf("%d",&numOfShares);
printf("What is the price per share: ");
scanf("%d %d/%d",addr(whole), addr(num), addr(dem));

pricePerShare = whole + num / dem;
stockValue = numOfShares * pricePerShare;

printf("            Ticker  Number of   Price Stockn");
printf("            Symbol  Share       Per Share  Valuen");
printf("            =====   ==========  =========  ======n");
printf("%6s     %4d         %7.2f       %8.2fn",
Ticker, numOfShares,pricePerShare,stockValue);
// %7.2f --> 9999.99
}
printf(" Press any key to continue ...");

fflush(stdin);
getchar();
return 0;

}

在尝试您的代码时,我遇到了与您的不同的问题。似乎它总是会截断整数部分而不是小数部分。

无论哪种方式,我都能够通过更改来修复它

scanf("%d %d/%d", ....

scanf("%f %f/%f", ....

但是,不确定这是否适合您。

编辑:

刚刚确认这似乎是问题所在(或至少在我的设备上(。

wholenumdem被声明为float时,并且您正在将它们扫描为int%d,它实际上将整数转换为其他数字(不确定那些是什么(,这一定导致了问题。

如果您想保留scanf("%d %d/%d ....,还有另一种解决方法

您可以在开头将这些值声明为int,并在执行计算时将numdem转换为float

pricePerShare = whole + float(num) / dem;