Bài 28, Nhập từ bàn phím một chuỗi ký tự và thực hiện các yêu cầu sau:
  • Chuẩn hóa chuỗi ký tự(Xóa các khoảng trắng thừa có trong chuỗi, giữa các từ chỉ còn giữ lại một khoảng trắng)
  • Cho biết từ có độ dài lớn nhất trong chuỗi và vị trí xuất hiện của chuỗi đó.
  • Nhập từ bàn phím từ thay thế x và từ mới sẽ thay thay thế y. Thay thế tất cả các từ gốc x đang có trong chuỗi bằng từ mới y
  • Đảo ngược thứ tự các từ có trong chuỗi và in ra màn hình chuỗi san khi đảo ngược

Bài viết nằm trong: Series thực hành cơ sở lập trình
Chú ý: phần đảo ngược code chưa được viết, xem ý tưởng

Code:  

[#include <iostream>
#include <string.h>
using namespace std;
int main()
{
    int i, j;
    char s[100]="";
    j =0;
    i = 0;
    cout<<"Nhap vao chuoi S: ";
    cin.getline(s, 100);

    //a, chuan hoa chuoi ky tu
    while(i<strlen(s) - 1) {
        if((s[i] == ' ') && (s[i+1] == ' ')) {
            strcpy(&s[i], &s[i+1]);
        }
        else {
            i++;
        }
    }
    while(s[strlen(s)-1]== ' ')
        s[strlen(s)-1] ='\0';
    cout<<s;
    // b, tu co do dai lon nhat va vi tri xuat hien cua chuoi do
    int viTri, max, n;
    viTri = 0;
    max = 0;
    n = strlen(s);
    for(i = 0; i<n; i++) {
        if(s[i-1] == ' ' && s[i] !=' ') {
            int dem;
            dem =0;
            for(j =i; j<n; j++) {
                if(s[j] == ' ')
                    break;
                else {
                    dem++;
                }
                if(dem > max ) {
                    viTri = i;
                    max = dem;
                }
            }
        }
    }
    cout<<"\nTu co do dai lon nhat la: ";
    for( i = viTri; i< viTri+ max; i++) {
        cout<<s[i];
    }
    cout<<"\nVi tri xuat hien cua chuoi  tu ky tu : "<<viTri<<" den "<<viTri+max<<endl;

    // dao nguoc thu tu cac tu
     j = 0;
        char **b = (char**)(new char[100]);
     char *p;
        p = strtok(s, ",. "); //cat chuoi bang cac ky tu ,. va space
        while(p != NULL)
        {
                b[j] = p;
                j++;
                p = strtok(NULL, ",. "); //cat chuoi tu vi tri dung lai truoc do
        }
        for (i = j-1; i>=0; i--) //in ra cac tu theo thu tu dao nguoc
                cout<<b[i]<<" ";
        //Nhap vao y va thay the cho tu x ( tuong tu viec dao nguoc)
}]

Dữ liệu test: