Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 15 kết quả

Đề tài: Hỏi về nhập sinh viên

  1. #1
    Ngày gia nhập
    03 2007
    Nơi ở
    Nhà hát của những giấc mơ
    Bài viết
    33

    Mặc định Hỏi về nhập sinh viên

    Mình làm bài tập về nhà về nhập sinh viên đơn giản

    sao không nhập được cả họ và tên

    ví dụ : Nguyễn Văn A thì chỉ in ra được là Nguyễn thôi

    Mọi người giúp mình cái nhé ,thank

    Đây là bài của mình

    #include <iostream.h>
    #include <conio.h>
    class sv
    {
    public:
    char name[40];
    int stt;
    float dtb;
    void inra();
    void cinn();
    };
    void sv::inra()
    {
    cout << "SV " << name << " STT " << stt << " DTB " << dtb << endl;
    }
    void sv::cinn()
    {
    cout << "SV : ";cin >> name; //Nếu dùng gets(name) thì cũng thế
    cout << "STT : "; cin >> stt;
    cout << "DTB : "; cin >> dtb;
    }
    int main()
    {
    int n;
    cout << "Nhap so luong SV can them : n = ";cin >> n;
    sv a[n];
    for(int i=0;i<n;i++)
    {
    a[i].cinn();
    }
    int j;
    float bandau;
    for(int i=1;i<n;i++)
    {
    bandau=a[i].dtb;
    for(j=i;j>0 && a[j-1].dtb>bandau;j--)
    {
    a[j].dtb=a[j-1].dtb;
    }
    a[j].dtb=bandau;
    }
    for(int i=0;i<n;i++)
    {
    a[i].inra();
    }
    getch();
    }

  2. #2
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Cậu dùng
    cin.ignore(); để xóa bộ đệm rồi
    cin.getline(xâu,số ký tự);

    ví dụ
    Code:
    char ten[30];
    cout<<"Nhap vao ten ";
    cin.ignore();
    cin.getline(ten,30);

  3. #3
    Ngày gia nhập
    03 2007
    Nơi ở
    Nhà hát của những giấc mơ
    Bài viết
    33

    Thank , Có cách khác nữa ko vậy iamvtn

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

    ko dùng cin>>.....; thì dùng gets hay scanf cũng được mà

  5. #5
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Tớ chưa có cách nào mới. Oài nicolasman hiểu sai vấn đề rồi, scanf dùng trong C --> phải nói dùng scan và prin trong C khá bất tiện, cout và cin trong C++ dùng hay hơn nhiều, vì trong C++ có cải tiến Hướng đối tượng (Class)

    Còn bài này để lưu tên SV có cả dấu cách thì dùng cin.ignore() và cin.getline() , còn ngoài ra thì tớ không biết có cách khác không thì tớ không biết, tớ toàn dùng cách này.

  6. #6
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Mặc định Hỏi về nhập sinh viên

    Có thể dùng chuỗi string khi nhập tên
    Code:
    cout <<"Nhap ten: "; string s; getline(cin,s);

  7. #7
    Ngày gia nhập
    03 2007
    Bài viết
    6

    Bạn phải dùng fflush(stdin); ở trước cout << "SV " << name << " STT " << stt << " DTB " << dtb << endl.nhớ thêm #include<stdio.h>

  8. #8
    Ngày gia nhập
    03 2007
    Nơi ở
    Nhà hát của những giấc mơ
    Bài viết
    33

    Hix , với char name[30];

    thì có thể dùng gets(name); // cái này cho nhập kí tự cách trống

    Còn khi khai báo trong lớp thì dùng gets(name) sao lại ko được

  9. #9
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    char ten[30];
    cout<<"Nhap vao ten ";
    cin.ignore(1);
    cin.getline(ten,30);

    Thế là được rồi nhé !

  10. #10
    Ngày gia nhập
    03 2007
    Nơi ở
    Nhà hát của những giấc mơ
    Bài viết
    33

    Mày mò một hồi cũng đã ra

    Có điều là tại sao ko dùng hàm thì đổi được , còn dùng hàm doithutu(sv x,sv y) thì lại ko đổi được nhỉ

    #include <iostream.h>
    #include <conio.h>
    #include <iomanip.h>
    class sv
    {
    public:
    char name[40];
    int masv;
    float dtb;
    void print();
    void nhapsv();
    };
    void sv::print()
    {
    // dung setw() de tao su thang hang
    cout << "SV : " << setw(5) << name;
    cout << setw(30-strlen(name)) << " STT : " << masv;
    cout << setw(10) << " DTB : " << dtb << endl;
    }
    void sv::nhapsv()
    {
    cout << "Ten SV : ";
    cin.ignore(1);
    gets(name);
    cout << "Ma Sinh Vien : "; cin >> masv;
    cout << "Diem trung binh : "; cin >> dtb;
    }
    void doithutu(sv x,sv y)
    {
    sv luu;
    luu=y;
    y=x;
    x=luu;
    }
    int main()
    {
    int n;
    cout << "Nhap so luong SV can them : n = ";cin >> n;
    sv a[n];
    for(int i=0;i<n;i++)
    {
    a[i].nhapsv();
    }
    //doi cho sinh vien theo thu tu diem giam dan
    sv luu;
    for(int i=0;i<n;i++)
    {
    for(int j=i+1;j<n;j++)
    {
    if(a[i].dtb<a[j].dtb)
    {
    doithutu(a[i],a[j]);
    }
    }
    }
    //In sinh vien sau khi sap xep
    cout << "\n Sau khi sap xep : \n";
    for(int i=0;i<n;i++)
    {
    a[i].print();
    }
    getch();
    }

    Mong mọi người giải đáp
    Đã được chỉnh sửa lần cuối bởi manutd1988 : 09-05-2007 lúc 11:06 PM.

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

  1. Bài tập C nhập vào tên sinh viên gồm.và sắp xếp tên sinh viên tăng dần theo danh sách đả nhập
    Gửi bởi nghiapro2589 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 26-05-2013, 08:23 AM
  2. Quản lí sinh viên bằng stack dùng danh sách liên kết. Làm sao để nhập nhiều sinh viên?
    Gửi bởi hoainamken trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 24-08-2011, 10:34 AM
  3. Trả lời: 9
    Bài viết cuối: 14-06-2011, 07:38 PM
  4. Kỹ thuật C Nhập vào điểm Mã Sinh viên, Họ Tên Sinh Viên, Điểm Toán , Điểm Lý, Điểm Hóa.
    Gửi bởi phanvanngoc trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 26-04-2011, 10:10 PM
  5. Gọi 1 sinh viên trong 1 dãy sinh viên nhập vào. giúp em với
    Gửi bởi th1406dnquan trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 08-03-2011, 12:16 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