2
Tìm kí tự trong xâu trùng với kí tự đã cho trong C++?
0
Cộng đồng đã đăng:

Cho một xâu kí tự và một kí tự (không phân biệt thường và hoa).

a. Tìm trong xâu đã cho có bao nhiêu từ có kí tự đầu tiên trùng với kí tự đã cho.

b. Đưa ra tất cả các từ có độ dài lớn nhất.

VD:

XAUVAKITU.INPUT: toi lo lang viec thi cu lam

Chữ cái: l

a: lo lang lam

b: lang

thêm bình luận...
2
Cộng đồng đã đăng:

Bạn có thể tham khảo bài code bên dưới.

#include "pch.h"
#include <iostream>
#include <string>
using namespace std;

#pragma warning(disable:4996)


int main()
{
    string str; // Khoi tao xau
    char ch; // Khoi tao ky tu
    string kq; // Khoi tao xau ket qua
    string tuDaiNhat = ""; // Khoi tao tu dai nhat 

    // Nhap vao xau ky tu
    cout << "Nhap vao xau ky tu: ";
    getline(cin, str);

    // Nhap vao ky tu
    cout << "Nhap vao ky tu can tim kiem: ";
    cin >> ch;

    // Xy ly chinh
    for (int i = 0; i < str.length(); i++) {
        if (str[i] == ch) {
            string tmp;
            for (int j = i; j < str.length(); j++) {
                tmp.push_back(str[j]);
                if (str[j] == ' ' || str[j] == '\n') {
                    break;
                }
            }

            if (tmp.length() > tuDaiNhat.length()) {
                tuDaiNhat = tmp;
            }

            kq += tmp;
        }
    }

    // Xuat ra man hinh ket qua
    cout << "Ket qua cau (a) la: " << kq << endl;
    cout << "Ket qua cau (b) la: " << tuDaiNhat << endl;

    return 0;
}

Ý tưởng cơ bản là duyệt chuỗi, so sánh từng ký tự của chuỗi với ký tự đã cho, nếu trùng thì lưu lại từ chứa ký tự đó, đồng thời ở mỗi lần tìm được một từ, so sánh độ dài của nó với từ đã tìm được trước đó, nếu độ dài lớn hơn, cập nhật lại, không thì bỏ qua.

em cảm ơn ạ :3

kngoc46 01.07.2020
1

Ở câu b mình vẫn chưa hiểu ý của câu hỏi là gì?

  1. Có thể là tìm tất cả các từ có độ dài lớn nhất dựa vào kết quả ở câu a.
  2. Hoặc là tìm tất cả các từ có độ dài lớn nhất dựa vào xâu ban đầu.

Ở đoạn code trên mình làm theo trường hợp 1 nhé, tức là từ kết quả ở câu a, mình tìm từ dài nhất, không biết có đúng ý bạn không? :D

Cộng đồng 01.07.2020

là tìm các từ có độ dài lớn nhất dựa vào kết quả câu a đấy ạ

kngoc46 01.07.2020
thêm bình luận...
0
Cộng đồng đã đăng:

Bạn có thể dùng hàm strchr để tìm kí tự trong xâu trùng với kí tự đã cho trong C++.

Link tham khảo: Tìm kiếm chuỗi trong C++ (strchr, strstr)

Để đưa ra tất cả các từ có độ dài lớn nhất, bạn cần tách các từ trong chuỗi ra bằng dấu cách, sau đó so sánh độ dài các từ với nhau để tìm ra từ dài nhất của một chuỗi trong C++

Link tham khảo:

  1. Tách chuỗi trong C++ (strtok)

  2. Độ dài chuỗi trong C++ (strlen)

  3. Toán tử so sánh trong C++

thêm bình luận...
Bạn đang thắc mắc? Ghi câu hỏi của bạn và đăng ở chế độ cộng đồng (?)