"A" ở vị trí k, bài tập xâu trong c++

đề bài yêu cầu kiểm tra vị trí k trong xâu S được đọc từ file, nếu ở vị trí k xuất hiện kí tự “A” đưa ra YES, ngược lại đưa ra NO. Em code như thế này nhưng nó chỉ đưa ra NONONONO dù A có ở đúng vị trí hay không. Mọi người xem giúp em với ạ!

#include <iostream>
#include<bits/stdc++.h>
#include<cstring>
const long long nmax=200;
using namespace std;

void vitrik(long long k,string S){
    long long i,a[nmax];
    for(i=0;i<=S.length();i++){
        cin>>a[i];
        if(a[k]=='A'){
            cout<<"YES";
        }else{cout<<"NO";}
    }
}

int main()
{   string S;
    long long k;
    //freopen("TK.INP","r",stdin);
    //freopen("TK.OUT","w",stdout);
    cin>>k>>S;
    if(k>0){
        vitrik(k,S);
    }
    return 0;
}

Cho mình hỏi mục đích bạn duyệt vòng for này là gì thế.

em muốn kiểm tra từng kí tự trong xâu ạ

Tại sao phải kiểm tra từng ký tự trong sâu khi đề bài chỉ yêu cầu

“Ở vị trí k” có nghĩa là chỉ xét duy nhất ký tự tại vị trí K thôi mà?
Không phải cứ cái gì liên quan đến sâu là phải duyệt từ đầu đến cuối sâu đâu bạn.

mình đang có tư duy như vậy, vậy theo bạn thì mình nên code lại phần đó như thế nào ạ??

nếu ở vị trí k xuất hiện ký tự “A” đưa ra YES, ngược lại đưa ra NO.
Bạn chỉ cần 1 cái if else là có thể giải quyết nó rồi mà.

void vitrik(long long k,string S){
        if(S[k]=='A'){
            cout<<"YES";
        }else{cout<<"NO";}
    }

mình code như thế này nó đưa ra NO dù kết quả đúng ạ

Vậy cái bạn cần kiểm tra là

Bạn kiểm tra xem sâu S của bạn đã có dữ liệu đúng như trong file chưa đã.

1 Like

mình cout thử nó vẫn ra đúng xâu ạ

Mình chạy thử thấy kết quả vẫn chính xác. Không biết bạn có thể cho mình xem input của bạn không nhỉ?

Lưu ý: index của sâu bắt đầu tại vị trí 0. Kiểm tra phân biệt cả chữ hoa và chữ thường.

1 Like

input của mình đây ạ
image

Ký tự tại vị trí index 4 trong sâu của bạn là ‘1’ rồi. Bạn đọc lại phần lưu ý ở cmt bên trên của mình nhé.

2 Likes

làm thế nào để nó k bị mất 1 số ở đầu như vậy ạ?

Thì bạn trừ k đi 1 là xong mà, đâu cần phải nghĩ nhiều :stuck_out_tongue:

3 Likes

dạ em cảm ơn ạ, nãy giờ làm k đc =)) thì ra nó đơn giản như vậy thui

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