1 week = 40 hours ($200 per week) 1 day = 7 hours ($45 per day) ($2 per hour)
示例运行:
Enter the total hours:59 (59 is just an example.) You have: 1week 2day(s) 5hr(s) Payment: $300.00
这是我到目前为止所提出的......
int main(){
int totalWeekHrs = 0,
totalDayHrs = 0,
totalWorkedHrs = 0;
float totalPayment = 0,
payPerWeek = 0,
payPerDay = 0,
PayPerHr = 0;
// Input process
printf("Enter the total hours :");
scanf("%i",&totalWeekHrs,&totalDayHrs,&totalWorkedHrs);
// Calculative process
system("pause");
}
答案 0 :(得分:1)
这闻起来像家庭作业,所以我将解释模数是如何工作的。
模数运算符%执行整数除法并返回余数。例如:
int foo = 6;
int bar = 4;
int remainder = foo % bar;
在该示例中,remainder
将设置为2。
您可以阅读有关模数运算符here的更多信息。
答案 1 :(得分:0)
我不会用代码回答你的问题,因为它似乎是功课。当你真正开始编码时,你也已经停止了!
问题是“改变回报”典型问题的另一个问题。这是一个急切的算法,试图以最大的步骤来解决目标。
你必须有两个并列向量:
{ 40, 7, 1 } // hours worked (week, day, hour)
{ 200, 45, 2 } // salary for each item above.
请注意,第一个向量已排序,每个位置与第二个位置匹配。在你的例子中,目标是59.
对于第一个向量中的每个位置,您必须除以目标,并注释剩余的位置。
例如,对于第一个位置,最大金额为1,第二个位置为2 ......
First step:
( 59 / 40 ) == 1
( 59 % 40 ) == 19
Second step:
( 19 / 7 ) == 2
( 19 % 7 ) == 5
Third step:
( 5 / 1 ) == 5
( 5 % 1 ) == 0
你最终会得到一个向量,只要第一个带有结果:
{ 1, 2, 5 } // one week, two days and five hours.
为了显示结果,只需遍历向量,并将每个位置乘以第二个向量中的相同位置:
1 week(s) ( 1 * 200 )
2 day(s) ( 2 * 45 )
5 hour(s) ( 5 * 2 )
( 1 * 200 ) + ( 2 * 45 ) + ( 5 * 2 ) = 300
通过这种方式,您可以获得所需的结果。