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

Đề tài: [Solved]xem hộ mình với ( sao không lặp lại nhỉ)

  1. #1
    Ngày gia nhập
    10 2008
    Bài viết
    85

    Mặc định [Solved]xem hộ mình với ( sao không lặp lại nhỉ)

    mình có đoạn code này nội dung là nhập vào thông tin của học sinh thôi. Mình muốn ân y hoặc Y là nhập lại mà sao cứ ấn y Hoặc Y là nó thoát luôn ai xem hộ mình với
    Code:
    #include <stdio.h>
    #include <conio.h>
    struct hocsinh
    {
    	char ht[30];
       int ns;
       float tongdiem;
    }hs[100];
    void nhap()
    {
    	char chon;
       int i=0;
       do{
       printf("\nNhap ten hoc sinh %d:",i+1);
       gets(hs[i].ht);
       printf("\nNhap nam sinh:");
       scanf("%d",&hs[i].ns);
       printf("\nNhap tong diem:");
       scanf("%f",&hs[i].tongdiem);
       printf("\nBan co muon nhap nua khong(Y/N):");
       scanf("%c",&chon);
       i++;
       }while(chon=='Y' || chon=='y');
    }
    
    void main()
    {
    	nhap();
       getch();
    }

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Lỗi là do bạn nhập trực tiếp biến kiểu float trong struct, bạn phải nhập nó gián tiếp qua biến nào đó rồi gán vào cho struct.

    C++ Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3.  
    4. typedef struct _hocsinh
    5. {
    6.     char ht[30];
    7.     int ns;
    8.     float tongdiem;
    9. } hocsinh;
    10.  
    11. hocsinh hs[100];
    12.  
    13. void nhap()
    14. {
    15.     char chon;
    16.     int i=0;
    17.     float tmp;
    18.  
    19.  
    20.     do
    21.     {
    22.         fflush(stdin):
    23.         printf("\nNhap ten hoc sinh %d:",i+1);
    24.         gets(hs[i].ht);
    25.         printf("\nNhap nam sinh:");
    26.         scanf("%d",&hs[i].ns);
    27.         printf("\nNhap tong diem:");
    28.         scanf("%f",&tmp);
    29.         hs[i].tongdiem = tmp;
    30.         printf("\nBan co muon nhap nua khong(Y/N):");
    31.         chon = getche();
    32.         i++;
    33.    }
    34.    while(chon=='Y' || chon=='y');
    35. }
    36.  
    37. void main()
    38. {
    39.     nhap();
    40.     getch();
    41. }
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  3. #3
    Ngày gia nhập
    10 2008
    Bài viết
    85

    Trích dẫn Nguyên bản được gửi bởi meoconlongvang Xem bài viết
    Lỗi là do bạn nhập trực tiếp biến kiểu float trong struct, bạn phải nhập nó gián tiếp qua biến nào đó rồi gán vào cho struct.
    hình như không bạn đâu bạn mình thấy hình như thiếu đoạn gán này nè chon = getche();
    khi mình thêm vào thí nó vẫn chạy được như bình thường mà không cần trung gian. Đây nè:
    Code:
    #include <stdio.h>
    #include <conio.h>
    struct hocsinh
    {
    	char ht[30];
       int ns;
       float tongdiem;
    }hs[100];
    void nhap()
    {
    	char chon;
       int i=0;
       do{
       printf("\nNhap ten hoc sinh %d:",i+1);
       gets(hs[i].ht);
       printf("\nNhap nam sinh:");
       scanf("%d",&hs[i].ns);
       printf("\nNhap tong diem:");
       scanf("%f",&hs[i].tongdiem);
       printf("\nBan co muon nhap nua khong(Y/N):");
       scanf("%c",&chon);
       chon = getche(); 
       i++;
       }while(chon=='Y' || chon=='y');
    }
    
    void main()
    {
    	nhap();
       getch();
    }
    bạn có thể giải thích giúp mình hàm getche(); này để làm gì không ?

  4. #4
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    bạn có thể giải thích giúp mình hàm getche(); này để làm gì không ?
    getchar
    This is a standard function that gets a character from the stdin.

    getch
    This is a nonstandard function that gets a character from keyboard, does not echo to screen.

    getche
    This is a nonstandard function that gets a character from the keyboard, echoes to screen.

    Use getchar if you want it to work on all compilers. Use getch or getche on a system that supports it when you want keyboard input without pressing

    And note that the return value of all three is int! You need this to properly check for EOF.
    Have fun!.....

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

    getche
    This is a nonstandard function that gets a character from the keyboard, echoes to screen.
    -getche: đây là 1 hàm mà nó dùng để lấy các ký tự từ bàn phím rồi đưa ra màn hình.
    -getch thì ngượi lại
    -getchar: là 1 hàm chuẩn lấy các ký tự từ stdin( hình như thư viện stdin)
    Use getchar if you want it to work on all compilers. Use getch or getche on a system that supports it when you want keyboard input without pressing
    -sử dụng getchar nếu bạn muốn nó làm việc với tất cả trình biên dịch. Sử dngj get hoặc getche trên hệ thống có hỗ trợ nó khi bạn muốn nhập từ bàn phím trong trường hợp không cấp bách
    Em dịch thế không bít đúng không )
    Đã được chỉnh sửa lần cuối bởi minhphuong90 : 04-11-2008 lúc 12:15 PM.

  6. #6
    Ngày gia nhập
    10 2008
    Bài viết
    258

    Mặc định [Solved]xem hộ mình với ( sao không lặp lại nhỉ)

    sao không thay scanf("%c",chon) bằng chon=getch();luôn.có cần thêm gì đâu!

  7. #7
    Ngày gia nhập
    10 2008
    Bài viết
    85

    bạn thử thay đi xem được không.

  8. #8
    Ngày gia nhập
    11 2008
    Nơi ở
    thành phố HCM
    Bài viết
    1

    trong cấu trúc dữ liệu theo mình biết thì kiểu float không tính trực tiếp mà bạn phải tính trên một biến tạm.

  9. #9
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    bài của bạn bị trôi vì sau gets thì con trỏ của stdin nó sẽ đứng trước "\n" nên bị trôi. do đó scanf("%c") ko có hiệu quả.
    để hiệu quả có thể fflush(stdin)
    hoặc dùng phương pháp khác
    ở trong C thì : ko chấp nhận nhập trực tiếp biến thực trong mảng và cấu trúc tuy nhiên
    ở trong C++ thì lại chấp nhận nên bài của bạn ấy ko sai việc biến thực trong cấu trúc
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

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

  1. [ Solved ]Xây dựng lớp ĐỒTHI
    Gửi bởi bluesky_123078 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 09-11-2008, 09:34 AM
  2. [Solved] Hỏi về con trỏ
    Gửi bởi RedHatLinux9 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 17-09-2008, 08:01 AM
  3. [ Solved ]Cấp phát động
    Gửi bởi demontaihack trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 16
    Bài viết cuối: 07-09-2008, 08:23 PM
  4. [ Solved ]Cần hướng dẫn về bài tập màng!!
    Gửi bởi itthuyloi trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 03-06-2008, 03:00 PM
  5. [ Solved ]Sắp xếp hai dãy số
    Gửi bởi thuchanh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 20-04-2008, 11:47 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