Mod nào hướng dẫn em giải bài này với: Để quản lí kết quả thi tuyển vào lớp 10 của học sinh phổ thông, mỗi thí sinh cần lưu trữ các thông tin sau: Số báo danh, họ và tên, điểm thi các môn toán lí hóa.Viết Chương trình thực hiện các công việc sau:
a)Tạo 1 tập tin mới có tên là họcsinh.txt để nhập họ tên thí sinh (chỉ nhập tên và điểm các môn). Việc lập được lập lại cho đến khi họ tên thí sinh là xâu rỗng.
b) Sắp xếp theo thứ tự alpha b của danh sách thí sinh được nhập vào.
c) Hiển thị danh sách thí sinh lên màn hình kèm theo điểm các môn và tổng điểm. Thí sinh trúng tuyển là thí sinh có điểm trên 20 không có môn nào dưới 2.
Ở đây sẽ không ai đi giải bài tập cho em! Do đó em nên nêu lên cách giải, cách suy nghĩ của em và nói chỗ nào còn vướng để ACE có thể giúp em. Chúc em học giỏi!
__________________ Necessity is the mother of in(ter)vention.
Speak softly & carry a big stick. My Technical Blog
Dạ vâng! Em đã giải đc 9/10 bài này! Ra đến kết quả thì phần nhập lại có vấn đề. Đầu tiên em gán i:=1 sau đó em cho nhập a[1] vào,nhập luôn điểm các môn, tiếp đến em dùng vòng lặp while để xét điều kiện xem chuỗi a[1] có phải là xâu rỗng không. Nếu không là rỗng thì i:=i+1 và nhập tiếp a[i], đồng thời nhập luôn điểm các môn của a[i]. Nhưng khi làm xong bài em cho chạy mới phát hiện là khi đánh kí tự rỗng vào ( tương đương phím enter) thì việc nhập a[i] có dừng lại, tuy nhiên sau vòng nhập a[i]= rỗng thì nó vẫn tiếp tục kêu nhập điểm các môn. Để em thí dụ cho mod về lúc chạy chương trình để dễ hiểu nhá!
VD:
Nhap vao a[1]:Le Anh Duy
Toan:9
Li:8
Hoa7
Nhap vao a[2]inh The Ngoc Nam
Toan:9
Li:8
Hoa:6
Nhap vao a[3]: (a[3] em nhập rỗng =phím enter)
Toan: (nó vẫn tiếp tục kêu nhập 3 dòng điểm này Y.Y)
Li:
Hoa:
Nhưng theo yêu cầu đề bài em nghĩ là khi nhập rỗng nó nên bắt đầu thực hiện công việc của câu b) chứ không phải như thế!
Mod nào bik được hướng dẫn em làm sao cho nó thoát ra khỏi while khi nhập rỗng với!
Ở đây mình giả sử một lớp học khoảng 50 học sinh thì việc lưu trữ danh sách của em trên mảng là okie.
Em nên post phần code nhập liệu của em lên anh sửa cho
__________________ Necessity is the mother of in(ter)vention.
Speak softly & carry a big stick. My Technical Blog
Dạ vâng! Em cũng đã hỏi cô về trường hợp đó. Tuy nhiên do đây là đề để cô bồi dưỡng nên phải làm theo đề cô cho. Sau đây là toàn bộ code bài tập của em. Đáp án ra đúng, nhưng còn lộn xộn chỗ nhập dữ liệu, đồng thời em vẫn chưa nghĩ ra cách trình bày để xuất ra màn hình, mong các mod đóng góp cho em!
Program Tuyensinhlop10;
Uses crt;
Type hocsinh=record
hoten:string[20];
tong,Toan,Li,Hoa:real;
kp:string;
end;
var A:array[1..15]of hocsinh;
dem,j,i:byte;
tam:string; tam2,tam3,tam4,tam1:real;
f:text;
Begin
Clrscr;
assign(f,'D:\DuyGames\hocsinh.txt');
reset(f);
a[i].tong:=0;
i:=1;
dem:=0;
Write('Nhap vao a[',i,']:');readln(a[i].hoten);
Write('Toan:');Readln(a[i].Toan);
Write('Li :');Readln(a[i].Li);
Write('Hoa :');Readln(a[i].Hoa);
a[i].tong:=a[i].tong+a[i].toan+a[i].li+a[i].hoa;
While a[i].hoten<>'' do begin
dem:=dem+1;
i:=i+1;
Write('Nhap vao a[',i,']:'); readln(a[i].hoten);
Write('Toan:');Readln(a[i].Toan);
Write('Li :');Readln(a[i].Li);
Write('Hoa :');Readln(a[i].Hoa);
a[i].tong:=a[i].tong+a[i].toan+a[i].li+a[i].hoa;
end;
{ while ((a[i].tong>20) and not (a[i].toan<=2) and (a[i].li<=2) and (a[i].hoa<=2)) do a[i].kp:='Dau';}
For i:=1 to dem do a[i].hoten[1]:=UpCase(a[i].hoten[1]);
For i:=1 to dem-1 do
For j:=i+1 to dem do
If a[i].hoten>a[j].hoten then
begin
tam:=a[i].hoten;
a[i].hoten:=a[j].hoten;
a[j].hoten:=tam;
tam1:=a[i].tong;
a[i].tong:=a[j].tong;
a[j].tong:=tam1;
tam2:=a[i].toan;
a[i].toan:=a[j].toan;
a[j].toan:=tam2;
tam3:=a[i].Li;
a[i].Li:=a[j].Li;
a[j].Li:=tam3;
tam4:=a[i].hoa;
a[i].hoa:=a[j].hoa;
a[j].hoa:=tam4;
end;
For i:=1 to dem do
Writeln(a[i].hoten:5,a[i].toan:11:2,a[i].li:15:2,a[i].hoa:17:2,a[i].tong:19:2);
Writeln('Danh sach nguoi dau la:');
For i:=1 to dem+1 do begin
If ((a[i].tong>20) and not((a[i].toan<=2) or (a[i].li<=2) or (a[i].hoa<=2))) then
Writeln(a[i].hoten); end;
close(f);
readln;
end.
Trong chương trình trên biến "dem" có thể xem là "n" tức là số lượng học sinh có trong danh sách sau khi nhập.
a[i].tong:=0;
i:=1;
dem:=0;
Write('Nhap vao a[',i,']:');readln(a[i].hoten);
Write('Toan:');Readln(a[i].Toan);
Write('Li :');Readln(a[i].Li);
Write('Hoa :');Readln(a[i].Hoa);
a[i].tong:=a[i].tong+a[i].toan+a[i].li+a[i].hoa;
While a[i].hoten<>'' do begin
dem:=dem+1;
i:=i+1;
Write('Nhap vao a[',i,']:'); readln(a[i].hoten);
Write('Toan:');Readln(a[i].Toan);
Write('Li :');Readln(a[i].Li);
Write('Hoa :');Readln(a[i].Hoa);
a[i].tong:=a[i].tong+a[i].toan+a[i].li+a[i].hoa;
end;
Em chỉ cần kiểm tra một tí:
Code:
a[i].tong:=0;
i:=1;
dem:=0;
Write('Nhap vao a[',i,']:');readln(a[i].hoten);
Write('Toan:');Readln(a[i].Toan);
Write('Li :');Readln(a[i].Li);
Write('Hoa :');Readln(a[i].Hoa);
a[i].tong:=a[i].tong+a[i].toan+a[i].li+a[i].hoa;
While a[i].hoten<>'' do begin
dem:=dem+1;
i:=i+1;
Write('Nhap vao a[',i,']:'); readln(a[i].hoten);
if a[i].hoten<>'' then
begin
Write('Toan:');Readln(a[i].Toan);
Write('Li :');Readln(a[i].Li);
Write('Hoa :');Readln(a[i].Hoa);
a[i].tong:=a[i].tong+a[i].toan+a[i].li+a[i].hoa
end
end;
Chúc em thành công nha!
__________________ Necessity is the mother of in(ter)vention.
Speak softly & carry a big stick. My Technical Blog