Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 4 của 4
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Nhờ giúp đỡ bài tập về mảng char trong C++ gấp gấp

    mình có 1 đề bài thế này : viết một chương trình nén file với thuật toán đơn giản như sau: nhập vào 1 truỗi ví dụ AAAABBCDWWW thì nén lại thành truỗi 4A2BCD3W
    viết bằng C++ nhé, bác nào giúp mình phát, quen làm java có String rồi giờ cái này dùng char khi cho đưa số ví dụ 4A nó sẽ convert từ int sang char biến số 4 thành ký tự thứ 4 trong bảng mã ASI .
    Mã:
    #include <stdio.h>
    void main(){
    printf("Nhap truoi
    ");
    char *inSt=new char[];
    scanf("%s",inSt);
    
    int lenSt=0;
    for(int i=0;inSt[i]!='\0';i++){
    lenSt++;
    }
    long count=1;
    long index=0;
    
    for(int i=0;i<lenSt;i++){
    	if(inSt[i]==inSt[i+1]){
    	count++;
    	}else {
    		if(count>1){
    		inSt[index]=count;
    			index++;
    		inSt[index]=inSt[i-1];
    			index++;
    		}else{
    			inSt[index]=inSt[i];
    			index++;
    		}
    	}
    }
    inSt[index+1]='\0';
    
    printf("%s
    ",inSt);
    
    }

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    C++ có std::string đó. #include <string> vào rồi sử dụng như String trong Java thôi.

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi INTP
    C++ có std::string đó. #include <string> vào rồi sử dụng như String trong Java thôi.
    phải biết bằng mảng char bạn ạ.
    he he tìm mãi thấy ý tưởng của 1 bạn sử lý cái vụ bảng mã Asi mình code đc rồi
    Mã:
    #include <stdio.h>
    void main(){
    printf("Nhap truoi
    ");
    char *inSt=new char[];
    scanf("%s",inSt);
    
    int lenSt=0;
    for(int i=0;inSt[i]!='\0';i++){
    lenSt++;
    }
    long count=1;
    long index=0;
    
    for(int i=0;i<lenSt;i++){
    	if(inSt[i]==inSt[i+1]){
    	count++;
    	}else {
    		if(count>1){
    		inSt[index]=count+48;
    			index++;
    		inSt[index]=inSt[i-1];
    			index++;
    			count =1;
    		}else{
    			inSt[index]=inSt[i];
    			index++;
    		}
    	}
    }
    inSt[index]='\0';
    printf("%s
    ",inSt);
    }
    - - - Nội dung đã được cập nhật ngày 29-09-2014 lúc 10:48 AM - - -

    Mình vừa phát hiện đoạn code trên của mình nếu count lớn hơn 9 sẽ không thể +48 đc.ai khắc phục đoạn này giúp mình mới

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    sprintf là ngon nhất [IMG]images/smilies/biggrin.png[/IMG]
    Nhưng bạn thử suy nghĩ xem sao.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •