我有这个代码示例。我需要从数组元素中获得最高值的数组中获取maxDay
。 (在这种情况下为7.0)。所以我需要得到它的索引值(即24)。但我无法获得所需的输出。
这是输出我正在:
最大使用月份的日期:12
单位最大使用量:7.00
最低使用月份的日期:4
单位最低使用量:0.00
本月平均使用量:1.80
本月总使用量:50.40
但是CORRECT输出应该是:
最大使用月份的日期:24
单位最大使用量:7.00
最低使用月份的日期:28
单位最低使用量:0.00
本月平均使用量:1.80
本月总使用量:50.40
我试过这段代码,但看起来不行。我找不到我出错的地方。你能帮我吗???
#include<stdio.h>
int main(){
float maxUsage=0,minUsage=1000,avgUsage,totUsage=0;
int maxDayI=0,maxDayJ=0,minDayI=0,minDayJ=0,count=0,i,j;
float usage[4][7]={{1.2, 2.1, 0.8, 0.0, 1.0, 1.3, 4.0},
{1.5, 3.2, 1.0, 1.3, 4.0, 1.5, 3.2},
{2.3, 0.4, 1.2, 2.1, 0.8, 0.0, 2.6},
{2.1, 1.7, 7.0, 1.2, 2.1, 0.8, 0.0} };
for(i=0;i<4;i++){
for(j=0;j<7;j++){
totUsage=totUsage+usage[i][j];
if(usage[i][j]>maxUsage){
maxDayI=i;
maxDayJ=j;
maxUsage=usage[i][j];
}else if(usage[i][j]<minUsage){
minDayI=i;
minDayJ=j;
minUsage=usage[i][j];
}
}
}
printf("Day of the Month with Maximun Usage: %d\n",(maxDayI+1)*(maxDayJ+1));
printf("Maximum Usage in Units: %.2f\n",maxUsage);
printf("Day of the Month with Minimum Usage: %d\n",(minDayI+1)*(minDayJ+1));
printf("Minimum Usage in Units: %.2f\n",minUsage);
printf("Average Usage for the Month: %.2f\n",totUsage/28);
printf("Total Usage for the Month: %.2f\n",totUsage);
return 0;
}
答案 0 :(得分:1)
索引计算过程似乎是错误的。您可能需要的是(下面的说明)
((maxDayI)* ELEM ) + maxDayJ + 1;
^^ ^^ ^^ ^^
| | | |
saved value | offset Handle 0-based indexing
of i No. of element
其中ELEM
是每个1-D数组的元素编号,即7。
同样适用于最小元素。
注意事项:如果您有多天的最大/最小值,只会出现第一个;被考虑。如果您希望选择多个值中的特定记录,则需要为其添加逻辑。
答案 1 :(得分:0)
这是答案:
#include<stdio.h>
int main(){
float maxUsage=0,minUsage=100,avgUsage,totUsage=0;
int maxDayI=0,maxDayJ=0,minDayI=0,minDayJ=0,count=0,i,j;
float usage[4][7]={{1.2, 2.1, 0.8, 0.0, 1.0, 1.3, 4.0},
{1.5, 3.2, 1.0, 1.3, 4.0, 1.5, 3.2},
{2.3, 0.4, 1.2, 2.1, 0.8, 0.0, 2.6},
{2.1, 1.7, 7.0, 1.2, 2.1, 0.8, 0.0} };
for(i=0;i<4;i++){
for(j=0;j<7;j++){
totUsage=totUsage+usage[i][j];
if(usage[i][j]>maxUsage){
maxDayI=i;
maxDayJ=j;
maxUsage=usage[i][j];
}else if(usage[i][j]<minUsage){
minDayI=i;
minDayJ=j;
minUsage=usage[i][j];
}
}
}
printf("Day of the Month with Maximun Usage: %d\n",(maxDayI*7)+(maxDayJ+1));
printf("Maximum Usage in Units: %.2f\n",maxUsage);
printf("Day of the Month with Minimum Usage: %d\n",(minDayI*7)+(minDayJ+1));
printf("Minimum Usage in Units: %.2f\n",minUsage);
printf("Average Usage for the Month: %.2f\n",totUsage/28);
printf("Total Usage for the Month: %.2f\n",totUsage);
return 0;
}