Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Không hiểu vì sao chương trình sau lỗi

  1. #1
    Ngày gia nhập
    09 2012
    Bài viết
    7

    Mặc định Không hiểu vì sao chương trình sau lỗi

    Bài toán: Nhập vào chuỗi ký tự, không hiện ra màn hình, kết thúc khi nhập ký tự '.'
    Output: Số ký tự chữ cái in thường đã nhập.
    Mình làm thế này, mà khi chạy, máy chẳng hiện ra cái gì cả, mặc dù có đặt getch() cuối rồi:
    Code:
    #include <iostream.h>
    #include <conio.h>
    #include <string.h>
    void main()
    {
    	clrscr();
    	char s[100],c;
    	int i=-1,dem=0,j;
    	while (s[i]!='.')
    	{
    		i++;
    		s[i]=getch();
    	}
    	s[i]='\0';
    
    
    	// Tim so chu cai in thuong
    	i=0;
    	while ( (strlen(s)!=0) && (i<=strlen(s)) )
    	{
    		if ( ('a'<=s[i]) && (s[i]<='z') )
    		{
    			dem++;
    			for (j=i;j<=strlen(s)-1;j++)
    				s[j]=s[j+1];   // xoa ky tu s[i] trong s
    			s[strlen(s)-1]='\0';   // dat lai ky tu ket thuc
    		}
    		else i++; // neu s[i] khong phai la chu in thuong, kiem tra ky tu tiep theo
    	}
    	cout << "So chu cai in thuong la:" << dem;
    	getch();
    	return;
    }

  2. #2
    Ngày gia nhập
    04 2010
    Nơi ở
    Binh Thanh, Hồ Chí Minh, Vietnam, Vietnam
    Bài viết
    504

    Sửa vòng lặp while do đầu tiên thành do while đi. Sau vòng while đầu giá trị biến i là chiều dài chuỗi, dùng hàm strlen hơi phí. Ta có thể duyệt từ cuối chuỗi lên đầu bằng giá trị của i. Còn một điều nữa ở bài này ta chỉ thực hiện việc đếm thôi, ko cần phải xóa gì hết.
    C++ Code:
    1. #include <iostream>
    2. #include <conio.h>
    3. #define MAX_LENGTH 255
    4. int main() {
    5.     char szBuffer[MAX_LENGTH + 1];
    6.     int size = 0;
    7.     int count = 0;
    8.     char chr = 0;
    9.  
    10.     while ((chr = _getch()) != '.' && size < MAX_LENGTH)
    11.         szBuffer[size++] = chr;
    12.     szBuffer[size] = '\0';
    13.  
    14.     for (int i = 0; i < size; ++i)
    15.         if ('a' <= szBuffer[i] && szBuffer[i] <= 'z')
    16.             ++count;
    17.  
    18.     std::cout << szBuffer << std::endl;
    19.     std::cout << "So chu cai in thuong la:" << count;
    20.     std::cin.get();
    21.  
    22.     return 0;
    23. }
    C++ Code:
    1. #include <iostream>
    2. #include <conio.h>
    3. int main() {
    4.     char chr = 0;
    5.     int count = 0;
    6.  
    7.     while ((chr = _getch()) != '.')
    8.         if ('a' <= chr && chr  <= 'z')
    9.             ++count;
    10.  
    11.     std::cout << "So chu cai in thuong la:" << count;
    12.     std::cin.get();
    13.  
    14.     return 0;
    15. }
    Đã được chỉnh sửa lần cuối bởi doicanhden : 26-11-2012 lúc 03:13 PM.
    Kết bạn với tôi <3
    Skype: giautm
    Facebook:
    https://fb.com/giautm.duongntt
    Email:
    giau.tmg@gmail.com

  3. #3
    Ngày gia nhập
    09 2012
    Bài viết
    7

    Em đọc không hiểu code anh lắm, vì em cũng mới tập tễnh thôi
    Nhưng ý em thế này: Em có câu lệnh cout gần cuối file, nằm ngoài vòng lặp, phía dưới còn getch(), thế mà sao chạy màn hình không thèm dừng lại cho xem cái chi hết.
    Còn cái xóa nứ là phải làm, vì phần sau còn cần đến nữa.

  4. #4
    Ngày gia nhập
    04 2010
    Nơi ở
    Binh Thanh, Hồ Chí Minh, Vietnam, Vietnam
    Bài viết
    504

    Trích dẫn Nguyên bản được gửi bởi ductri_vn Xem bài viết
    Em đọc không hiểu code anh lắm, vì em cũng mới tập tễnh thôi
    Nhưng ý em thế này: Em có câu lệnh cout gần cuối file, nằm ngoài vòng lặp, phía dưới còn getch(), thế mà sao chạy màn hình không thèm dừng lại cho xem cái chi hết.
    Còn cái xóa nứ là phải làm, vì phần sau còn cần đến nữa.
    Cho xin cái đề đầy đủ đi, rồi tôi hướng dẫn cho làm.
    Kết bạn với tôi <3
    Skype: giautm
    Facebook:
    https://fb.com/giautm.duongntt
    Email:
    giau.tmg@gmail.com

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn