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

Đề tài: Nhập và kiểm tra có phải số nguyên dương

  1. #1
    Ngày gia nhập
    03 2021
    Bài viết
    2

    Mặc định Nhập và kiểm tra có phải số nguyên dương

    Đề : nhập một số, nếu không phải số nguyên dương thì nhập lại
    Cơ sở : Em mới học tới for / do while / while
    Nhờ ae : Code logic dễ hiểu hơn, chứ em nhìn code em làm đủ nhiệm vụ nhưng trông hơi ngu. Cảm ơn nhiều
    Code:
    #include <stdio.h>
    
    int main() 
    {
    	float i;
    	int a;
    	do
    	{
    		printf("Hay nhap vao i\n");
    		scanf("%f", &i);
    		for(a=1;a<i;a++)
    		{
    			if(a>i-1 && i/a != 1)
    			{
    				printf("So ban nhap ko phai so nguyen\n");	
    				i=0;
    			}	
    		}
    		if(i<0) printf("So ban nhap khong phai so nguyen duong\n");
    	}while(i<1);
    	printf("\ni = %.0f", i);
    	return 0;
    }

  2. #2
    Ngày gia nhập
    12 2015
    Nơi ở
    Đà Nẵng
    Bài viết
    537

    Trích dẫn Nguyên bản được gửi bởi XeOmDoiNghe Xem bài viết
    Đề : nhập một số, nếu không phải số nguyên dương thì nhập lại
    Cơ sở : Em mới học tới for / do while / while
    Nhờ ae : Code logic dễ hiểu hơn, chứ em nhìn code em làm đủ nhiệm vụ nhưng trông hơi ngu. Cảm ơn nhiều
    Code:
    #include <stdio.h>
    
    int main() 
    {
    	float i;
    	int a;
    	do
    	{
    		printf("Hay nhap vao i\n");
    		scanf("%f", &i);
    		for(a=1;a<i;a++)
    		{
    			if(a>i-1 && i/a != 1)
    			{
    				printf("So ban nhap ko phai so nguyen\n");	
    				i=0;
    			}	
    		}
    		if(i<0) printf("So ban nhap khong phai so nguyen duong\n");
    	}while(i<1);
    	printf("\ni = %.0f", i);
    	return 0;
    }
    C++ Code:
    1. bool laNguyenDuong(float n)
    2. {
    3.     if (n <= 0) {
    4.         return false;
    5.     }
    6.     int i = 0;
    7.     do {
    8.         i++;
    9.     } while(i < n);
    10.     return i == n;
    11. }

  3. #3
    Ngày gia nhập
    02 2016
    Bài viết
    311

    Trích dẫn Nguyên bản được gửi bởi khoaph Xem bài viết
    int i = 0;
    do {
    i++;
    } while(i < n);
    [/CODE]
    Đoạn này có thể viết gọn hơn:

    while (++i < n);

    Có hai điều về bài tập này:
    1. nếu số float nhập vào lớn hơn int thì sao? Trên nguyên tắc, 999999999999999 cũng là số nguyên, nó chỉ lớn hơn số long thôi.
    2. muốn biết số có phải là số nguyên thì chặt bỏ phần thập phân rồi so sánh.
    #include math.h // hàm trunc nằm trong thư viện math
    soNguyen = (trunc(n) == n)? 1 : 0;

  4. #4
    Ngày gia nhập
    03 2021
    Bài viết
    2

    Trích dẫn Nguyên bản được gửi bởi khoaph Xem bài viết
    C++ Code:
    1. bool laNguyenDuong(float n)
    2. {
    3.     if (n <= 0) {
    4.         return false;
    5.     }
    6.     int i = 0;
    7.     do {
    8.         i++;
    9.     } while(i < n);
    10.     return i == n;
    11. }
    Cái này mình đọc hiểu nè. Thks bác. Nhưng hàm function mình chưa học :( chỉ hiểu thôi.

    - - - Nội dung đã được cập nhật ngày 30-03-2021 lúc 04:48 AM - - -

    Trích dẫn Nguyên bản được gửi bởi NguNhuheo Xem bài viết
    Đoạn này có thể viết gọn hơn:

    while (++i < n);

    Có hai điều về bài tập này:
    1. nếu số float nhập vào lớn hơn int thì sao? Trên nguyên tắc, 999999999999999 cũng là số nguyên, nó chỉ lớn hơn số long thôi.
    2. muốn biết số có phải là số nguyên thì chặt bỏ phần thập phân rồi so sánh.
    #include math.h // hàm trunc nằm trong thư viện math
    soNguyen = (trunc(n) == n)? 1 : 0;
    Thks bác, để m tìm hiểu. Chưa học đến hàm trung trong math :(

  5. #5
    Ngày gia nhập
    08 2017
    Bài viết
    3,905

    Tôi thấy nhập môn toàn bàn chuyện trên giời!

    lim(n + ε) = n, khi ε dần tới 0?
    Với trình biên dịch microsoft c, nó, ε có giá trị xấp xỉ 1.401298e-045

    Để hiểu được nó, cần phải có kiến thức toán tốt.
    Data type trong NNLT luôn là hữu hạn. Dù chỉ tính trên phần giao số thực (float) với số nguyên dương (int) hợp lệ, cho ngôn ngữ c/c++, thì cũng không giải quyết được vấn đề này.

    C Code:
    1. #include <stdio.h>
    2. #include <math.h>
    3.  
    4. bool laNguyenDuong(float n){
    5.     if (n <= 0) return false; // OK, số âm hoặc 0.
    6.     //return (floor(n) == n); // old version
    7.     return (trunc(n) == n); // No, với epsilon dần tới 0, lim(n + ε) = n
    8. }
    9. int main(){
    10.     int n; printf("Input n = ");
    11.     scanf("%d", &n);
    12.    
    13.     float x = 1.401298e-045, eps = x / 2;
    14.     float ft = n + eps; // eps > 0, ft là số thực và không phải là số nguyên dương
    15.    
    16.     if(laNguyenDuong(ft)) puts("It is true");
    17.     else puts("It is false");
    18.    
    19.     return 0;
    20. }
    ...
    ..
    .

  6. #6
    Ngày gia nhập
    02 2016
    Bài viết
    311

    Mặc định Nhập và kiểm tra có phải số nguyên dương

    Kiến thức nhập môn chỉ cần đến thế thôi.
    Ít nhất khi làm xong bài, một người trung bình biết được trunc có nghĩa là cắt đi phần thập phân.
    Chờ tìm hiểu và đọc xong ba cái mớ ép si lon chắc sang thế kỷ 22.

    Mất con dao mổ trâu thì kiếm tạm con khác, cứng bén đủ là ngã trâu được. Chờ kiếm hoặc đặt đúng con dao thì qua bố nó mất ngày hội.

  7. #7
    Ngày gia nhập
    08 2017
    Bài viết
    3,905

    Trích dẫn Nguyên bản được gửi bởi NguNhuheo Xem bài viết
    Kiến thức nhập môn chỉ cần đến thế thôi.
    Ít nhất khi làm xong bài, một người trung bình biết được trunc có nghĩa là cắt đi phần thập phân.
    Chờ tìm hiểu và đọc xong ba cái mớ ép si lon chắc sang thế kỷ 22.

    Mất con dao mổ trâu thì kiếm tạm con khác, cứng bén đủ là ngã trâu được. Chờ kiếm hoặc đặt đúng con dao thì qua bố nó mất ngày hội.
    Vậy giống lớp 5 kèm lớp 3.
    Trâu: con ngã, con vùng chạy, biết đâu có người lòi ruột vì xui xẻo.

    Trên #5, mọi số nguyên cộng eps ĐỀU THÀNH số NGUYÊN!

    Cải biên một chút một topic đã có trong 4rum:
    C Code:
    1. #include<stdio.h>
    2.  
    3. #define EPS 1.401298e-045
    4.  
    5. int main(){
    6.     float ft;
    7.     printf("compare num with %e, num = ", EPS);
    8.     scanf("%f", &ft);
    9.    
    10.     if(ft < EPS) printf("%e NHO HON %e", ft, EPS);
    11.     else if(ft == EPS) printf("%e BANG %e", ft, EPS);
    12.     else printf("%e LON HON %e", ft, EPS);
    13.    
    14.     return 0;
    15. }
    http://diendan.congdongcviet.com/threads/t396988::lieu-co-phai-compiler-bi-loi-so-sanh.cpp
    ...
    ..
    .

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