-
22-11-2010, 08:21 AM #1Silver member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
code cắt bỏ space thừa trong chuỗi. ko hiện thị kết quả và ko hiện thị lỗi
Đề Bài: Nhập vào 1 câu tiềng việt bất kì sai dấu “cách”(space) in ra màn hình câu chuẩn:
1: cắt bớt dấu “cách”(space) ở đầu câu.
2: xóa dấn cách(space) thừa ở giữa các từ.
3: thêm dấu “ . ” ở cuối câu.
4: xóa dấu cách(space) trước dấu chấm “.”
5:nhập nhiều câu tương tự như đề bài
Mã:#include <stdio.h> #include <conio.h> #include <string.h> #include <ctype.h> #include <iostream.h> #include <alloc.h> char s[100],s1[100]; int i,j; void nhap() { cout<<"nhap xau : ";gets(s); for (i = 0 ; i < strlen(s) ; i++) s1[i]=' '; } void xuly() { i = 0 ;int kt = 1, ok = 0, dd = 0 ; j = 1 ; while ( i < strlen(s) ) { while (s[i] == ' ') i++ ; while (s[i] != ' ') { ok = 0 ; if (i == strlen(s)) break; if (((s[i]==',') || (s[i]=='?') || (s[i]==':') || (s[i]==';') || (s[i]=='(') || (s[i]==')')) && (ok == 0)) { s1[j] = s[i] ; j++ ; s1[j] = ' '; i++ ; j++ ; ok =1; dd= 1; } if ((s[i] == '.') && (ok == 0)) { s1[j] = s[i] ; j++ ; s1[j] = ' '; i++ ; j++ ;kt = 1 ; ok = 1 ; } if (((kt == 1) || (s1[j-1] == ' ') || (j==1)) && (ok == 0) && (dd==0)) { s1[j]=toupper(s[i]); i++ ; j++ ; kt = 0 ; ok = 1 ; } if (ok == 0) { s1[j] = tolower(s[i]); i++; j++;ok = 1;dd=0; } } if ((s[i] == ' ') && (s1[j-1] !=' ')) { s1[j] = ' '; i++; j++; } } } void main() { clrscr(); nhap(); xuly(); cout <<"Xau sau khi chuan hoa : "; puts(s1); getch(); }
View more random threads:
- Tại Sao sử dụng C++
- help về tạo hình di động
- cho mình xin lưu đồ hình ảnh minh họa về danh sách liên kết bao gồm: tạo DSLK, thêm 1 phần tử, xóa 1 phần tử
- devc++ co đồ họa không?
- Mảng trong C++
- bài tam giác hình sao bằng C? Giúp mình giải
- Lỗi khi truyền biến vào hàm.
- Bộ nhớ HEAP có dung lượng bao nhiêu Mb ?
- struct quản lý sinh vien sai chổ nào?
- [ Solved ]Hàm bạn
-
22-11-2010, 09:59 AM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
mình cũng mới học thôi , nên xin sửa lại toàn code của bạn ,để bạn tham khảo thôi
Code mình thỏa toàn bộ yêu cầu đề bài
Mã:#include <stdio.h> #include <conio.h> #include <string.h> char string[225]; void Xu_ly(char *s) { int n=strlen(s); for(int i=0;i<n;i++) { if(s[i]==' '&&s[i+1]==' ') //Su ly 2 dau space lien tiep { for(int j=i;j<n;j++) { s[j]=s[j+1]; } } if(s[i]==' '&&s[i+1]=='.') //Su ly dau space va dau . lien tiep { for(int j=i;j<n;j++) { s[j]=s[j+1]; } } } if(s[0]==' ') //Su ly dau space dau dong { for(int i=0;i<n;i++) { s[i]=s[i+1]; } } int k=strlen(s);// Lay lai do dai cua string sau khi xu ly s[k]='.'; //Doi gia tri NULL cua cai cuoi thanh ki tu . s[k+1]='\0'; } void main() { printf("Nhap chuoi:"); gets(string); Xu_ly(string); printf("Chuoi sau khi chinh sua:%s",string); getch(); }
-
19-02-2012, 09:51 AM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mình chỉnh lại, chỉ cần duyệt qua 1 lần là xong. Giảm thời gian nhưng cần thêm bộ nhớ vì dùng biến tạm
Mã:#include <stdio.h>#include <conio.h>#include <string.h> void chuanHoa(char *s){ int n=strlen(s); int i=0; int j=0; char *str=new char[n]; while(s[i]==' ') i++; //bo dau cach dau dong for( ; i < n ; i++) { if(s[i]!=' '||(s[i]==' '&&s[i+1]!=' '&&s[i+1]!='.')) //chuan hoa { str[j++]=s[i]; } } str[j]='.'; //them dau '.' cuoi dong str[j+1]='\0'; //ki tu ket thuc chuoi strcpy(s,str); delete(str);}void main(){ clrscr(); char string[255]; printf("Nhap chuoi: "); gets(string); chuanHoa(string); printf("Chuoi sau khi chinh sua: %s",string); getch();}
-
19-02-2012, 06:49 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi One_Two_Three
Không chỉ dừng lại ở việc sử dụng nguyên liệu cao cấp, mỗi công trình còn được "chăm sóc" bằng 4 dịch vụ xuất sắc của Tre Nghệ. Từ việc tư vấn, thiết kế đến thi công và hoàn thiện, mọi quy trình đều...
Chất Lượng và Sáng Tạo: Kiến Trúc...