Ý tưởng về thực hiện việc nhập - xuất thông tin kiểu chuỗi (string)

Chào mọi người, em đang học C, đến hiện tại đã học qua :

  1. Các kiểu dữ liệu trong C
  2. Các thủ tục nhập xuất cơ bản
  3. Cấu trúc điều kiện if,if else, switch
  4. Cấu trúc lặp while, do while, for
  5. Hàm trong C ( chương trình con)
  6. Chuỗi , mảng 1 chiều , Struct

Em đang bí về ý tưởng cách thực hiện bài toán sau trong C , mong mọi người góp ý giúp hướng đi :

INPUT:
Nhập dòng thông tin gồm 5 chuỗi riêng biệt ( mỗi chuỗi có độ dài khác nhau ) được nhập nối tiếp nhau ,và có 3 cách nhập các chuỗi lần lượt theo các thứ tự định dạng sau:

ví dụ Cách nhập 1 : chuoi1chuoi2chuoi3chuoi4chuoi5
ví dụ Cách nhập 2 :chuoi1chuoi5chuoi2chuoi3chuoi4
ví dụ Cách nhập 3: chuoi1chuoi4chuoi3chuoi5chuoi2

OUTPUT:

Sẽ hiện ra mục khai thông tin từ 1 trong 3 cách nhập trên, mục khai này sẽ luôn có thứ tự như sau:

A. chuoi2
B. chuoi3
C. chuoi4
D. chuoi5

nếu input có yêu cầu chọn cách nhập thì bạn switch case để ngắt chuỗi theo từng cách nhập

Đề không có yêu cầu cách nhập ạ , input chỉ là nhập vào 5 chuỗi tùy ý miễn là thuộc 1 trong 3 cách nhập đã nêu, còn output la sắp xếp các chuỗi đã nhập đó theo thự A.chuoi2 , B.chuoi3 , C.chuoi4 , D.chuoi5 ạ
Nên em nghĩ là sẽ không dùng switch mà sẽ làm như sau : bắt đầu từ lúc nhập chuoi2 ,sau mỗi lần nhập ( hàm scanf ) , thì sẽ có 1 câu điều kiện ( if ) ,ta gán chuỗi đã nhập vào biến a được khai báo kiểu chuỗi, ta so sánh độ dài chuỗi a đó như sa : nếu độ dài chuỗi a = chuoi2/chuoi5/chuoi4 thì ứng với mỗi trường hợp sẽ là cách nhập 1/2/3. Tiếp tục làm vậy với các lần nhập các chuỗi còn lại.

  • Theo bạn mô tả thì tôi hiểu thế này: user sẽ chọn một trong 3 cách nhập có sẵn rồi sau đấy điền thông tin tương ứng vào. Nhiệm vụ của mình là tách lọc những thông tin đấy ra dựa trên cách mà user chọn.
  • Cái này có vẻ giống như nhập thông tin cá nhân (chuoi2 = tên, chuoi_3 = ngày sinh,... ) nhưng thứ tự thì không cố định.
  • Suy ra là user có thể chọn: cách 1( nhập tên trước, ngày sinh sau, … ), hoặc cách 2 (nhập địa chỉ trước, tên sau, …), hoặc cách 3 (nhập giới tính trước, ngày sinh sau, … )
  • Từ những thông tin trên tôi đề xuất thế này:
  • Vậy trước tiên cần xác định được user chọn cách nào.
  • Việc này là cần thiết vì chỉ khi biết cách nhập thì mình mới xác định được thứ tự, vị trí của từng chuoi_x
  • Giả sử user input được lưu vào một mảng char_input
  • Tiếp tục xác định được khi nào thì kết thúc một chuỗi?
  • Từ vị trí kết thúc chuỗi, tiến hành tách chuỗi ban đầu trong char_input thành các chuoi_x tương ứng.

Đề xuất của tôi dựa trên những gì tôi hiểu về bài tập này.

Sao bài này mơ hồ vậy nhỉ? Hay mình chưa hiểu ý nghĩa thực sự của đề?

  • Các chuỗi không có độ dài xác định và không bằng nhau.
  • Nhập liên tiếp nhau, không có phân cách.
  • Không biết trước nhập theo thứ tự gì.

Không xác định cấu trúc - không xác định độ lớn - không phân cách.
Chả có cách nào để xác định được.

3 Likes

Do em tóm tắt đề thiếu ạ
việc nhập vào chuỗi với 3 cách nhập trên thì mỗi chuoi1, chuoi2 … đều có độ dài khác nhau và có kiểu dữ liệu khác nhau , cụ thể là:
chuoi1 là dãy số gồm 11 số luôn không đổi ở cả 3 cách nhập
chuoi2 là 3 ký tự in hoa số 24 ký tự trong bảng chữ cái tiếng Anh
chuoi3 là dãy số tùy ý dài 13 số
chuoi4 gồm tối đa 30 ( có thể nhập ít hơn ) chữ cái in hoa hoặc thường trong bảng chữ cái
chuoi5 gồm 8 số đối với kiểu nhập 1,2 và gồm 6 số với kiểu nhập 3

Bạn nói rõ chỗ chuỗi 5 được không, 8 số kiểu 1 và 2 là nó có thể là số, có thể là kí tự in hoa à?
Bài này cần 1 đặc tả thật chi tiết thì mới có giải pháp, chứ nói tóm, gọn thì mông lung, chả biết đâu đúng, đâu sai.

3 Likes

nếu kiểm tra độ dài thì mình thấy bạn chỉ phân biệt được chuoi2 thôi, vì theo đề bài bạn bổ sung bên dưới thì chuoi4 nhập ít hơn 30 là được, nên khả năng để phân biệt chuoi4 chuoi5 thì khả năng phải kiểm tra chuỗi có tồn tại chữ hay không. Từ đó sẽ biết được cách nhập

Thì ra là bạn đang hỏi đến bài này: Dự án QR code môn nhập môn C (Thử sức cho anh em)

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?