Trang 1 trên tổng số 4 123... Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 33 kết quả

Đề tài: Đoạn ct con kiểm tra số Amstrong luôn trả về 1, tại sao vậy?

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

    Unhappy Đoạn ct con kiểm tra số Amstrong luôn trả về 1, tại sao vậy?

    Mình rất buồn vì ko hiểu tại sao đoạn chương trình mà mình tự suy nghĩ, tự viết rốt cuộc lại sai. Hãy giúp mình tìm lỗi của nó, thành thật biết ơn!

    Code:
    int kiemtraso_Amstrong(int x)
    {
    	int dem=0,k,luythua=1,s=0;
    	while(x>0)
    	{
    	x=x/10;
    	dem++;
    	}
    	while(dem>0)
    	{
    	k=x%10;
    	while(dem>0)
    	  {
      	  luythua=luythua*k;
      	  dem--;
    	  }
        s=s+luythua;
        x=x/10;
        dem--;
    	}
    	if(s==x)
    	return 1;
    	else
    	return 0;

  2. #2
    Ngày gia nhập
    10 2011
    Bài viết
    552

    C++ Code:
    1. while(x>0)
    2.     {
    3.     x=x/10;
    4.     dem++;
    5.     }
    Khi kết thúc vòng lặp này thì x nó = 0 mất rồi còn đâu mà làm tiếp các vòng lặp khác :|
    Mình rất buồn vì ko hiểu tại sao đoạn chương trình mà mình tự suy nghĩ, tự viết rốt cuộc lại sai
    Có gì đâu mà buồn, viết code bị sai là chuyện thường ngày của mọi người, có buồn tihf cũng buồn ít thôi đừng "rất buồn" như thế, hại sức khỏe lắm .

    Bạn nên viết giải thuật lên giấy. Rồi đánh mũi tên qua những công việc nào sẽ tương ứng với lệnh nào .. Như thế khi code trên máy sẽ đỡ sai sót hơn
    Um Mani Padme Hum...!!

  3. #3
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Đây là nguyên nhân nổi buồn của bạn:

    Code của bạn khó đọc bỏ bố, viết sai không tìm ra lỗi là lẽ đương nhiên.

    Phương án giải quyết:

    1. Ở mỗi đoạn code (hai dấu {}), đặt thêm một dòng chú thích đoạn này làm cái gì
    2. Lúc chạy không ra như ý muốn, sau mỗi đoạn code (hai dấu {}) đặt một break để xem trị biến ra sao. Nếu không biết dùng debugger thì có thể thêm lệnh in ra màn nình.
    3. Lúc đăng bài lên, dùng chức năng "xem trước bài viết" để xem code của mình có dễ đọc không.

  4. #4
    Ngày gia nhập
    07 2010
    Bài viết
    16

    Mình cũng có 1 đoạn code các bạn xem thữ nha.

    Code:
    bool IsAmstrong(int _num)
    {
          int temp=_num,sum=0,r;
          
     while (_num!=0)
     {
           r     =  _num % 10;
           _num  =  _num/10;
           sum  +=  r*r*r;
     }     
     return (temp==sum);
    }

  5. #5
    Ngày gia nhập
    10 2011
    Bài viết
    552

    @ coolkg1412 :
    Xem thử là xem như nào ? Chia sẻ code hay là nhờ xem hộ bị lỗi gì ?
    Code bạn sai rồi cho nên chắc là ko để "chia sẻ" được, còn "nhờ xem bị lỗi gì" thì câu chữ viết lách chán quá, chả ai hiểu bạn muốn gì
    Um Mani Padme Hum...!!

  6. #6
    Ngày gia nhập
    01 2012
    Bài viết
    14

    Mặc định Đoạn ct con kiểm tra số Amstrong luôn trả về 1, tại sao vậy?

    Nếu có thể hãy nói sơ sơ cho em về cách giải quyết để ra một KQ đúng. Cám ơn mọi người 1 lần nữa.

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

    Trích dẫn Nguyên bản được gửi bởi VoTichSu Xem bài viết
    Đây là nguyên nhân nổi buồn của bạn:

    Code của bạn khó đọc bỏ bố, viết sai không tìm ra lỗi là lẽ đương nhiên.

    Phương án giải quyết:

    1. Ở mỗi đoạn code (hai dấu {}), đặt thêm một dòng chú thích đoạn này làm cái gì
    2. Lúc chạy không ra như ý muốn, sau mỗi đoạn code (hai dấu {}) đặt một break để xem trị biến ra sao. Nếu không biết dùng debugger thì có thể thêm lệnh in ra màn nình.
    3. Lúc đăng bài lên, dùng chức năng "xem trước bài viết" để xem code của mình có dễ đọc không.
    Vâng, xin ghi nhận

  8. #8
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Đọc #2 của mình để biết nguyên nhân.
    Từ đó khắc phục ... = cách clone 1 biến có giá trị = x . Lấy cái này để đếm số chữ số, còn x dùng để chia lấy từng chữ số. hoặc ngược lại
    Để khi ta đếm xong số chữ số thì còn có cái mà chia để lấy từng chữ số.
    Um Mani Padme Hum...!!

  9. #9
    Ngày gia nhập
    01 2012
    Bài viết
    14

    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    Đọc #2 của mình để biết nguyên nhân.
    Từ đó khắc phục ... = cách clone 1 biến có giá trị = x . Lấy cái này để đếm số chữ số, còn x dùng để chia lấy từng chữ số. hoặc ngược lại
    Để khi ta đếm xong số chữ số thì còn có cái mà chia để lấy từng chữ số.
    Vâng, em sẽ thử ngay!

  10. #10
    Ngày gia nhập
    01 2012
    Bài viết
    14

    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    Đọc #2 của mình để biết nguyên nhân.
    Từ đó khắc phục ... = cách clone 1 biến có giá trị = x . Lấy cái này để đếm số chữ số, còn x dùng để chia lấy từng chữ số. hoặc ngược lại
    Để khi ta đếm xong số chữ số thì còn có cái mà chia để lấy từng chữ số.
    Clone như thế nào vậy bác? có phải là cứ gắn tùy tiện cho x=y,x=z ko hay cần 1 câu lệnh nào đó? VD như em viết test ct này thì gán nv ko ra đúng
    Code:
    {
    	int x,dem=0,dem1;
    	cout<<"nhap so x";cin>>x;
    	
    	while(x>0)//dem xem co bao nhieu chu so
    	{
    	x=x/10;
    	dem++;
    	}
    	
    	dem=dem1; cout<<dem<<"\n";cout<<dem1;
    	
    }

Các đề tài tương tự

  1. Bài tập C Số Amstrong là số gì? In Ra Các Số Amstrong?
    Gửi bởi vodanh122 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 27-09-2014, 11:40 PM
  2. kiểm tra 1 số xem có là số Amstrong không?
    Gửi bởi cuocdoi trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 29-07-2013, 02:24 PM
  3. Kỹ thuật C++ dãy số nguyên amstrong
    Gửi bởi tannhim trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 03-04-2013, 12:55 AM
  4. Kiểm tra có phải số amstrong ko?
    Gửi bởi luckyluke76215 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 10-12-2010, 05:09 PM
  5. Lập trình C Tìm các số Amstrong nhỏ hơn 1000, lỗi không hiển thị được các số có chữ số 0 ở cuối?
    Gửi bởi duydx trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 21-10-2008, 11:53 PM

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