gpt4 book ai didi

c - 比较 double 时,if 语句只能以一种方式工作?

转载 作者:行者123 更新时间:2023-11-30 20:53:50 24 4
gpt4 key购买 nike

此代码旨在从“pivo.txt”中的啤酒列表中查找最昂贵的啤酒。当它寻找最便宜的啤酒时,执行 if 语句并且程序运行良好,但是当我将比较符号从 > 转为 < 时,它永远不会执行。这是一个逻辑问题还是与比较 float 有关(将它们转换为 int 不起作用)

#include <stdio.h>
#include <stdlib.h>
typedef struct{
char ime[50];
double kol;
double cijena;
}pivo;

char* cheap_price(pivo *p,int n)
{
int i=0,j=0;
double raz,maxraz;
maxraz = p[i].kol/p[i].cijena;
for(i=0;i<n;i++)
{
raz = p[i].cijena/p[i].kol;
printf("%lf\n",raz);
if(raz<maxraz)
{
maxraz = raz;
printf("min%lf\n",maxraz);
j=i;
}
}
return p[j].ime;
}

int main()
{
pivo *p;
int n,i;
FILE *file = fopen("pivo.txt","r");
fscanf(file,"%d",&n);
p = (pivo*)malloc(n*sizeof(pivo));
for(i=0;i<n;i++)
fscanf(file,"%s %lf %lf",p[i].ime,&p[i].kol,&p[i].cijena);
printf("\nCheapest beer is %s",cheap_price(p,n));
}

txt 文件如下所示

9
Zlatorog 0.33 13.00
Calsberg 0.5 17.00
Ozujsko 0.5 13.00
Stella 0.33 13.00
Tuborg 0.5 15.00
Karlovacko 0.33 14.00
Guiness 0.33 18.00
Bavaria 0.25 15.00
Becks 0.33 17.00

我放在 if 语句内的 printf 的调试是空的(如果从不执行)

最佳答案

kol/cijena(如对maxraz的初始分配)还是cijena/kol(如循环中)? ?

char* cheap_price(pivo *p,int n)
{
int i=0,j=0;
double raz,maxraz;
maxraz = p[i].kol/p[i].cijena;
// ^^^ ^^^^^^
for(i=0;i<n;i++)
{
raz = p[i].cijena/p[i].kol;
// ^^^^^^ ^^^
printf("%lf\n",raz);

关于c - 比较 double 时,if 语句只能以一种方式工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44707757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com