You are on page 1of 3

Bài 1:

Cho trước hai tệp chứa họ tên là ‘HOTEN.TXT’ và tệp chứa danh sách
điểm danh ‘DIEMDANH.TXT’. Trong đó tệp 1 ghi tên học sinh mỗi một
dòng. tệp 2 ghi mỗi dòng là danh sách điểm danh của học sinh đó, với ‘C’
là có, ‘V’ là vắng có phép, ‘K’ không phép.
Lập thuật toán và viết chương trình để:
= Tính số buổi đi, số buổi vắng, vắng có phép của một học sinh.
= Tính xem ai đi học chăm chỉ nhất, có số buổi đi nhìu nhứt.
Đưa vào tệp ‘KETQUA.DAT’ theo quy cách:
STT_ _ , Ho Ten_ _ , So ngay di hoc_ _,Nghi co phep_ _ , Nghi khong
phep
Nhung hoc sinh di hoc cham nhat, So buoi hoc
Bài 2:
Điểm Danh
STT Họ Tên
Ngày 1 Ngày 2 … Ngày N
1 Lan Anh C D D
2 Hoài Anh D D D

N Tú Anh K K D
Nhập dữ liệu từ bàn phím. Nghỉ có phép C, không phép K, đi học D. Tính
tổng số ngày nghỉ có phép, không phép, đi học. Đưa ra danh sách số học
sinh không được thi nếu nghỉ không phép ≥20%. Đưa vào ‘KQUA.DAT’
theo quy cách:
STT_ _ Ho va Ten _ _ So ngay di hoc _ _ Nghi co phep _ _ Nghi khong
phep
Danh sach hoc sinh khong duoc du thi
Lời giải:(không có thuật toán)
Bài 2:
uses crt;
var
ten : array [1..100] of string[32];
dd : array [1..100,1..100 ] of char;
n,m,i,j : integer;
dihoc,vang,lydo : array [1..100] of integer;
f : text;
begin
{dd[i,j] kieu ky tu 'c' co nghia hoc sinh i di buoi j la C}
clrscr;
write('Nhap so hoc sinh n = '); readln(n);
write('Nhap so ngay diem danh m = '); readln(m);
for i := 1 to n do
begin
write('Nhap ten hoc sinh ',i,' : '); readln(ten[i]);
writeln('Nhap bang diem danh cua hoc sinh ',i,' : ');
for j := 1 to m do
begin
write('Nhap ngay ',j ,': '); readln(dd[i,j]);
end;
end;

{tinh toan}
{hoc sinh i co so buoi di hoc la dihoc[i], vang la vang[i]}

for i := 1 to n do
for j := 1 to m do
case upcase(dd[i,j]) of {upcase la tra ve gia tri hoa, vi du
upcase('c')='C',upcase('C')='C')}
'C' : inc(lydo[i]);
'K' : inc(vang[i]);
'D' : inc(dihoc[i]);
end;
{in ket qua}

assign(f,'kqua.txt'); rewrite(f);
for i := 1 to n do
writeln(f,i,' ',ten[i],' ',dihoc[i],' ',lydo[i],' ',vang[i]);
for i := 1 to n do
if vang[i]>=(0.2*M) then writeln(f,ten[i]);
close(f);
end.

Bài 1:
var
nhiunhut : integer; {bien luu so buoi cua cac hoc sinh di cham
nhut}
dihoc, vang, lydo : array [1..100] of integer;
ten : array[1..100] of string[32];
n,i : integer;
f : text;
ch : char;
begin
assign(f,'hoten.txt'); reset(f);
i:= 0;
while not seekeof(f) do
begin
inc(i);
readln(f,ten[i]);
end;
close(f);
n:=i;
assign(f,'diemdanh.txt'); reset(f);
for i := 1 to n do
begin
dihoc[i]:=0; vang[i]:=0; lydo[i]:=0;
while not seekeoln(f) do
begin
read(f,ch);
case upcase(ch) of {upcase xem bai 2}
'C':inc(dihoc[i]);
'V':inc(lydo[i]);
'K':inc(lydo[i]);
end;
end;
readln(f);
end;
close(f);
{ tim so buoi hoc cua hoc sinh di cham chi nhut}
nhiunhut:=0;
for i :=1 to n do
if nhiunhut < dihoc[i] then nhiunhut:=dihoc[i];

{in ket qua}


assign(f,'ketqua.dat'); rewrite(f);
for i:=1 to n do
writeln(f,i,' ,',ten[i],' ,',dihoc[i],' ,',lydo[i],' ,',vang[i]);
for i:= 1 to n do
if dihoc[i]=nhiunhut then
writeln(f,ten[i],' ',nhiunhut);
close(f);
end.

You might also like