30/09/2018, 18:03

Cách phát sinh ngẫu nhiên chuỗi

struct sinhvien
{
    char mssv[10];
    char hoten[30];
    char ns;
    float toan, ly, hoa;
};

Bây giờ em muốn dùng random để phát sinh ngẫu nhiên mssv, hoten, ns thì phải làm sao mọi người .(EM chỉ biết dùm random cho kiểu số )

Ngo Dinh Quyen viết 20:17 ngày 30/09/2018

Kiểu kí tự char thật ra cũng là kiểu số nguyên mà bạn…
Kiểu số nguyên bình thường có kích thước 4 byte( Để có thể lưu được các giá trị nguyên lớn…)
Kiểu char chỉ có kích thước 1 byte( Chỉ cần lưu mã Ascii từ 0 -> 255 (thì phải) nên chỉ cần 1 byte là đủ…)
Cái này bạn nên tự tìm hiểu thêm.
Cho bạn 2 vd:
1
int a = 5, b;
char c = ‘A’; // Mã ascii của ‘A’ = 65 -> c = 65, Do đó:
b = a + c : // <-> b = 5 + 56 = 61;
-> char cũng là kiểu số nguyên
2
int a = 65;
printf("\n%c", a) // In ra dạng kí tự của số nguyên a -> màn hình hiển thị: A
-> Khi in ra màn hình, tuỳ thuộc vào việc ta dùng: %d hay %c mà in ra ở dạng số nguyên hay
kí tự

Còn việc bạn muốn radom chuỗi thì chỉ cần viết hàm radom số nguyên, rồi lần lượt random cho từng phần tử trong mảng char là được. Nên radom trong khoảng 65 -> 92 để có những kí tự từ
A -> Z. Quên, Nhớ đặt kí tự NULL vào cuối chuỗi nhé…

Có 1 cách đơn giản hơn là dùng hàm itoa (nằm trong thư viện stdlib.h) có tác dụng chuyển đổi kiểu số nguyên sang dạng chuỗi:
– Cấu trúc hàm như sau:

 char * itoa( int a, char* ChuoiKiTu, int x);

a số nguyên mình muốn chuyển sang dạng chuỗi
ChuoiKiTu là mảng kí tự mình muốn lưu chuỗi sau khi chuyển
x là hệ cơ số của a, cái này bạn cứ để là 10.
Vd nhé:
char HoTen[30];
int a = 12345678;
itoa(a, HoTen, 10);
Cách này không cần phải thêm kí tự NULL vào cuối chuỗi vì hàm đã làm hộ mình rồi
Lúc này chuỗi HoTen là: “12345678” với HoTen[0] = ‘1’, HoTen[2] = ‘2’,…

Sau này học C++, bạn sẽ học được những cách đơn giản hơn, nhưng cứ tìm hiểu từng ít một cho chắc nhé bạn…

Giải thích quá dài dòng nghĩa là mình cũng chưa hiểu vấn đề

Interns viết 20:08 ngày 30/09/2018

nếu muốn sắp xếp theo tên sinh viên thì phải làm sao nhỉ, nếu dùng hàm strcmp thì t chỉ sắp xếp theo họ

Ngo Dinh Quyen viết 20:07 ngày 30/09/2018

Mình vừa thử thì nó sắp xếp được hết mà bạn… Check lại nào…

Bài liên quan
0