我正在做作业,我不希望有人做作业,我只想知道我的代码有什么问题。

错误:

C:\Users\Cojik\Desktop\Codeblocks files\zadaca2_zadatak1\main.c||In function 'main':|
C:\Users\Cojik\Desktop\Codeblocks files\zadaca2_zadatak1\main.c|28|error: invalid operands to binary > (have 'float *' and 'float')|
C:\Users\Cojik\Desktop\Codeblocks files\zadaca2_zadatak1\main.c|29|error: incompatible types when assigning to type 'float' from type 'float *'|
C:\Users\Cojik\Desktop\Codeblocks files\zadaca2_zadatak1\main.c|39|error: invalid operands to binary  (have 'float *' and 'float')|
C:\Users\Cojik\Desktop\Codeblocks files\zadaca2_zadatak1\main.c|63|error: incompatible types when assigning to type 'float' from type 'float *'|
||=== Build failed: 8 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

Code:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n, i ,j;
    float arr[1000], max1=-999999999999999.0, max4=-999999999999999.0, min2=999999999999999.0, min3=999999999999999.0;
    printf("Enter the number n: ");
    scanf("%d", &n);
    if(n<3||n>30)
        printf("Worng entry!");
    else
    {
        for(i=0;i<n;i++)
        {
            printf("Enter the elements of %d. row: ", i+1);
            for(j=0;j<n;j++)
            {
                scanf("%f", &arr[i]);
            }
        }
        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
                if(i>j && i<n-1-j)
                {
                    if(arr[i]>max1)
                        max1=arr[i];
                }
                if(j>i && j<n-1-i)
                {
                    if(arr[i]<min2)
                        min2=arr[i];
                }
                if(i>j && j>n-1-i)
                {
                    if(arr[i]<min3)
                        min3=arr[i];
                }
                if(j>i && i>n-1-j)
                {
                    if(arr[i]>max4)
                        max4=arr[i];
                }
            }
        }
        if(max1==max4 && min2==min3)
        {
            printf("Array is simetrical!\n");
            printf("Elements: o1 = %.3f, o2 = %.3f, o3 = %.3f, o4 = %.3f", max1, min2, min3, max4);
        }
        else
        {
            printf("Array is not simetrical!\n");
            printf("Elements: o1 = %.3f, o2 = %.3f, o3 = %.3f, o4 = %.3f", max1, min2, min3, max4);
        }
    }
    return 0;
}


我的数组需要是二维的吗?如果是二维的,我的代码给出了错误的答案,如果是一维的,则会出现此错误,这不是故意的。

最佳答案

似乎您的编译器混乱了。无论如何,max1 .. max4的初始化程序对于float来说太大了。使用双。

我还注意到您执行if(max1==max4 && min2==min3),但是绝对比较两个浮点值是一种不好的做法。您应该将它们在epsilon之内比较,机器精度:

#define epsilon 0.0000000001; //(I don't say this value is correct; just an example)
#define ABS(a) (a<0?-a:a)

if(ABS(max1-max4)<epsilon && ABS(min2-min3)<epsilon)

关于c - C-类型不匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27253305/

10-12 14:57