gpt4 book ai didi

c - 使用指针打印结构中的最小值和最大值

转载 作者:太空宇宙 更新时间:2023-11-03 23:46:52 25 4
gpt4 key购买 nike

for(int i=0;i<n;i++)
{
printf("Ingrese datos del predio[%i]\n",i);
puts("Ingrese direccion");
scanf("%s",&(pun+i)->direccion);
puts("Ingrese numero de telefono");
scanf("%i",&(pun+i)->telefono);
puts("Ingrese avaluo");
scanf("%i",&(pun+i)->avaluo);
}
for(int j=0;j<n;j++)
{
printf("Predio [%i]\nDireccion:\t%s\nTelefono:\t\%i\nAvaluo: \t%i\n",j,(pun+j)->direccion,(pun+j)->telefono,(pun+j)->avaluo);
}
for(int k=0;k<n;k++)
{
if ((pun+k)->avaluo>max)
{
max=(pun+k)->avaluo;
printf("El mayor avaluo es:\nDireccion:\t%s\nTelefono:\t\%i\nAvaluo: \t%i\n",(pun+k)->direccion,(pun+k)->telefono,max);
}
if ((pun+k)->avaluo<min)
{
min=(pun+k)->avaluo;
printf("El menor avaluo es:\nDireccion:\t%s\nTelefono:\t\%i\nAvaluo: \t%i\n",(pun+k)->direccion,(pun+k)->telefono,min);
}
}

这是我的代码的一部分,我必须打印最小和最大的“avaluo”,但是当我执行这段代码时,它会显示第一个值和最大值,但不会显示最小值。我不知道为什么它不执行“值

最佳答案

问题出在min的初始化上。

改变

int min = 0;

#include <limits.h>
int min = INT_MAX; // or (pun)->avaluo;

我们还想将max初始化为一个小数,因此

int max = INT_MIN; 

建议。


我们想将 max 初始化为一个很大的值(假设理论上是无穷大),这样当我们与第一个实际值进行比较时, value > max 总是成立,因为如果在应该找到最大值的 for 循环中,我们将只检查一个值,这个值应该是最大的而不是 -infinity。

min 相同,但带有 +infinity。 INT_MAX,来自 limits.h可以起到这个作用(和 INT_MIN 为 -infinity)。检查这个例子:

int min = 1000;
int max = -1000;
int array[3], i;

array[0] = 10; // instead of getting input from user
array[1] = 20;
array[2] = 30;

for(i = 0; i < 3; ++i) {
if(array[i] < min) {
min = array[i];
}
if(array[i] > max) {
max = array[i];
}
}

// min and max are updated
printf("min = %d and max = %d", min, max);

如果你在一张纸上运行这个例子,你会看到这个想法是如何工作的。那么你应该能够理解为什么我们可以使用第一个值而不是无穷大(这里,在示例中,无穷大应该是 1000)。

正如 Chux 所建议的:

改变:

scanf("%i"...);

scanf("%d"...);

避免扫描八进制数。

关于c - 使用指针打印结构中的最小值和最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30466031/

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