Announcement

Collapse
No announcement yet.

đề c lập trình nhập một số nguyên ,kiểm tra nếu đúng thì thì in ra, sai bắt nhập lại

Collapse
This topic is closed.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts
    truonganpn
    Campus staff

  • truonganpn
    replied
    Các bạn chưa vô học mà đã chăm tìm hiểu thế là tốt. Nhưng đã mất công tìm hiểu thì phải tìm hiểu cách hỏi cho đúng trước. Diễn đàn có quy định rõ ràng về cách hỏi các vấn đề về lập trình. Các bạn PHẢI ĐỌC TRƯỚC KHI HỎI. Nếu các bạn hỏi mà không đọc thì người khác nhìn vào sẽ nghĩ họ có trả lời các bạn cũng không thèm đọc câu trả lời.

    Đề nghị ban quản trị thẳng tay hơn nữa với các trường hợp không đọc mà đã hỏi này
    Originally posted by sinhvien.uit View Post
    Do dạo này các bạn năm nhất lập rất nhiều topic thắc mắc nhưng kỹ năng đặt câu hỏi rất yếu khiến nhiều topic khó có thể tìm câu trả lời nên ad viết nhanh một số quy tắc này để các bạn tham khảo. Từ bây giờ topic này lập ra mà không tuân thủ các quy tắc này có thể bị xóa kèm theo infraction không báo trước.

    0. Quy tắc tối thượng: Các mẫu câu: "Chạy không được", "Bị lỗi", "Có lỗi rồi", "Lỗi ở đâu đó", "chạy không ra", v.v... không được chấp nhận.

    1. Code phải để trong thẻ [PHP] hoặc thẻ [CODE]. Để cho đẹp hơn nữa có thể sử dụng các pastebin như http://pastebin.com/

    2. Khi nêu khúc mắc về một đoạn code phải nêu rõ đoạn code đó chủ đích được viết ra để làm gì. Giải quyết quyết bài toán hay minh họa vấn đề nào? Nếu bạn không phải là người viết code thì liên hệ hỏi người viết để biết, nếu chính người viết đoạn code cũng không biết nó dùng làm gì thì đoạn code đó
    nên bỏ đi, không đáng để thắc mắc.

    3. Nếu đoạn code có lỗi (compile time họăc runtime) phải nêu rõ hàng nào bị lỗi, nội dung thông báo lỗi, thông tin trình biên dịch. Chú ý quy tắc 0

    4. Nếu đoạn code không phát sinh error khi chạy, nhưng cho kết quả sai mục đích ban đầu thì phải mô tả rõ ứng với trường hợp dữ liệu nào sẽ cho kết quả sai, kết qủa mong muốn là gì và kết quả chương trình đưa ra là gì. Chú ý quy tắc 0

    Leave a comment:

  • ahnioht
    Thành viên mới

  • ahnioht
    replied
    thank you mọi người nhưng bác 12520684 xem lại mình cái đoạn code bạn đưa vẫn bị lỗi (mình dùng turbo c++) , còn bác 12520684 thì chạy okkkk
    Originally posted by 08520021 View Post
    Mình xin phép được sửa một chút thành:

    Code:
    #include <stdio.h>
    // bỏ qua headers không xài tới.
    #include <stdlib.h> // dành cho hàm system.
    
    main()
    {
             int check, a;
    	 system("cls"); // thay cho hàm clrscr(), nhưng chỉ apply trên windows thôi nhé!
    	 printf("- Nhap so: "); // có vẻ như &a không có tác dụng gì ở đây, mình bỏ đi.
    	 tiep: // thay đổi vị trí entry point cho việc nhập dữ liệu của bạn.
    	 check = scanf("%d", &a);
    	 fflush(stdin); // xóa bộ đệm, khi bạn nhập nó sẽ lưu lại ký tự enter, vì thế ở lần nhận tiếp theo sẽ bị "trôi", nếu chưa biết bạn nên đọc qua.
    
    	 if(check == 0)
    	 {
    		 printf("- Du lieu ban nhap khong phai so");
    		 printf("\n- Nhap lai so: ");
                     // không cần thiết phải nhập ở đây vì khi quay lại tiep nó đã làm việc đó rồi.
    		 goto tiep;
    	}
    
    	else printf("- Du lieu ban nhap la so: %d", a);
    }
    Như vậy vấn đề ở đây là vấn đề về bộ đệm khi nhập dữ liệu.
    Mình không recommend dùng goto, thay vào đó là:



    P.S: cách bạn viết chương trình có vẻ giống ANSI-C hơn Cpp.

    Leave a comment:

  • 08520021
    Đỗ Trọng Ân

  • 08520021
    replied
    int scanf ( const char * format, ... );
    Objective: reads data from stdin and stores them according to the parameter format into the locations pointed by the additional arguments.
    Return value: on success, the function returns the number of items of the argument list successfully filled. This count can match the expected number of items or be less (even zero) due to a matching failure, a reading error, or the reach of the end-of-file.
    Cách sử dụng hàm scanf của bạn chủ post đúng nhưng cách đặt câu hỏi có vẻ hơi mập mờ :v

    Leave a comment:

  • 08520021
    Đỗ Trọng Ân

  • 08520021
    replied
    Originally posted by ahnioht View Post
    #include<stdio.h>
    #include<conio.h> // ?
    #include<math.h> // ?

    main()
    {
    int check, a;
    clrscr(); // có một chút hồi ức về borland c ở đây
    tiep:
    printf("- nhap so",&a); // &a để làm gì thế bạn ?????
    check = scanf("%d", &a);

    if(check == 0)
    {
    printf("-Du lieu ban nhap khong phai so");
    printf("\n-nhap lai so");
    scanf("%d",&a); // nhập lại ở đây?
    goto tiep; // vậy ở đây sẽ làm gì?
    }

    else printf("-Du lieu ban nhap la so: %d", a);
    }
    Mình xin phép được sửa một chút thành:

    Code:
    #include <stdio.h>
    // bỏ qua headers không xài tới.
    #include <stdlib.h> // dành cho hàm system.
    
    main()
    {
             int check, a;
    	 system("cls"); // thay cho hàm clrscr(), nhưng chỉ apply trên windows thôi nhé!
    	 printf("- Nhap so: "); // có vẻ như &a không có tác dụng gì ở đây, mình bỏ đi.
    	 tiep: // thay đổi vị trí entry point cho việc nhập dữ liệu của bạn.
    	 check = scanf("%d", &a);
    	 fflush(stdin); // xóa bộ đệm, khi bạn nhập nó sẽ lưu lại ký tự enter, vì thế ở lần nhận tiếp theo sẽ bị "trôi", nếu chưa biết bạn nên đọc qua.
    
    	 if(check == 0)
    	 {
    		 printf("- Du lieu ban nhap khong phai so");
    		 printf("\n- Nhap lai so: ");
                     // không cần thiết phải nhập ở đây vì khi quay lại tiep nó đã làm việc đó rồi.
    		 goto tiep;
    	}
    
    	else printf("- Du lieu ban nhap la so: %d", a);
    }
    Như vậy vấn đề ở đây là vấn đề về bộ đệm khi nhập dữ liệu.
    Mình không recommend dùng goto, thay vào đó là:

    dùng hàm while do; search trên google nha!!!!!!!!!!
    P.S: cách bạn viết chương trình có vẻ giống ANSI-C hơn Cpp.

    Leave a comment:

  • 12520684
    Nguyễn Thành Quân

  • 12520684
    replied
    Code của em sau khi chỉnh sửa thêm từ anh K6


    #include <stdio.h>


    int check(char *a)
    {
    int i =0;
    while(a[i]!=NULL)
    {
    if('0'>a[i]||a[i]>'9')
    return 0;
    i++;
    }
    return 1;
    }


    void main()
    { char s[100];
    tiep: printf("\nNhap vao 1 so nguyen: ");
    scanf("%s",s);


    if(check(s))
    {
    printf("Thoa man!So vua nhap la: %s",s);
    }
    else
    {
    printf("Khong phai so nguyen!");
    goto tiep;
    }


    }

    Leave a comment:

  • 12520085
    Mai Tiến Dũng

  • 12520085
    replied
    đây là câu hỏi không có ý nghĩa; nếu khai báo kiểu nguyên thì cho dù nhập thực hay ký tự sau khi ent nó báo lỗi luôn;
    cái này cần phải hỏi cho điều kiện cho trước:vd
    nhập số nguyên với diều kiện 0<=x<=20....

    Leave a comment:

  • 13521036
    Phùng Quốc Việt

  • 13521036
    replied
    Đọc đề tớ chưa hiểu lắm udency:
    Có phải là nhập vào 1 kí tự rồi kiểm tra xem kí tự đó có phải là 1 số hay ko phải ko?

    Leave a comment:

  • 11520034
    Trần Phương Chung

  • 11520034
    replied
    Code:
    [COLOR=#000000]#include <stdio.h>[/COLOR]
    void main(){    char s[100]; 
       printf("Nhap vao 1 so nguyen: ");   
     scanf("%s",s);   
     if(check(s))       
       printf("Thoa man!So vua nhap la: %s",s);  
      else              printf("Khong phai so!");     
       getch();
    }
    int check(char *a)
    {    int i =0; 
       while(a[i]!=NULL)  
      {        
      if('0'>a[i]||a[i]>'9')           
          return 0;    
          i++;   
     }   
     return 1;
     }
    [COLOR=#000000]}
    [/COLOR]
    bác thử code này xem
    p/s: có em k8 pro quá:shame:

    Leave a comment:

  • nhuquynh
    Thành viên mới

  • nhuquynh
    replied
    cú pháp sai một số chỗ, bạn thử cái này:
    #include<stdio.h>
    #include<conio.h>
    #include<math.h>
    int main()
    {
    int check, a;
    tiep:
    printf("- nhap so");
    check = scanf("%d", &a);

    if(check == 0)
    {
    printf("-Du lieu ban nhap khong phai so");
    printf("\n-nhap lai so");
    scanf("%d",&a);
    goto tiep;
    }

    else printf("-Du lieu ban nhap la so: %d", a);
    getch();

    }

    nhưng cái này vẫn chưa đúng theo yêu cầu bài toán

    Leave a comment:

  • 12520085
    Mai Tiến Dũng

  • 12520085
    replied
    dùng hàm while do; search trên google nha!!!!!!!!!!

    Leave a comment:

  • ahnioht
    Thành viên mới

  • đề c lập trình nhập một số nguyên ,kiểm tra nếu đúng thì thì in ra, sai bắt nhập lại

    đề bài c :nhập một số nguyên ,kiểm tra nếu đúng thì thì in ra, sai bắt nhập lại đến khi đúng là số thì thôi (dùng ngôn ngữ c)

    mình làm thế này , nhưng vẫn sai ! mọi người góp ý

    #include<stdio.h>
    #include<conio.h>
    #include<math.h>
    main()
    {
    int check, a;
    clrscr();
    tiep:
    printf("- nhap so",&a);
    check = scanf("%d", &a);

    if(check == 0)
    {
    printf("-Du lieu ban nhap khong phai so");
    printf("\n-nhap lai so");
    scanf("%d",&a);
    goto tiep;
    }

    else printf("-Du lieu ban nhap la so: %d", a);

    }

LHQC

Collapse
Working...
X