bài giảng chuối và bài toán xử lý chuỗi lập trình

29 810 0
bài giảng chuối và bài toán xử lý chuỗi lập trình

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

bài viết trình bày các kiến thức như Trình bày được chuỗi là gì ,Trình bày được nguyên tắc kết thúc của chuỗi ,Áp dụng được các bài toán thường gặp trong xử lý chuỗi ,Đếm số ký tự trong chuỗi ,So sánh hai chuỗi Copy chuỗi ,Loại bỏ ký tự trong chuỗi,Phân rã chuỗi,hi vọng những kiến thức này sẽ trợ giúp bạn tốt cho học tập

www.hoasen.edu.vn Cng Đi hc Hoa Sen xây dng tương lai  Chuỗi (string) các bài toán xử chuỗi http://www.stellman-greene.com 1 www.hoasen.edu.vn Cng Đi hc Hoa Sen xây dng tương lai  Người học sẽ đạt được  Trình bày được chuỗi là gì  Trình bày được nguyên tắc kết thúc của chuỗi  Áp dụng được các bài toán thường gặp trong xử chuỗi:  Đếm số ký tự trong chuỗi  So sánh 2 chuỗi  Copy chuỗi  Loại bỏ ký tự trong chuỗi  Phân rã chuỗi 2 www.hoasen.edu.vn Cng Đi hc Hoa Sen xây dng tương lai  Khái niệm về Chuỗi Khái niệm về Chuỗi  Là mảng một chiều của các ký t (loi char)  Ví dụ: char hoten[20] = “Nguyen Thi A”; char ngaysinh[20] = “20/03/1992”;  Ký t trong chuỗi được truy cập như là phần tử của mảng Hoten[0] = ‘N’; Hoten[1] = ‘g’; Hoten[11] = ‘A’; ngaysinh[0] = ‘2’; ngaysinh[2] = ‘/’; 3 www.hoasen.edu.vn Cng Đi hc Hoa Sen xây dng tương lai  Nguyên Tắc Kết Thúc Chuỗi Nguyên Tắc Kết Thúc Chuỗi  Theo quy ước, chuỗi được kết thúc bằng ký t null hay ‘\0’  Ví dụ: s[] = “abc”; → s[0] = ‘a’; s[1] = ‘b’; s[2] = ‘c’; s[3] = ‘\0’; → mảng s[] có 4 ký tự  ký t ‘\0’ thường được dng để phát hiện s kết thúc của chuỗi  Lưu ý: ‘a’ “a” hoàn toàn khác nhau ‘a’ là 1 ký tự “a” là 1 chuỗi có 2 ký tự ‘a’ ‘\0’ 4 www.hoasen.edu.vn Cng Đi hc Hoa Sen xây dng tương lai  5 Giả sử khai báo: char S[80];  Nhập chuỗi scanf(“%s”,&S); hoặc gets(S);  Xuất chuỗi printf(S); printf(“%s”,S); puts(S); • Hàm scanf không nhập chuỗi có khoảng trắng được • Để nhập chuỗi có khoảng trắng ta dùng hàm gets • Nếu vùng đệm keyboard có dữ liệu thì dữ liệu sẽ chuyển vào biến. • Để nhập một chuỗi mới chúng ta phải xoá bộ đệm keyboard bằng hàm fflush(stdin) Nhập/xuất chuỗi Nhập/xuất chuỗi www.hoasen.edu.vn Cng Đi hc Hoa Sen xây dng tương lai  6 #include<stdio.h> #include<conio.h> void main() { clrscr(); char S[20]; printf("Nhap chuoi bang ham scanf "); scanf("%s", &S); printf("\nChuoi vua nhap: %s", S); printf("\nNhap chuoi bang ham gets"); gets(S); printf("\nChuoi vua nhap:"); puts(S); getch(); } Nhập/xuất chuỗi Nhập/xuất chuỗi puts(S) tương đương với printf(“%s\n”,S) www.hoasen.edu.vn Cng Đi hc Hoa Sen xây dng tương lai  7  Chuỗi là một mảng các ký t. Vì thế chúng ta có thể truy xuất vào phần tử ký t của nó bằng chỉ số. #include<stdio.h> #include<conio.h> #include<ctype.h> void main() { clrscr(); char S[20]; printf("Nhap chuoi: "); gets(S); int i=0; while(S[i]!=NULL) { S[i] = toupper(S[i]); i++; } printf("Chuoi vua nhap duoc viet hoa:"); puts(S); getch(); } Nhập 1 chuỗi rồi đổi chuỗi đó ra chữ hoa Truy xuất từng ký tự của chuỗi Truy xuất từng ký tự của chuỗi www.hoasen.edu.vn Cng Đi hc Hoa Sen xây dng tương lai  8  strlen(s) Cho biết độ dài của chuỗi s Ví dụ : n = strlen(“abcd”)  n = 4  strcmp(s1, s2) So sánh chuỗi s1 với s2. Ví dụ : n = strcmp(s1, s2); Nếu n > 0 thì s1 > s2 Nếu n = 0 thì s1 = s2 Nếu n < 0 thì s1 < s2 (So sánh dựa vào bảng mã ASCII) Một số hàm về chuỗi Một số hàm về chuỗi www.hoasen.edu.vn Cng Đi hc Hoa Sen xây dng tương lai  9  strcpy(đích, nguồn) Chép chuỗi nguồn vào chuỗi đích (gán chuỗi) Ví dụ : strcpy(ten, “Nguyen Van A”);  ten = Nguyen Van A  strcat(s1, s2) Nối chuỗi s2 vào sau s1. Ví dụ : s1 = “abcde”; s2 = ”ghk” strcat(s1, s2) ;  s1=abcdeghk Một số hàm về chuỗi Một số hàm về chuỗi www.hoasen.edu.vn Cng Đi hc Hoa Sen xây dng tương lai  10  toupper(ch) Đổi ký tự ch thành chữ hoa  isupper(ch) Kiểm tra ký tự ch có phải là chữ hoa không  tolower(ch) Đổi ký tự ch thành chữ thường  islower(ch) Kiểm tra ký tự ch có phải là chữ thường không Một số hàm về chuỗi Một số hàm về chuỗi [...]...www.hoasen.edu.vn VD 1: truy cập ký tự trong chuỗiBài toán: nhập tên xuất tên in ngược BEGIN Input: chuỗi tên Output: chuỗi tên in ngược 1 Nhập chuỗi 2 Xử chuỗi: Loại bỏ ký tự ‘\n’ ‘\0’ khi nhập chuỗi Copy chuỗi theo thứ ngược Thêm ‘\0’ vào cuối chuỗi 3 Xuất chuỗi END  Cùng Đại học Hoa Sen xây dựng tương lai 11 www.hoasen.edu.vn VD 1: truy cập ký tự trong chuỗi #include #include ... (loại char) Xử chuỗi giống như xử mảng dữ liệu 1 chiều Chỉ 1 điều khác biệt:  Chuỗi kết thúc với ‘\0’ hay NULL   Quy các bài toán xử chuổi về các bài toán nhỏ nêu ra trong các ví dụ Cùng Đại học Hoa Sen xây dựng tương lai 28 www.hoasen.edu.vn Bài tập điểm cộng về nhà 1 2 3 4 5 6 7  Viết chương trình nhập họ tên của một người rồi in ra màn hình Viết chương trình nhập vào một chuỗi, rồi... input.txt, khachhang.txt nhập dữ liệu vào mảng 1.3 Loại bỏ các khoảng trắng của tên 1.3.1 xóa khoảng trắng khúc đầu của chuỗi 1.3.2 xóa khoảng trắng khúc cuối của chuỗi 1.3.3 thay khoảng trắng giữa các từ bằng 1 ' ' So sánh tên Cho mỗi tên IP trong input.txt Cho mỗi tên KH trong khachhang.txt So sánh tên IP tên KH » Nếu giống nhau thì xuất tất cả thông tin KH » Còn không xử tiếp  Cùng Đại... www.hoasen.edu.vn VD 2: So sánh chuỗiBài toán: tương tự chức năng C43 course work Yêu cầu: Liệt kê tất cả thông tin của khách hàng có tên trong file input.txt Input : khachhang.txt, input.txt input.txt chứa các chuỗi ký tự là HoTenKH Output: output.txt  Cùng Đại học Hoa Sen xây dựng tương lai 14 www.hoasen.edu.vn VD 2: So sánh chuỗi Giải thuật: 1 – Đọc dữ liệu từ file nhập vào mảng 1.1 Mở file input.txt,... trình nhập họ tên của một người rồi in ra màn hình Viết chương trình nhập vào một chuỗi, rồi in các ký tự của chuỗi ra màn hình (mỗi ký tự là 1 hàng) Viết chương trình nhập một chuỗi, hãy cho biết chuỗi đó có tất cả bao nhiêu ký tự, số ký tự khoảng trắng Nhập vào một chuỗi, hãy in ngược chuỗi đã nhập Nhập họ tên sinh viên rồi in ra tên viết tắt của sinh viên đó Ví dụ nhập : Nguyen Thi Lan Anh ... { int i, j; char name[MAXSTR], opname[MAXSTR]; // 1 nhập chuỗi printf("\nHi! What is your name: "); gets(&name); // 2 xử chuỗi: copy ngược các ký tự for(j=0, i=strlen(name)-1; i>=0; i , j++ ) opname[j] = name[i]; opname[j] = '\0‘;  Cùng Đại học Hoa Sen xây dựng tương lai 12 www.hoasen.edu.vn VD 1: truy cập ký tự trong chuỗi // 3 Xuất chuỗi printf("Hello, %s Nice to meet you!\n", name); printf("Your... work Yêu cầu: so sánh tuổi của 2 ngày sinh lưu dạng chuỗi Input : hai ngày sinh Output: xuất theo tuổi tăng dần  Giải thuật: 1.nhập 2 ngày sinh 2.phân rã chuỗi ngày sinh thành 3 chuỗi: ngày, tháng, năm 3.đổi các chuỗi thành số 4.so sánh 2 tuổi xuất theo tuổi tăng dần  Cùng Đại học Hoa Sen xây dựng tương lai 22 www.hoasen.edu.vn VD 3: phân rã chuỗi #include #include #include... 2: So sánh chuỗi // 1.3.3 thay khoang trang giua cac tu bang 1 ' ' for( i=0; i . S[20]; printf("Nhap chuoi bang ham scanf "); scanf("%s", &S); printf(" Chuoi vua nhap: %s", S); printf(" Nhap chuoi bang ham gets"); gets(S); printf(" Chuoi vua. main() { clrscr(); char S[20]; printf("Nhap chuoi: "); gets(S); int i=0; while(S[i]!=NULL) { S[i] = toupper(S[i]); i++; } printf(" ;Chuoi vua nhap duoc viet hoa:"); puts(S); getch(); } Nhập. khuc dau cua chuoi while( i < len && (s[i] == ' ’ || s[i] == ' ’ || s[i] == ' ') ) i++; strcpy(s,&s[i]); // 1.3.2 xoa khoang trang khuc cuoi cua chuoi len =

Ngày đăng: 17/06/2014, 15:04

Từ khóa liên quan

Mục lục

  • Chuỗi (string) và các bài toán xử lý chuỗi

  • Người học sẽ đạt được

  • Khái niệm về Chuỗi

  • Nguyên Tắc Kết Thúc Chuỗi

  • Nhập/xuất chuỗi

  • Slide 6

  • Truy xuất từng ký tự của chuỗi

  • Một số hàm về chuỗi

  • Slide 9

  • Slide 10

  • VD 1: truy cập ký tự trong chuỗi

  • Slide 12

  • Slide 13

  • VD 2: So sánh chuỗi

  • Slide 15

  • Slide 16

  • Slide 17

  • Slide 18

  • Slide 19

  • Slide 20

  • Slide 21

  • VD 3: phân rã chuỗi

  • Slide 23

  • Slide 24

  • Slide 25

  • Slide 26

  • Sắp Xếp Chuỗi

  • Kết luận

  • Bài tập điểm cộng về nhà

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan