30/09/2018, 18:50

1 số bài tập về chuỗi

12-đếm số lượng từ chứa ít nhất 2 nguyên âm
13- tìm kí tự xuất hiện nhiều nhất
14-tìm từ dài nhất
15-đảo ngược thứ tự các từ trong chuỗi
ai biết bài nào chỉ minh nha , với lại mình làm bài 12 như thế này sai chỗ nào vậy mọi người

#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "math.h"
#include "string.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[]) {
    char s[20];
    do {
        cout << " nhap chuoi ki tu : ";
        cin.getline(s, 50);
        cout << " chuoi vua nhap ";
        cout << "" << s << "" << endl;
        // 12-dem so luong tu chua it nhat 2 nguyen am
        int tongso = 0;
        int khongthoa = 0;
        int thoa;
        int len = strlen(s);
        if (s[0] != NULL && s[0] != 32)
            tongso++;
        for (int i = 1; i < len; i++) {
            if (s[i] != 32 && s[i - 1] == 32)
                tongso++;
        }
        int j = 0;
        while (j < len && (toupper(s[j]) != 'U' || toupper(s[j]) != 'E' || toupper(s[j]) != 'O' || toupper(s[j]) != 'A' || toupper(s[j]) != 'I' || toupper(s[j]) != 'Y'))
            j++;
        if (j >= len)cout << " mang khong chua chu nguyen am " << endl;
        else { // tìm từ chứa ít hơn 2 nguyên âm
            for (; j < len; j++) {
                if (toupper(s[j]) == 'U' || toupper(s[j]) == 'E' || toupper(s[j]) == 'O' || toupper(s[j]) == 'A' || toupper(s[j]) == 'I' || toupper(s[j]) == 'Y') { // kiem tra j co phai la chu nguyen am
                    int kt = 0; // nếu j là nguyên âm
                    for (int z = j +1; z<len ; z++) {
                        if (toupper(s[z]) == 'U' || toupper(s[z]) == 'E' || toupper(s[z]) == 'O' || toupper(s[z]) == 'A' || toupper(s[z]) == 'I' || toupper(s[z]) == 'Y') {
                            // kiểm tra xem z có là nguyên âm
                            for (int k = z - 1; k>j; k--) {
                                if (s[k] == 32) { // nếu ở giữa có khoảng trắng , không thoã
                                    kt = 1;
                                    break;
                                }
                            }
                        }
                    }
                    if (kt == 1)
                        khongthoa = khongthoa + 1;
                }
            }
        }
        thoa = tongso - khongthoa;
        cout << " so tu chua it nhat 2 nguyen am = " << thoa << endl;
        cout << " nhan ESC de thoat chuong trinh !!!" << endl;
    } while (_getch() != 27);
    return 0;
}
Đạt Đỗ viết 20:51 ngày 30/09/2018

Chỉnh code lại đi bạn, nhìn cho đẹp tí. Nhìn nhức mắt quá.

Nhóc Lãng Tử viết 21:01 ngày 30/09/2018

mình chỉnh lùi hàng bên ngoài rùi mà cứ post lên là như vậy ak

Đạt Đỗ viết 20:59 ngày 30/09/2018

có đưa vào thẻ code được mà.

if (kt == 1){
     khongthoa = khongthoa + 1;	
}
Nhóc Lãng Tử viết 20:52 ngày 30/09/2018

mình chỉnh rùi đó bạn

Đạt Đỗ viết 21:02 ngày 30/09/2018

Của bạn là nhập vào chuỗi s: xong xét các đk phải không.

Nết C++ thì dễ rồi.
Bạn có thể làm như sau:
Ví dụ chuỗi: s=‘toi ten la dat’; s+=’ ';
s thành 'toi ten la dat ’
Xong dòng 1 for cắt chuỗi cho vào mảng String. vector v;
Bạn có tìm hiểu về STL chưa?

Bài liên quan
0