Code tham khảo:
#include
#include
void nhapChuoi(char chuoi[]){do{printf(“\nMoi ban nhap chuoi: “);gets(chuoi);}while(!(0}
void demSoTuTrongChuoi(char chuoi[]){int i;int soTu=0;for(i=0; i{if(chuoi[i]==’ ‘ && chuoi[i+1]!=’ ‘) ///vì trong phần điều kiện ta lấy ký tự i+1{///Nếu ký tự chỉ số i là dấu cách và ký tự chỉ số i+1 không phải dấu cách thì ta đếm được 1 từsoTu++;}}if(chuoi[0]!=’ ‘) ///Nếu ký tự đầu tiên của chuỗi{///không phải dấu cách thì ta cũng đếm được 1///từ nữa.soTu++;}printf(“\nChuoi \”%s\” co %d tu.”,chuoi,soTu);}
main(){char chuoi[30];nhapChuoi(chuoi);demSoTuTrongChuoi(chuoi);
return 0;}
Giải phóng thời gian, khai phóng năng lực
1. Đếm từ trong xâu bằng hàm strtok()
Đếm từ trong xâu sử dụng hàm strtok() khá ngắn gọn và tối ưu, nếu được sử dụng thì bạn nên dùng luôn hàm này.
Nếu bạn chưa biết hàm strtok() thì có thể tham khảo tại đây
Code :
#include “stdio.h” #include “ctype.h” #include “string.h” int main(){ char s[1000] = “28tech blog C programming !”; int dem = 0; char *token = strtok(s, ” “); while(token != NULL){ ++dem; token = strtok(NULL, ” “); } printf(“So luong tu trong xau : %d\n”, dem); return 0; }
Output :
So luong tu trong xau : 5
2. Đếm từ trong xâu không dùng hàm
Nếu không dùng hàm thì để đếm các từ trong xâu bạn sẽ sử dụng thuật toán như sau : Duyệt qua từng ký tự của xâu ký tự, nếu gặp ký tự khác dấu cách thì đây sẽ là 1 từ. Ta sẽ đếm từ này và bỏ qua các ký tự liên tiếp tính từ ký tự này tới hết các kí tự trong từ đó.
Lưu ý không được đếm dấu cách sau đó cộng thêm 1 để suy ra số lượng từ trong xâu, vì trong xâu có thể có nhiều dấu cách dư thừa.
Code :
#include “stdio.h” #include “ctype.h” #include “string.h” int count(char s[]){ int dem = 0, n = strlen(s); for(int i = 0; i < n; i++){ //Đây là 1 từ mới if(s[i] != ‘ ‘){ ++dem; //Bỏ qua từ đó while(i < n && s[i] != ‘ ‘){ ++i; } } } return dem; } int main(){ char s[1000] = “28tech blog C programming ! “; printf(“So luong tu trong xau : %d\n”, count(s)); return 0; }
Output :
So luong tu trong xau : 5
Khi bạn cần đếm số ký tự trong ô, hãy dùng hàm LEN—để đếm chữ cái, số, ký tự và tất cả các khoảng trắng. Ví dụ, độ dài “Hôm nay là 98 độ, vì vậy tôi sẽ đi bơi” (không bao gồm dấu ngoặc kép) là 42 ký tự—31 chữ cái, 2 số, 8 dấu cách, một dấu phẩy và 2 dấu nháy đơn.
Để sử dụng hàm, hãy nhập =LEN(ô) vào thanh công thức, rồi nhấn Enter trên bàn phím của bạn.
Nhiều ô: Để áp dụng cùng một công thức cho nhiều ô, hãy nhập công thức vào ô đầu tiên, rồi kéo điều khiển điền xuống (hoặc qua) phạm vi ô.
Để có được tổng số lượng tất cả các ký tự trong một vài ô là sử dụng hàm SUM cùng với hàm LEN. Trong ví dụ này, hàm LEN đếm các ký tự trong mỗi ô và hàm SUM thêm số lượng:
=SUM((LEN( cell1 ),LEN( cell2 ),(LEN( cell3 )) )).
Lời giải
Thuật toán:
- Nếu chuỗi đã cho input = null thì trả về -1. Kết thúc tại đây.
- Ngược lại, duyệt từ phần tử đầu tiên đến phần tử cuối cùng của chuỗi.
- Nếu ký tự hiện tại là ký tự chữ (ký tự khác space và tab và xuống dòng) thì ta tìm được một từ. Và đánh dấu từ đó đã được đếm (notCounted = false;). Đến khi gặp ký tự space hoặc tab hoặc xuống dòng thì đánh dấu từ đó đã đếm xong (notCounted = true;) để đếm từ tiếp theo.
Các bạn xin hãy lưu ý: một bài toán có hàng trăm nghìn cách giải, ngoài cách này ra các bạn có thể tự nghĩ cho mình những cách giải khác hoặc tìm trên google!
File: StringExample1.java
package vn.viettuts.baitap; /** * Chương trình đếm số từ của một chuỗi trong java * * @author viettuts.vn */ public class StringExample1 { public static final char SPACE = ‘ ‘; public static final char TAB = ‘\t’; public static final char BREAK_LINE = ‘\n’; /** * main * * @param args */ public static void main(String[] args) { String str = “hoc java co ban den nang cao” + ” \n test”; System.out.print(“Số từ của chuỗi đã cho là: ” + countWords(str)); } /** * Đếm số từ của một chuỗi, * giả sử các từ được ngăn cách nhau bởi một hoặc nhiều * dấu ‘space’, tab ‘\t’ và xuống dòng ‘\n’ * * @param input – chuỗi ký tự * @return số từ của chuỗi ký tự input */ public static int countWords(String input) { if (input == null) { return -1; } int count = 0; int size = input.length(); boolean notCounted = true; for (int i = 0; i < size; i++) { if (input.charAt(i) != SPACE && input.charAt(i) != TAB && input.charAt(i) != BREAK_LINE) { if(notCounted) { count++; notCounted = false; } } else { notCounted = true; } } return count; } }
Kết quả:
Số từ của chuỗi đã cho là: 8
Đề bài: Viết chương trình đếm số từ trong một chuỗi trong Java. Mỗi từ cách nhau bởi một khoảng trắng (tab, space, …) Ví dụ ” hoc java co ban den nang cao ” có 7 từ.
Thuật toán:
Các bạn xin hãy lưu ý: một bài toán có hàng trăm nghìn cách giải, ngoài cách này ra các bạn có thể tự nghĩ cho mình những cách giải khác hoặc tìm trên google!
File: StringExample1.java
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
Kết quả:
Số từ của chuỗi đã cho là: 8
Nguồn tin: viettuts
Đếm số từ và ký tự trong C++
Bạn hãy thử đi
Dưới đây là một số ví dụ minh họa cách sử dụng hàm LEN.
Sao chép bảng bên dưới và dán vào ô A1 trong trang tính Excel. Kéo công thức từ B2 đến B4 để xem độ dài của văn bản trong tất cả các ô trong cột A.
Chuỗi Văn bản |
Công thức |
Cáo nâu nhanh chóng. |
=LEN(A2) |
Cáo nâu nhanh chóng đã nhảy. |
|
Cáo nâu nhanh chóng nhảy qua con chó lười biếng. |
Đếm ký tự trong một ô
-
Bấm ô B2.
-
Nhập =LEN(A2).
Công thức này đếm các ký tự trong ô A2, tổng cộng là 27—bao gồm tất cả khoảng trắng và dấu chấm ở cuối câu.LƯU Ý: Hàm LEN đếm bất kỳ khoảng trắng nào sau ký tự cuối cùng.
Đếm ký tự trong nhiều ô
-
Bấm ô B2.
-
Nhấn Ctrl+C để sao chép ô B2, sau đó chọn các ô B3 và B4, rồi nhấn Ctrl+V để dán công thức vào các ô B3:B4.
Thao tác này sẽ sao chép công thức vào các ô B3 và B4 và hàm đếm các ký tự trong mỗi ô (20, 27 và 45).
Đếm tổng số ký tự
-
Trong sổ làm việc mẫu, hãy bấm ô B6.
-
Trong ô, nhập =SUM(LEN(A2),LEN(A3),LEN(A4)), rồi nhấn Enter.
Hàm này đếm số ký tự trong mỗi ô trong ba ô và tính tổng chúng (92).
Nội dung chính
Lời giải
Dưới đây là chương trình C++ để giải bài tập trên. Bạn sử dụng vòng lặp WHILE để đếm số từ và ký tự trong câu, sau đó sử dụng lệnh count để in kết quả.
#include
#include
using namespace std; int main() { int demkytu=0; int demtu=1; cout << “Ban nhap mot cau gom cac chu thuong: ” << endl; char ch=’a’; while(ch!=’\r’) { ch=getch(); if(ch==’ ‘) demtu++; else demkytu++; } cout << “\n So tu trong cau la = ” << demtu << endl; cout << “\nSo ky tu trong cau la = ” << demkytu-1 << endl; return 0; }
Chạy chương trình C++ trên sẽ cho kết quả như hình sau:
Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng….miễn phí. Tải ngay ứng dụng trên Android và iOS.
Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.
Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack
Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile…. mới nhất của chúng tôi.
Bài học Bài tập C++ phổ biến tại vietjack.com:
- Information
- AI Chat
Tổng hợp code C về String
Đếm số kí tự số trong xâu nhập từ bàn phím.
#include
#include
#include
int demktso(char s[]) { int i,dem=0; for (i=0;i
=’0′ && s[i]<=’9′ ) dem++; return dem; } void main() { char s[100]; gets(s); printf(“so ki tu so la : %d”,demktso(s)); getch(); }
Đếm số kí tự hoa trong xâu nhập từ bàn phím
#include
#include
#include
int demkthoa(char s[]) { int i,dem=0; for (i=0;i
=’A’ && s[i]<=’Z’ ) dem++; return dem; } void main() { char s[100]; gets(s); printf(“so ki tu hoa la : %d”,demkthoa(s)); getch(); }
Đếm số kí tự thường trong xâu nhập từ bàn
phím.
#include
#include
#include
int demktthuong(char s[]) { int i,dem=0; for (i=0;i
=’a’ && s[i]<=’z’ ) dem++; return dem; } void main() { char s[100]; gets(s); printf(“so ki tu thuong la : %d”,demktthuong(s)); getch(); }
Đếm các số tự nhiên trong xâu nhập từ bàn
Các kí tự số gần nhau ghép thành 1 số
tự nhiên.
Ví dụ: a123bc4d56ef cho ra đáp án là : 3
#include
#include
#include
void main() { char s[100]; int i=0,j,dem=0; gets(s); while (i<=strlen(s)) { j=0; while ( s[i]>=’0′ && s[i]<=’9′ ) { i++; j++; } i++; if (j!=0) dem++; } printf(“%d”,dem); getch(); }
Tính độ dài của một chuỗi C
#include
int main() { char s[] = “Ch ương trinh đang ch y”; ạ
#include
#include
#include
int main() { char xau[50]; printf(“Nhap vao mot chuoi: “); gets(xau); int a=strlen(xau)-1; for(int i=strlen(xau)-1;i>=0;i–) { if(xau[i]==32 || i==0) { if(i==0) { printf(” “); } for(int j=i;j<=a;j++) { printf(“%c”,xau[j]); } a=i-1; } } getch(); }
Nhập vào họ và tên tách ra họ, tên;
Ví dụ Nhập vào tran van thoa xuất ra tran thoa
#include
#include
#include
int main() { char xau[30]; printf(“Nhap vao mot chuoi: “); gets(xau); for(int i=0;i
=i;j–) { if(xau[j]==32) { for(int k=j;k<=strlen(xau)-1;k++) printf(“%c”,xau[k]); break; }
break; } } getch(); }
Nhập vào họ và tên xuất ra họ, tên đệm, tên
mỗi từ 1 dòng;
VD Nhập vào tran van thoa xuất ra tran van thoa
#include
#include
#include
int main() { char xau[30]; printf(“Nhap vao mot chuoi: “); gets(xau); for(int i=0;i<=strlen(xau)-1;i++) { if(xau[i]!=32) { printf(“%c”,xau[i]); } else { printf(“\n”); } } getch(); }
Nhập vào 1 dãy số và đọc dãy số đó
Ví dụ: 123 đọc là một trăm hai mươi ba
#include
#include
#include
char doc_so[50]; char *docso(int n) { char doc[10][5]={“”,”Mot”,”Hai”,”Ba”,”Bon”,”Nam”,”Sau”,”Bay”,”Tam”,”Chin”}; doc_so[0]=0; int donvi=n%10; n=n/10; int chuc=n%10; int tram=n/10; if(tram>0) { strcat(doc_so,doc[tram]);
trên hay không, nếu có thì xuất hiện bao
nhiêu lần.
Ví dụ Nhập vào tran vanNhập kí tự t –> có 2 lần
#include
#include
#include
int main() { char xau[50]; char kitukiemtra; int dem; printf(“Nhap vao mot chuoi: “); gets(xau); printf(“Nhap vao ki tu muon kiem tra: “); scanf(“%c”,&kitukiemtra); for(int i=0;i
Phân tích bài toán:
Giả sử ta có chuỗi “Dang Tran Long “, thì chuỗi này gồm 3 từ Dang, Tran và Long, không cần biết giữa các từ có bao nhiêu dấu cách, cũng không cần quan tâm phía đầu hay phía cuối chuỗi có dấu cách hay không. Làm thế nào để biết được đó là một từ trong chuỗi, ta có thể có được điều như sau:
Nếu phát hiện thấy có ký tự dấu cách (space) và ngay sau đó là ký tự khác dấu cách thì đó là dấu hiệu của 1 từ.
Ở chuỗi “Dang Tran Long ” ta phát hiện thấy có 2 dấu hiệu của từ là ” T” và ” L” thì ta có được 2 từ, còn từ “Dang” thì không tuân theo dấu hiệu này.
Như vậy, ta có thuật toán là: Nếu ký tự nào đó là dấu cách và ngay sau nó là ký tự khác dấu cách thì ta đếm được 1 từ. Trường hợp ký tự đầu tiên của chuỗi không phải là dấu cách (chữ D ở chuỗi trên) thì ta đếm thêm 1 từ nữa.
University: Trường Đại học Trà Vinh
Students also viewed
Related documents
- Dap án gap filling – sadasd
- Cnxh cuoois kif – tóm tắt
- Han 2 TV – what is your name? My name is ABC
- Chương III: Đảng lãnh đạo cuộc kháng chiến chống thực dân Pháp và can thiệp Mỹ (1945-1954). Chương IV: Đảng lãnh đạo cách mạng xã hội chủ nghĩa ở miền Bắc và kháng chiến chống Mỹ, cứu nước (1954-1975
- Danh sách sinh viên lớp học phầnsa.,c ,zs.mcsmc. á .,c
- 1 tran thi thu hien chinh thuc 2868
Preview text
BàiĐếm số từ trong chuỗi C/C++
Tiếp tục là các bài tập giúp các bạn luyện tập kiến thức về chuỗi và xử lý chuỗi trong C. Hôm nay chúng ta cùng nhau đi giải quyết 1 bài tập về xử lý chuỗi: đếm số từ trong chuỗi nhập từ bàn phím sử dụng C/C++. Đồng thời, chúng ta cũng sẽ giải quyết bài toán chuẩn hóa chuỗi luôn nhé.
NỘI DUNG BÀI VIẾT
Bài tập đếm số từ trong chuỗi
- Nhập vào một chuỗi từ bàn phím
- Đếm số từ có trong chuỗi vừa nhập
- Xóa bỏ khoảng trắng ở đầu, giữa và cuối chuỗi
- Viết hoa chữ cái đầu tiên, các chữ cái còn lại viết thường
- In ra số từ và xâu sau khi chuẩn hóa
Input:
Nhap chuoi: LAP trINH khong KHO!
Output:
So tu cua ” LAP trINH khong KHO!” la 4 Xau chuan hoa la: Lap trinh khong kho!
Cách đếm số từ trong chuỗi
Ý tưởng: Nếu ký tự hiện tại là dấu cách và ký tự tiếp theo không phải dấu cách thì ta coi đó là bắt đầu của 1 từ.
Lưu ý: Có thể từ đầu tiên không bắt đầu bằng dấu cách.
int WordCount(char str[], int length) { int word = (str[0] != ‘ ‘); for (int i = 0; i < length – 1; i++) { if (str[i] == ‘ ‘ && str[i + 1] != ‘ ‘) { word++; } } return word; }
Chuẩn hóa chuỗi trong C
Ý tưởng chuẩn hóa chuỗi trong C như sau:
- Bỏ các ký tự khoảng trắng thừa ở đầu chuỗi
- Bỏ các ký tự khoảng trắng thừa ở cuối chuỗi
- Viết hoa chữ cái đầu tiên của chuỗi
- Bỏ qua các khoảng trắng thừa ở giữa
- Đưa tất cả về lowercase
- Viết hoa chữ cái bắt đầu từ theo ý tưởng đếm từ phía trên
void Correct(char str[], int length) { int first = 0, last = length – 1; // Xóa dấu trắng đầu chuỗi while (first < last && str[first] == ‘ ‘) first++; // Xóa dấu trắng cuối chuỗi while (last > first && str[last] == ‘ ‘) last–; // Viết hoa chữ cái đầu tiên if (str[first] >= ‘a’ && str[first] <= ‘z’) str[first] -= 32; for (int i = first + 1; i <= last; i++) { // Đưa hết về chữ thường if (str[i] >= ‘A’ && str[i] <= ‘Z’){ str[i] += 32; } if (i + 1 <= last) { // Bỏ dấu trắng thừa ở giữa if (str[i] == str[i + 1] && str[i] == ‘ ‘) { continue; } // Nếu là chữ cái đầu mỗi từ thì viết hoa if (str[i] == ‘ ‘ && str[i + 1] >= ‘a’ && str[i + 1] <= ‘z’) { str[i + 1] -= 32; } } printf(“%c”, str[i]); } }
Lời giải chuẩn hóa chuỗi và đếm số từ trong C
#include
#include
int WordCount(char str[], int length) { int word = (str[0] != ‘ ‘); for (int i = 0; i < length – 1; i++) { if (str[i] == ‘ ‘ && str[i + 1] != ‘ ‘) { word++; } } return word; } void Correct(char str[], int length) { int first = 0, last = length – 1; // Xóa dấu trắng đầu chuỗi while (first < last && str[first] == ‘ ‘) first++; // Xóa dấu trắng cuối chuỗi while (last > first && str[last] == ‘ ‘) last–; // Viết hoa chữ cái đầu tiên if (str[first] >= ‘a’ && str[first] <= ‘z’) str[first] -= 32; for (int i = first + 1; i <= last; i++) { // Đưa hết về chữ thường if (str[i] >= ‘A’ && str[i] <= ‘Z’){ str[i] += 32; } if (i + 1 <= last) { // Bỏ dấu trắng thừa ở giữa if (str[i] == str[i + 1] && str[i] == ‘ ‘) { continue; } // Nếu là chữ cái đầu mỗi từ thì viết hoa if (str[i] == ‘ ‘ && str[i + 1] >= ‘a’ && str[i + 1] <= ‘z’) { str[i + 1] -= 32; } } printf(“%c”, str[i]); } } int main() { char str[100]; // Nhập chuỗi printf(“\nNhap chuoi: “); fgets(str, sizeof str, stdin); // Do sử dụng fgets nên chuỗi của chúng ta sẽ đọc cả ký tự ‘\n’. // Xóa bỏ nó đi. int length = strlen(str) – 1; str[length] = ‘\0’; printf(“So tu cua \”%s\” la %d”, str, WordCount(str, length)); printf(“\nXau chuan hoa la: “); Correct(str, length); }
Kết quả chạy thử:
PS G:\c_cources\day_61> g++ .\ChuanHoa.cpp -o .\ChuanHoa PS G:\c_cources\day_61> .\ChuanHoa.exe Nhap chuoi: LAP trINH khong KHO! So tu cua ” LAP trINH khong KHO!” la 4 Xau chuan hoa la: Lap trinh khong kho
Theo dõi lập trình không khó tại:
Lập trình C: Đếm số từ trong chuỗi
Giải phóng thời gian, khai phóng năng lực
Keywords searched by users: đếm số từ trong chuỗi
Categories: Khám phá 28 Đếm Số Từ Trong Chuỗi
See more here: kientrucannam.vn
See more: https://kientrucannam.vn/vn/