-
28-09-2010, 12:16 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Bài tập rút gọn xâu trong C. Giúp mình giải thuật với?
Mình đang làm 1 bài tập sau:
Cho 1 xâu ký tự gồm dãy các chữ số có 3 chữ số:
Input:
101,102,103,104,105,201,202,203,301,302,303,304,30 5,306,401,405,406,408
Output: Là xâu rút gọn của xâu đã cho
101-105,201,202,203,301-306,401,405,406,408.
Nếu dãy số liên tục gồm nhiều hơn 3 số thì đưa về dạng somin-somax.
Mình vẫn chưa tìm được hướng giải bài này. Các bạn có thể nêu ra giải thuật cho bài này, mình sẽ tự code lây. Các bạn giúp mình nhé. Xin cám ơn.[IMG]images/smilies/clap_grin.gif[/IMG]View more random threads:
- Khai báo kiểu "typedef enum_DIRS"?
- Cách xóa phần tử có giá trị k xuất hiện đầu tiên trong mảng
- bắt sự kiện click chuột trong chế độ độ họa ?
- lỗi khi làm việc với tệp trong bài đa thức
- cho e xin link tải tubo c cho win 8 32bit nha,e xin cảm ơn
- Hiệu chỉnh file văn bản
- Chuỗi định dạng của biến??
- HELP bài thi đồ họa ai giúp dùm với
- Mình cần giúp về chương trình hệ thống quản lý tiền lương (Payroll Management System)
- Lỗi khi khai báo union REGS
-
28-09-2010, 01:01 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mã:#include<stdio.h>#include<conio.h> int main(){ int a[18]={101,102,103,104,105,201,202,203,301,302,303,304,305,306,401,405,406,408}; for ( int i=0;i<18;i++) { if(a[i+1]==a[i]+1&&a[i+2]==a[i]+2&&a[i+3]==a[i]+3) { printf("%d",a[i]); while(a[i+1]==a[i]+1) { i++; } printf("-%d,",a[i]); } else { printf("%d,",a[i]); } } getch(); return 0;}
-
28-09-2010, 03:06 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi svcntt
-
28-09-2010, 04:16 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
chị cafe không đọc kĩ đề rùi . Đây là 1 xâu mà
-
28-09-2010, 05:03 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
hơi ời ơi [IMG]images/smilies/biggrin.png[/IMG] , thì thêm hàm biến từ xâu sang số thôi [IMG]images/smilies/biggrin.png[/IMG]
Mã:#include<stdio.h>#include<conio.h>#include<string.h>int main(){ int t,j=1,n=18,a[90]; char s[90]="101,102,103,104,105,201,202,203,301,302,303,304,305,306,401,405,406,408"; for(int i=0;i<strlen(s);i++) { t=0; while(s[i]!=',') { int k=0; k=s[i]-48; t=t*10+k; if(s[i+1]==','||s[i+1]=='\0') a[j++]=t; i++; } } for(int i=1;i<=n;i++) printf("%4d",a[i]); printf(" "); puts (s); getch(); return 0;}
-
29-09-2010, 04:47 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Code trên xâu lun nè, đọc file cho tiện
Mã:long getfilesize (FILE *f) { long size ; long oldpos = ftell (f) ; fseek (f, 0, SEEK_END) ; size = ftell (f) ; fseek (f, oldpos, SEEK_SET) ; return size;} //------------------------------------------------------------------------ char* readfile (char const * filename, char const * openmode) { char *buf ; int size ; FILE *f = fopen (filename, openmode) ; if (!f) return NULL ; buf = (char*) malloc ((size = getfilesize (f)) * sizeof(char)) ; if (!buf) return NULL ; fgets (buf, size, f) ; fclose (f) ; return buf ;} ////////////////////////////////////////////////////////////////////////////////////// int main () { char const * delim = ", " ; char *p ; int v1, v2, _tmp ; char *s = readfile ("numberstring.txt") ; if (s) { p = strtok (s, delim) ; if (p) { v1 = v2 = atoi (p) ; printf (" %d", v1) ; while (p = strtok (NULL, delim)) { _tmp = atoi (p) ; if (_tmp == v2 + 1) v2++ ; else { if (v2 != v1) printf ("-%d", v2) ; printf (",%d", _tmp) ; v1 = v2 = _tmp ; } } } printf (" ") ; free (s) ; } return 0 ;}
Không chỉ là một biểu tượng của sự quyết tâm và lòng tự hào quốc gia, cột cờ inox ngoại trời còn là biểu tượng của sự chuyên nghiệp và đẳng cấp của một công ty hoặc tổ chức. Việc sử dụng chúng để...
Kiến trúc đẳng cấp với cột cờ inox...