Sửa lỗi was not declared in this scope (C++)

Em vừa chuyển sang học C++ và viết thử một đoạn chương trình thì bị lỗi này mặc dù đã khai báo biến rồi. Mong mọi người giải thích giúp em lý do và cách khắc phục ạ.
Em cám ơn.

#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
#define maxN 50
#define inf 32000
int n,nn,k,p,t[maxN],d[maxN],tt[maxN],u,v,mind;
vector<int> M[maxN];

void bfs(int s){
    for(int i=1;i<=n;i++)
        d[i]=inf;
    queue<int> q; //Khai báo queue q
    q.push(s); d[s]=0;
    while(!q.empty()){
        u=q.front(); //u là phần tử đầu queue
        q.pop();    //xóa phần tử đầu queue
        for(int i=0;i<M[u].size();i++){
            v=M[u][i]; //v là đỉnh kề u
            if (d[v]==inf){ //nếu v chưa thăm
                q.push(v);
                d[v]=d[u]+1;
            }
        }
    }
}

int main ()
{
    freopen("robot.inp","r",stdin);
    freopen("roboot.out","w",stdout);
    scanf("%d %d %d %d",&n,&nn,&k,&p);
    for(int i=1;i<=p;i++)
    {
        scanf("d%",&tt[i]);
    }
    for(int i=1;i<=nn;i++)
    {
        scanf("%d %d %d",&u,&v,&k);
        if (k=1)
        {
            M[u].push_back(v);
            M[v].push_back(u);
        }
    }
    for (int j=1;j<=p;j++)
    {
        bfs(tt[j]);
        for (int i=1;i<=n;i++)
        {
            t[i]=0;
            T[i]=t[i]+d[i];
        }
    }
    for (int i=1;i<=n;i++)
    {
        if (d[i]>inf && D[i]<mind)
            mind=d[i];
    }
    printf("%d",mind);
    return 0;
}

:3 Từ pascal sang C++ đúng không?
Vậy thì C++ phân biệt t và T nhé.

4 Likes

Thứ nhất, đúng như drgnz nói, có vẻ như bạn đang bị lẫn lộn Pascal với C++ (code của bạn có >=2 chỗ sai như nhau: T với t, D với d), Pascal không phân biệt hoa thường nhưng C++ thì có. Bạn nên phân biệt rõ sự khác nhau này.

[spoiler]Code viết Pascal mà cứ t với T lẫn lộn rất xấu, ngày xưa không có ai dạy bạn viết code sạch hơn sao?[/spoiler]

Thứ 2, cả đoạn này có vấn đề

Hình như phải là

t[j] = 0
for (i ...) t[j] += d[i];

chứ nhỉ?

Thứ 3, góp ý về cách code: Đã dùng C++ thì code cin cout luôn chứ scanf printf làm gì, đừng code kiểu nửa C nửa C++ như thế, xấu lắm.

3 Likes

Tks bạn, mình vừa chuyển từ Pascal sang nên chưa nhuyễn lắm. Còn phần dùng scanf printf là do thầy mình chỉ và bảo là nó đọc file nhanh hơn @@~

Có vẻ như bạn ở team code competitive programming…

Nên dùng printf scanf trong những trường hợp cần thiết thôi. Còn lại thì đừng dùng cho code đỡ xấu.

2 Likes

desync với stdio là xong :slight_smile: vẫn dùng cin cout được.

2 Likes

Vâng, tks mọi người ạ, có gì mình sẽ xem lúc nào cần dùng với không cần :v

A post was split to a new topic: Hàm bị lỗi not declared in this scope

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?