Sắp xếp danh sách sinh viên theo thứ tự alphabet

Đây là code của em ạ.Mọi người cho em hỏi tại sao em để giá trị n cố định thì chương trình chạy được,nhưng khi em dùng lệnh cin để nhập vào một n bất kì thì bị lỗi.Ai giúp em với. : :roll_eyes::roll_eyes::roll_eyes:

#include <iostream>
#include<string.h>
#include<stdio.h>
using namespace std;

int main()
{
    int n=3;
cout<<"Nhap ten  sinh vien:"<<endl;
char **sv=new char*[n];
char **sv1=new char*[n];
for(int i=0;i<n;i++)
{
*(sv+i)=new char[255];
*(sv1+i)=new char[255];
gets(*(sv+i));
}
int sv0[n];
for(int i=0;i<n;i++)
{
for(int j=(strlen(*(sv+i))-1);j>=0;j--)
{
        int tam=0;
if(((*(sv+i))[j])==' '&&tam==0)
    {
        int k=int ((*(sv+i))[j+1]);
        sv0[i] =k;
        break;
    }
}
}
for(int i=0;i<n-1;i++)
{
    for(int j=i+1;j<n;j++)
    {
          if(sv0[i]>sv0[j])
    {
      *(sv1+i)=(*(sv+i));
     (*(sv+i))=(*(sv+j));
     (*(sv+j))=sv1[i];
     }
    }
    }
for(int i=0;i<n;i++)
   {
    cout<<(*(sv+i))<<endl;
    }
return 0;
}
1 Like

Lỗi như thế nào vậy bạn.

ví dụ như mình nhập n=5(số sinh viên là 5) khi mình nhập xong tên sinh viên thứ 4
thì chương trình dừng lại luôn,còn nếu để n=5 cố định khi khai báo n thì không việc gì.

1 Like

tạo breakpoint debug đi cho quen

Là sao ạ?Em mới học thôi nên không biết.

  • Bị trôi lệnh rồi nha
cin>>n;
cin.ignore();
  • Đặt dòng cin.ignore(); sau cin>>n là được.
  • Bạn search hiện tượng trôi lệnh trong C/C++ để hiểu hơn nhé.
1 Like

cin.ignore() không thì sẽ sinh lỗi mất kí tự :smiley: vì nó nhảy kí tự vô điều kiện (không có tham số 2). Điều kiện đúng là: cin.ignore(1000, '\n');

Thực ra cin.ignore() không phải là “nuốt ngay số kí tự sau” mà là “nếu có nhập thì bỏ qua số kí tự sau”.

1 Like

Cảm ơn bạn nhé.Tưởng sao hóa ra là vậy.Hihi :slight_smile:

1 Like

Cảm ơn bạn nhé .Mình cũng hiểu rồi.

  • Không truyền tham số thì sẽ mặc định chớ nhỉ.
    ignore (streamsize n = 1, int delim = EOF)
  • Khi không truyền tham số thì nó chỉ xóa 1 kí tự trong bộ nhớ cin
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?