01/10/2018, 11:48

Hỏi về lỗi trong C

#include <stdio.h>

int main()
{
    int n,i,j;
  
    scanf("%d", &n);
    double a[n+1];
    int vitri[n+1];
    for(i=1;i<=n+1;i++) vitri[i]=i;
    for(i=1;i<=n;i++) scanf("%lf", &a[i]);
    int boolean=1;
    
    for (i=1;i<=n;i++)
    {
        if (a[i]>=1 || a[i]<=0) boolean=0;
    }
    
    if (boolean==1)
    
    {
    for (i=1;i<=n;i++)
    {
        for (j=i+1;j<=n;j++)
        {
            if (a[i]<a[j])
            {
                int temp2;
                double temp1;
                a[i]=temp1;
                a[i]=a[j];
                a[j]=temp1;
                vitri[i]=temp2;
                vitri[i]=vitri[j];
                vitri[j]=temp2;
            }
        }
    }
    
    double heso=1;
    i=1;
    
    if (a[1]<0.05) printf("No one is alive");
    else
    {
    do 
    {
        printf("%d ", vitri[i]-1);
        i++;
        heso=heso*0.5;
        for (j=1;j<=n;j++) a[j]=a[j]*heso;
    }
    while (a[i]>=0.05);
    }
    }
    
    else printf("invalid");
    
    return 0;
    
}

mình có một thuật toán như trên. khá lằng nhằng. nhưng ở phần sắp xếp thì trình nhập ở trường mình báo lỗi về là :

prog.c:30:21: error: 'temp1' may be used uninitialized in this function [-Werror=maybe-uninitialized]
                 a[i]=temp1;
                     ^
prog.c:33:25: error: 'temp2' may be used uninitialized in this function [-Werror=maybe-uninitialized]
                 vitri[i]=temp2;

mình chạy trên dev C++ vẫn bình thường nhỉ ? có gì sai ở đây không mọi người ?

nghia viết 13:51 ngày 01/10/2018

double temp1;
a[i]=temp1;
a[i]=a[j];
a[j]=temp1;

Gợi ý: bạn nên tìm hiểu lại hoán vị!

int a;
int b = a; //compile error!
HK boy viết 13:54 ngày 01/10/2018

Sai ở đâu thì up code lên, bạn nói thế này thì chẳng ai giúp được bạn đâu.

Bài liên quan
0