Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 5 của 5
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Vd struct này sai ở đâu

    Mã:
    #include <iostream>using namespace std; struct sinhvien       {       char ten[30];       int namsinh;           }*thongtin; void nhap(sinhvien *thongtin, int soluong)     {     for (int i=0; i<soluong; i++)         {         cout << "Sinh vien " << i+1 << ": "<< endl;         cout << "Ten: " ;         cin.getline(thongtin[i].ten, 30);         cout << "Nam sinh: " ;         cin >> thongtin[i].namsinh;         cout << endl;         }     }     void xuat(sinhvien *thongtin, int soluong)     {     for (int i=0; i<soluong; i++)         {         cout << "Ten: " << thongtin[i].ten << endl;         cout << "nam sinh: " << thongtin[i].namsinh << endl;         }                   } int main()    {    int soluong;    thongtin = new sinhvien [soluong];    cout << "So luong sinh vien ban muon nhap: ";    cin >> soluong;    nhap(thongtin, soluong);    xuat(thongtin, soluong);    system("pause");    return 0;        }
    1.Các bác xem dùm xem khi chạy chương trình nó không cho nhập phần "tên".
    Theo em hiểu thì mình cần cấp bộ nhớ cho phần nhập tên nhưng không biết phải cấp thế nào cho đúng.

    2.Khi em đọc sách có ví dụ về typedefstruct :

    Mã:
    typedef struct        {        int day;        int month;        int year;        }date;typedef struct        {        char name[30];        date birthday;        char role[20];        float salary;              }employee;  struct date        {        int day;        int month;        int year;        };struct employee        {        char name[30];        date birthday;        char role[20];        float salary;              };
    em đã chạy thử cả 2 không thấy có gì khác nhau các bác giải thích dùm em sự khác nhau giữa 2 ví dụ với.

    3.Cùng ví dụ 1 em viết chương trình tính điểm lớn nhất và nhỏ nhất của các sinh viên nhưng khi mình nhập vào trong đó có ít nhất 2 sinh viên cùng có điểm lớn nhất (nhỏ nhất) khi xuất ra chỉ ra 1 sinh viên có số diểm LN NN.
    Các bác bảo em làm thế nào để xuất ra tất cà sinh viên có cùng số điểm LN NN.

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi megadracula
    #include <iostream>

    void nhap(sinhvien *thongtin, int soluong)
    {
    for (int i=0; i<soluong; i++)
    {
    cout << "Sinh vien " << i+1 << ": "<< endl;
    cout << "Ten: " ;
    cin.getline(thongtin[i].ten, 30);
    cout << "Nam sinh: " ;
    cin >> thongtin[i].namsinh;
    cout << endl;
    }
    }

    1.Các bác xem dùm xem khi chạy chương trình nó không cho nhập phần "tên".
    Theo em hiểu thì mình cần cấp bộ nhớ cho phần nhập tên nhưng không biết phải cấp thế nào cho đúng.
    Trong hàm nhập thông tin sinh viên đó trước khi gọi cin.getline() , bạn nên gọi hàm cin.ignore(); có tác dụng lùa hết ký tự trong bộ nhớ đệm ra khỏi luồng nhập thì sẽ nhập "tên" được bình thường.

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    3.Cùng ví dụ 1 em viết chương trình tính điểm lớn nhất và nhỏ nhất của các sinh viên nhưng khi mình nhập vào trong đó có ít nhất 2 sinh viên cùng có điểm lớn nhất (nhỏ nhất) khi xuất ra chỉ ra 1 sinh viên có số diểm LN NN.
    Các bác bảo em làm thế nào để xuất ra tất cà sinh viên có cùng số điểm LN NN.
    Đây là điều hiển nhiên [IMG]images/smilies/biggrin.png[/IMG]
    Khi bạn tìm max hay min gì đấy bạn sẽ chỉ trả về Đúng 1 phần tử (vị trí) có giá trị "không thể lớn hơnhỏ hơn"
    Vậy còn trường hợp "nhièu max/min = nhau" Bạn sẽ phải cho "luộc" lại mảng xem có "em nào" = như vậy nữa thì "xúc" [IMG]images/smilies/biggrin.png[/IMG]
    - À nếu cái mảng bạn vì chuyện gì đấy, trước khi tìm CÁC(chứ ko phải tìm 1) phàn tử max/min mà đã được sắp xếp thì chỉ việc cho chạy từ đầu mảng, hoặc cuối mảng. chạy cho đến khi nào giá trị phần tử bị thay đổi thì tức là hoàn tất việc "xúc" các phần tử max/min

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi clchicken
    Đây là điều hiển nhiên [IMG]images/smilies/biggrin.png[/IMG]
    Khi bạn tìm max hay min gì đấy bạn sẽ chỉ trả về Đúng 1 phần tử (vị trí) có giá trị "không thể lớn hơnhỏ hơn"
    Vậy còn trường hợp "nhièu max/min = nhau" Bạn sẽ phải cho "luộc" lại mảng xem có "em nào" = như vậy nữa thì "xúc" [IMG]images/smilies/biggrin.png[/IMG]
    - À nếu cái mảng bạn vì chuyện gì đấy, trước khi tìm CÁC(chứ ko phải tìm 1) phàn tử max/min mà đã được sắp xếp thì chỉ việc cho chạy từ đầu mảng, hoặc cuối mảng. chạy cho đến khi nào giá trị phần tử bị thay đổi thì tức là hoàn tất việc "xúc" các phần tử max/min
    À ra vậy. Theo ý của bạn là mình thêm continue để bỏ qua các số max/min cho đến khi chạy xong vòng lặp phải ko.

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Ko phải thế. Vì khi đang trong giai đoạn tìm max(hoặc min) thì vẫn chưa hoàn tất, vì chưa duyệt hết mảng. Cho nên max chưa biết.
    Mà max chưa biết thì chưa thể tìm tất cả phần tử = max dc [IMG]images/smilies/biggrin.png[/IMG]
    Phải tìm max xong. Rồi cho duyệt lại xem thằng ku nào = max thì cho ra output (màn hình hoặc 1 mảng lưu vị trí của chúng , hoặc là đếm số lượng... vân vân) mới ổn [IMG]images/smilies/biggrin.png[/IMG]

    Trường hợp đã dc sắp thì quá khỏe [IMG]images/smilies/biggrin.png[/IMG] . Chạy lúc nào mà phần tử mang giá trị khác thì byebye vòng lặp đó bạn ^^ hehehehe

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •