Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: Xóa ký tự chữ cái trong Mảng ký tự [FIXED]

  1. #1
    Ngày gia nhập
    05 2016
    Bài viết
    13

    Mặc định Xóa ký tự chữ cái trong Mảng ký tự [FIXED]

    Chào anh em mình có cái đoạn code như này mình gọi hàm del ký tự trong mảng ký tự đặt điều kiện là if (isalpha(chuoi[i])) rồi mà khi nhập vào 1 đoạn ký tự nó chỉ xóa 1 số ký tự chữ cái còn đâu nó không xóa hết
    Ví dụ nhé
    Nhap vao chuoi ky tu:
    8da8sdxa8sd5z5d6asd
    sau khi xoa ta co:
    8a8da8d556s
    Help
    Code:
    #include <stdio.h>
    #include <iostream>
    #include <conio.h>
    #include<math.h>
    #include <string.h>
    #define getch _getch
    #define gets gets_s
    #define MAX 50
    #include <ctype.h>
    using namespace std;
    void nhapchuoi(char chuoi[], int &l)
    {
    	cout << "Nhap vao chuoi ky tu: " << endl;
    	gets(chuoi, MAX);
    	l = strlen(chuoi);
    
    }
    void del(char chuoi[], int p, int &l)
    {
    	for (int i = p; i < l; i++)
    	{
    		chuoi[i] = chuoi[i + 1];
    	}
    	l--;
    }
    void xoakytukhongphaiso(char chuoi[], int &l)
    {
    	int i = 0;
    	while (chuoi[i] != '\0')
    	{
    		if (isalpha(chuoi[i]))
    			del(chuoi, i, l);
    		i++;
    	}
    	cout << "sau khi xoa ta co: " << endl;
    	puts(chuoi);
    }
    void main()
    {
    	char chuoi[MAX];
    	int l;
    	nhapchuoi(chuoi, l);
    	xoakytukhongphaiso(chuoi, l);
    	getch();
    
    }
    - - - Nội dung đã được cập nhật ngày 26-05-2019 lúc 06:51 AM - - -

    int i = 0;
    while (chuoi[i] != '\0')
    thay bằng 2 vòng for thì oke
    for(int i=0; i<l;i++)
    {
    for (int j = 0; j <l; j++)
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    Đã được chỉnh sửa lần cuối bởi namnntt : 26-05-2019 lúc 06:58 AM.

  2. #2
    Ngày gia nhập
    12 2015
    Nơi ở
    Đà Nẵng
    Bài viết
    451

    Trích dẫn Nguyên bản được gửi bởi namnntt Xem bài viết
    Chào anh em mình có cái đoạn code như này mình gọi hàm del ký tự trong mảng ký tự đặt điều kiện là if (isalpha(chuoi[i])) rồi mà khi nhập vào 1 đoạn ký tự nó chỉ xóa 1 số ký tự chữ cái còn đâu nó không xóa hết
    Ví dụ nhé

    Help
    Code:
    #include <stdio.h>
    #include <iostream>
    #include <conio.h>
    #include<math.h>
    #include <string.h>
    #define getch _getch
    #define gets gets_s
    #define MAX 50
    #include <ctype.h>
    using namespace std;
    void nhapchuoi(char chuoi[], int &l)
    {
    	cout << "Nhap vao chuoi ky tu: " << endl;
    	gets(chuoi, MAX);
    	l = strlen(chuoi);
    
    }
    void del(char chuoi[], int p, int &l)
    {
    	for (int i = p; i < l; i++)
    	{
    		chuoi[i] = chuoi[i + 1];
    	}
    	l--;
    }
    void xoakytukhongphaiso(char chuoi[], int &l)
    {
    	int i = 0;
    	while (chuoi[i] != '\0')
    	{
    		if (isalpha(chuoi[i]))
    			del(chuoi, i, l);
    		i++;
    	}
    	cout << "sau khi xoa ta co: " << endl;
    	puts(chuoi);
    }
    void main()
    {
    	char chuoi[MAX];
    	int l;
    	nhapchuoi(chuoi, l);
    	xoakytukhongphaiso(chuoi, l);
    	getch();
    
    }
    - - - Nội dung đã được cập nhật ngày 26-05-2019 lúc 06:51 AM - - -



    thay bằng 2 vòng for thì oke
    Sửa lại như sau thử xem
    C++ Code:
    1. void xoakytukhongphaiso(char chuoi[], int &l)
    2. {
    3.     int i = 0;
    4.     while (chuoi[i] != '\0')
    5.     {
    6.         if (isalpha(chuoi[i]))
    7.             del(chuoi, i, l);
    8.                 else
    9.             i++;
    10.     }
    11.     cout << "sau khi xoa ta co: " << endl;
    12.     puts(chuoi);
    13. }

  3. #3
    Ngày gia nhập
    08 2017
    Bài viết
    3,344

    Ký tự (ASCII, ANSI) thường chia thành control characters và printable characters.
    Printable characters lại chia thành nhiều nhóm alphabet (A-Z, a-z: vowels, consonants), number (0-9), math symbols, quotes and parenthesis, ...

    xoakytukhongphaiso (xóa ký tự không phải là số) dùng hàm isalpha là chưa chính xác.
    Đã được chỉnh sửa lần cuối bởi Monre : 26-05-2019 lúc 10:09 PM.

  4. #4
    Ngày gia nhập
    05 2016
    Bài viết
    13

    Trích dẫn Nguyên bản được gửi bởi khoaph Xem bài viết
    Sửa lại như sau thử xem
    C++ Code:
    1. void xoakytukhongphaiso(char chuoi[], int &l)
    2. {
    3.     int i = 0;
    4.     while (chuoi[i] != '\0')
    5.     {
    6.         if (isalpha(chuoi[i]))
    7.             del(chuoi, i, l);
    8.                 else
    9.             i++;
    10.     }
    11.     cout << "sau khi xoa ta co: " << endl;
    12.     puts(chuoi);
    13. }
    Oke bác do mình đặt ĐK if chưa chặt :(
    Trích dẫn Nguyên bản được gửi bởi Monre Xem bài viết
    Ký tự (ASCII, ANSI) thường chia thành control characters và printable characters.
    Printable characters lại chia thành nhiều nhóm alphabet (A-Z, a-z: vowels, consonants), number (0-9), math symbols, quotes and parenthesis, ...

    xoakytukhongphaiso (xóa ký tự không phải là số) dùng hàm isalpha là chưa chính xác.
    Đúng rồi bác e cũng nghĩ thế bài tập chưa thật hoàn hảo(gặp mấy dấu @#(*@*#@( thì k xóa được) bác có cách nào khác k ạ :(

  5. #5
    Ngày gia nhập
    12 2015
    Nơi ở
    Đà Nẵng
    Bài viết
    451

    Trích dẫn Nguyên bản được gửi bởi namnntt Xem bài viết
    Oke bác do mình đặt ĐK if chưa chặt :(

    Đúng rồi bác e cũng nghĩ thế bài tập chưa thật hoàn hảo(gặp mấy dấu @#(*@*#@( thì k xóa được) bác có cách nào khác k ạ :(
    Nếu muốn xóa kí tự khác số thì thay isalpha thành !isdigit thôi.
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn