01/10/2018, 10:26

Lỗi [Error] name lookup of 'i' changed for ISO 'for' scoping [-fpermissive]

của e bị lỗi trên ở dòng 44 ai có thể sửa giúp e với

#include<conio.h>
#define SIZE 100
void nhap(long a[],int &n)
{
        scanf("%d",&n);
        for(int i=0;i<n;i++)
        {
                scanf("%ld",&a[i]);
        }
}
long soNT(long x)
{
        int s=0;
        for(int i=1;i<=x;i++)
        {
                if(x%i==0)
                        s++;
        }
        if(s==2)
                return 1;
        return 0;
}
long xuly(long a[],int n)
{
        long min;
        int dem=0;
        for(int i=0;i<n;i++)
        {
                if(soNT(a[i])==1)
                {
                        dem++;
                        break;
                }
               
        }
        if(dem==0)
        {
                return 0;
        }
        else
        {
                min=a[i];
                for(i=i+1;i<n;i++)
                {
                        if((soNT(a[i])==1)&&(min>a[i]))
                                min=a[i];
                }
                return min;
        }
}
int  main()
{
        long a[SIZE];
        int n;
        nhap(a,n);
        printf("%ld",xuly(a,n));
}
Khoa NTA viết 12:28 ngày 01/10/2018

Hàm xuly: biến i trong vòng lặp tự động hủy khi ra ngoài vòng lặp nên các khối lệnh sau đó, sử dụng i là không hợp lệ. Giải pháp, khai báo biến i chung với biến s: để hết lỗi, còn code logic thì toàn chữ không có ý nghĩa nên mình lười đọc

Góp ý:

  • Nên đặt tên mảng, tên biến, tên hàm có ý nghĩa vì a, i, j, n, s, x hoàn toàn không có nghĩa và khó cho việc sau này đọc lại code.
  • Cẩn thận với vòng lặp i = 1; i <= x; vì C đánh số từ 0 đến x - 1
Bài liên quan
0