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

  • [C++] đề 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);

    }

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

    Comment


    • #3
      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

      Comment


      • #4
        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:
        Khi đã chọn công việc hay cái nghề cho mình thì nên đầu tư nhiều công sức cho nó thì sẽ thấy nó có nhiều cái hay để kiếm ra tiền lắm.Rồi cái quan trọng là có sức hay kiên trì mà làm không thôi! Đừng đứng núi này trông núi nọ thì phí hoài thời gian và tuổi trẻ thôi!

        Comment


        • #5
          Đọ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?
          Phùng Quốc Việt
          Backend Developer - YouNet Media
          Stand-in Backend Developer - Vizion Team
          Phone: (+84) 1654 454 718
          Mail: rexviet@gmail.com
          Skype: evakoviz_rexviet

          Comment


          • #6
            đâ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....

            Comment


            • #7
              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;
              }


              }

              Comment


              • #8
                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.

                Comment


                • #9
                  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

                  Comment


                  • #10
                    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.

                    Comment


                    • #11
                      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

                      Comment

                      LHQC

                      Collapse
                      Working...
                      X