1. Trang chủ
  2. » Cao đẳng - Đại học

Bài tập môn Tin học đại cương có lời giải

38 48 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 38
Dung lượng 1,09 MB

Nội dung

Bài 19: Kết quả thi học kỳ của một lớp sinh viên được cho trong 2 tệp văn bản: một tệp hoten.txt chứa họ và tên của các sinh viên của một lớp trong đó họ tên mỗi sinh viên chiếm một dò[r]

(1)

BÀI TẬP MÔN TIN HỌC ĐẠI CƯƠNG CÓ LỜI GIẢI Bài : Cho dãy x1,x2…xn Tính giá trị trung bình dãy

Giải

var i,n : integer;

x:array[1 100] of real; tong : real;

begin

write('n = ');readln(n); for i:=1 to n

begin

write('x[',i,']= '); readln(x[i]); end;

for i:=1 to n tong:=tong+x[i];

writeln('TB = ',tong/n); readln;

end

Bài : Cho dãy x1,x2…xn Tác dãy thành dãy : dãy gồm phần tử >=0, dãy gồm phần tử <0

Giải

var i,n,k,l : integer;

x,y,z : array[1 100] of real; begin

write('Nhap n : ');readln(n); for i:=1 to n

begin

write('x[',i,'] = '); readln(x[i]); end;

for i:=1 to n if x[i]>=0 then begin

k:=k+1; y[k]:=x[i]; end

else begin l:=l+1; z[l]:=x[i]; end;

(2)

for i:=1 to k

writeln('y[',i,'] = ',y[i]:4:1); Writeln('Day ca phan tu <0 la :'); for i:=1 to l

writeln('z[',i,'] = ',z[i]:4:1); readln;

end

Bài : Cho dãy x1,x2…xn Sắp xếp dãy số cho phần tử >=0 đầu, phần tử <0 cuối, trật tự phần tử không thay đổi

Giải

var i,n,k : integer;

x,y : array[1 100] of real; begin

write('Nhap n : ');readln(n); for i:=1 to n

begin

write('x[',i,'] = '); readln(x[i]); end;

for i:=1 to n if x[i]>=0 then begin

k:=k+1; y[k]:=x[i]; end;

for i:=1 to n if x[i]<0 then begin

k:=k+1; y[k]:=x[i]; end;

for i:=1 to k

writeln('y[',i,'] = ',y[i]:4:1); readln;

end

Bài : Cho dãy x1,x2…xn Xóa phần tử xk Giải

var i,n,k : integer;

x,y : array[1 100] of real; begin

write('Nhap n : ');readln(n); for i:=1 to n

begin

(3)

readln(x[i]); end;

write('Nhap vi tri k :');readln(k); for i:=k to n-1

x[i]:=x[i+1]; for i:=1 to n-1

writeln('x[',i,']= ',x[i]:4:1); readln;

end

Bài : Cho dãy x1,x2…xn Chèn M vào vị trí k Cách :

var i,n,k,m : integer;

x,y : array[1 100] of real; begin

write('Nhap n : ');readln(n); for i:=1 to n

begin

write('x[',i,'] = '); readln(x[i]); end;

write('Nhap vi tri k :');readln(k);

write('Nhap so can chen M :');readln(m); for i:=1 to n+1

if i<k then y[i]:=x[i] else if i=k then y[i]:=m

else

y[i]:=x[i-1]; for i:=1 to n+1

writeln('y[',i,']= ',y[i]:4:1); readln;

end

Cách : Dino uses crt;

var i,k,m,n:integer;

a:array[1 100] of integer; Begin

clrscr;

write('Nhap so phan tu day: '); readln(n);

For i:=1 to n begin

(4)

readln(a[i]); end;

write('Nhap vi tri k: '); readln(k);

write('Nhap so m: '); readln(m);

for i:=n downto k a[i+1]:=a[i]; a[k]:=m;

writeln('Day sau chen la: '); for i:=1 to n+1 write(a[i]:4); readln;

End

Bài : Kiểu mảng - Cho bảng sau :

STT Họ tên Điểm

1 … m

1 n

1 Tính điểm trung bình sinh viên

2 Tìm sinh viên có điểm trung bình cao

3 Sắp xếp lại bảng theo trật tự tăng dần điểm trung bình Giải :

var n,m,i,j,k :integer;

ht:array[1 20] of string[20]; diem:array[1 20,1 10] of real; tong,tb:array[1 20] of real; tg,tg2,s,max:real;

tg1:string[20]; begin

write('Nhap n : ');readln(n); write('Nhap m : ');readln(m); for i:=1 to n

begin

write('HTSV ',i,' la '); readln(ht[i]);

for j:=1 to m begin

write('DT mon ',j,' la '); readln(diem[i,j]); end;

end;

for i:=1 to n begin

(5)

for j:=1 to m

tong[i]:=tong[i]+diem[i,j]; tb[i]:=tong[i]/m;

end; max:=tb[1]; for i:=1 to n if tb[i]>max then max:=tb[i];

write('Danh sach cac hoc sinh co TB max bang ',max:6:1,' la :'); for i:=1 to n

if tb[i]=max then write(ht[i],', '); for i:=1 to n-1 for k:=i+1 to n if tb[i]>tb[k] then begin

tg:=tb[i]; tb[i]:=tb[k]; tb[k]:=tg; tg1:=ht[i]; ht[i]:=ht[k]; ht[k]:=tg1; for j:=1 to m begin

tg2:=diem[i,j]; diem[i,j]:=diem[k,j]; diem[k,j]:=tg2; end;

end;

writeln('Danh sach sau sap xep la :'); for i:=1 to n

begin writeln; write(ht[i]); for j:=1 to m

write(' ',diem[i,j]:4:1,' '); end;

readln; end

Bài : Cho ma trận Anxm, tính tổng hàng, cột ma trận Giải

var i,m,n,j : integer;

(6)

write('Nhap so hang : ');readln(n); write('Nhap so cot : ');readln(m); for i:=1 to n

for j:=1 to m begin

write('a[',i,',',j,']= '); readln(a[i,j]); end;

for i:=1 to n b1[i]:=0; for i:=1 to m b2[i]:=0; for i:=1 to n for j:=1 to m begin

b1[i]:=b1[i]+a[i,j]; b2[j]:=b2[j]+a[i,j]; end;

for i:=1 to n begin

writeln;

for j:=1 to m write(a[i,j]:4:1,' '); end;

writeln;

writeln('Tong tung hang la : '); for i:=1 to n

writeln('Hang ',i,'= ',b1[i]:4:1); writeln('Tong tung cot la : '); for j:=1 to m

writeln('Cot ',j,'= ',b2[j]:4:1); readln;

end

Bài : Cho ma trận Anxm, xóa hàng thứ k ma trận Giải

var i,m,n,k,j:integer;

a:array[1 100,1 100] of real; begin

write('Nhap so hang :');readln(n); write('Nhap so cot :');readln(m); for i:=1 to n

for j:=1 to m begin

(7)

end;

write('Nhap hang can xoa :');readln(k); for j:=1 to m

for i:=k to n-1 a[i,j]:=a[i+1,j]; for i:=1 to n-1 for j:=1 to m

writeln('a[',i,',',j,']= ',a[i,j]:4:1); readln;

end

Bài : Cho ma trận Anxm tìm giá trị lớn ma trận, xóa hàng chứa giá trị lớn

Giải

var n,m,i,j,max,k : integer;

x:array[1 10,1 10] of integer; begin

write('Nhap n : ');readln(n); write('Nhap m : ');readln(m); for i:=1 to n

for j:=1 to m begin

write('x[',i,',',j,']= '); readln(x[i,j]); end;

k:=1; max:=x[1,1]; for i:=1 to n for j:=1 to m if x[i,j]>max then begin

max:=x[i,j]; k:=i;

end;

for j:=1 to m for i:=k to n-1 x[i,j]:=x[i+1,j]; for i:=1 to n-1 begin

writeln;

for j:=1 to m write(x[i,j],' ') ; end;

readln; end

(8)

nhất Giải

var i,j,m,n,k,max:integer;

a:array[1 10,1 10] of integer; begin

write('Nhap n : ');readln(n); write('Nhap m : ');readln(m); for i:=1 to n

for j:=1 to m begin

write('a[',i,',',j,']= '); readln(a[i,j]); end;

k:=1; max:=a[1,1]; for j:=1 to m for i:=1 to n if a[i,j]>max then begin

max:=a[i,j]; k:=j;

end;

for i:=1 to n for j:=k to m-1 a[i,j]:=a[i,j+1]; for i:=1 to n begin

writeln;

for j:=1 to m-1 write(a[i,j],' '); end;

readln; end

Bài 11: Cho ma trận Anxm vecto B[b1,b2,…,bn] (có n phần tử) tìm giá trị nhỏ ma trận, chèn vecto B vào cột cuối chứa giá trị nhỏ

Giải

var i,j,k,n,m:integer;

a : array[1 50,1 50] of real; y : array[1 50,1 50] of real; b:array[1 100] of real; min:real;

begin

write('Nhap so hang: ');readln(n); write('Nhap so cot : ');readln(m); for i:=1 to n

(9)

begin

write('a[',i,',',j,']= '); readln(a[i,j]); end;

min:=a[1,1]; for i:=1 to n for j:=1 to m if min>a[i,j] then min:=a[i,j];

writeln('Gia tri nho nhat la : ',min:4:1); for j:=1 to m

for i:=1 to n if min=a[i,j] then k:=j;

writeln('vi tri cuoi cung o cot :',k); writeln('Nhap ma tran vecto B'); for i:=1 to n

begin

write('b[',i,']= '); readln(b[i]); end;

for i:=1 to n for j:=1 to m+1 if j<k+1 then y[i,j]:=a[i,j] else if j=k+1 then y[i,j]:=b[i] else

y[i,j]:=a[i,j-1]; for i:=1 to n begin

writeln;

for j:=1 to m+1 write(y[i,j]:4:1,' '); end;

readln; end

Bài 12: Cho ma trận Anxm vecto B[b1,b2,…,bm] (có m phần tử) Chèn vecto B vào hàng thứ k

Giải

var i,j,k,n,m:integer;

(10)

y : array[1 50,1 50] of real; b:array[1 100] of real; begin

write('Nhap so hang: ');readln(n); write('Nhap so cot : ');readln(m); for i:=1 to n

for j:=1 to m begin

write('a[',i,',',j,']= '); readln(a[i,j]); end;

write('Nhap vi tri hang can chen : '); readln(k);

If (1<=k) and (k<=n+1) then begin

writeln('Nhap ma tran vecto B'); for i:=1 to m

begin

write('b[',i,']= '); readln(b[i]); end;

for j:=1 to m for i:=1 to n+1 if i<k then

y[i,j]:=a[i,j] else if i=k then y[i,j]:=b[j] else

y[i,j]:=a[i-1,j]; for i:=1 to n+1 begin

writeln;

for j:=1 to m write(y[i,j]:4:1,' '); end;

end else

writeln('K ko co thuoc hang can chen '); readln;

end

Bài 13: Cho ma trận Anxm tìm tổng phần tử dương tam giác tích phần tử âm tam giác So sánh tổng tích

Giải

(11)

a:array[1 50,1 50] of real; tong,tich:real;

begin

write('Nhap so hang ma tran NxN : '); readln(n);

for i:=1 to n for j:=1 to n begin

write('a[',i,',',j,']= '); readln(a[i,j]); end;

tong:=0;

for i:=1 to n-1 for j:=i+1 to n if a[i,j]>=0 then tong:=tong+a[i,j]; tich:=1;

for i:=2 to n for j:=1 to i-1 if a[i,j]<0 then k:=k+1; if k=0 then tich:=0 else

for i:=2 to n for j:=1 to i-1 if a[i,j]<0 then tich:=tich*a[i,j]; for i:=1 to n begin

writeln;

for j:=1 to n write(a[i,j]:4:1,' '); end;

writeln;

writeln('tich cac pt am tam giac duoi la : ',tich:4:1); writeln('tong cac pt tam giac tren la : ',tong:4:1); if tong>tich then

writeln(' Tong lon hon tich') else if tong=tich then

writeln(' Tong bang tich ') else

writeln('Tong be hon tich'); readln;

end

(12)

STT Họ tên Điểm danh

1 … m

1…n

1 Đếm số buổi học, nghỉ học có phép, nghỉ học khơng phép

2 Đưa sinh viên không thi biết điều kiện không thi số buổi nghỉ học không phép >= 20%m

Giải: (Dino) uses crt;

type sinhvien=record ten:string[20];

dd:array[1 20] of char; dh,cp,kp:integer;

tt:string[15]; end;

var m,n,i,j:integer;

sv:array[1 100] of sinhvien; Begin

clrscr;

write('Nhap so hoc sinh: '); readln(n);

write('Nhap so buoi hoc: '); readln(m);

writeln('Nhap thong tin di hoc cua tung sinh vien:'); for i:=1 to n

with sv[i] begin

writeln('Hoc sinh thu ',i); write('Ho ten: ');

readln(ten); dh:=0; kp:=0; cp:=0;

for j:=1 to m begin

write('Buoi ',j,': '); readln(dd[j]);

if dd[j]='k' then kp:=kp+1 else if dd[j]='p' then cp:=cp+1 else dh:=dh+1;

end; end;

writeln('Danh sach thong tin di hoc cua sinh vien la: ');

(13)

with sv[i] begin

write(i:4,ten:20,dh:8,kp:12,cp:9);

if kp/m>0.2 then write('Khong duoc thi':18) else write('Duoc thi':18);

writeln; end;

readln; End

Bài 15 : Cho trước tệp văn TEN.TXT ghi họ tên sinh viên lớp, họ tên người chiếm dòng tệp văn DIEMDANH.TXT ghi kết điểm danh người theo quy tắc :

+ Có mặt đánh dấu “c”; vắng có lý “v”; vắng không lý “k”

+ Đánh dấu điểm danh sinh viên ghi liên tiếp dịng Vẽ sơ đồ thuật tốn viết chương trình pascal để

1 Thống kê số buổi học, số buổi vắng (có khơng lý do) sinh viên Lập danh sách sinh viên học chăm (có số buổi có mặt cao nhất)

hãy cho biết co sinh viên Kết ghi vào tệp ketqua.txt theo quy cách sau

- Mỗi sinh viên chiếm dịng gồm thơng tin

STT(2 dấu cách)họ tên sv(2 dấu cách)số buổi có mặt(2 dấu cách)số buổi vắng mặt có lý do(2 dấu cách)số buổi vắng mặt không lý

- Các dòng : Họ tên sinh viên chăm (họ tên sinh viên viết dòng)

- Dòng cuối : số sinh viên học chăm Giải :

type sinhvien=record ht:string[30];

diemdanh:array[1 10] of char; dh:integer;

nh:integer; cp:integer; end;

var sv:array[1 20] of sinhvien; sv1:array[1 20] of sinhvien; i,j,m,n,k,t,max:integer;

f1,f2,f3:Text; begin

(14)

i:=0;

while not eof(f1) begin

i:=i+1;

readln(f1,sv[i].ht); end;

n:=i; close(f1);

assign(f2,'diemdanh.txt'); reset(f2);

i:=0;

while not eof(f2) begin

i:=i+1; j:=0;

while not eoln(f2) begin

j:=j+1;

read(f2,sv[i].diemdanh[j]); end;

readln(f2); end;

m:=j; close(f2); for i:=1 to n begin

sv[i].dh:=0; sv[i].cp:=0; sv[i].nh:=0; for j:=1 to m

if sv[i].diemdanh[j]='c' then sv[i].dh:=sv[i].dh+1

else if sv[i].diemdanh[j]='v' then sv[i].cp:=sv[i].cp+1

else

sv[i].nh:=sv[i].nh+1; end;

max:=sv[1].dh; for i:=1 to n

if sv[i].dh>max then max:=sv[i].dh; for i:=1 to n

if sv[i].dh=max then begin

(15)

sv1[t]:=sv[i]; end;

write('Thong ke so buoi di hoc cua sinh vien'); for i:=1 to n

begin writeln;

write(i,' ',sv[i].ht:10,' '); for j:=1 to m

write(sv[i].diemdanh[j],' ');

write(sv[i].dh,' ',sv[i].nh,' ',sv[i].cp); end;

writeln;

write('Co ',t,' sinh vien di hoc cham chi nhat : '); for i:=1 to t

begin writeln;

write(i,' ',sv1[i].ht:10); end;

assign(f3,'ketqua.txt'); rewrite(f3);

for i:=1 to n begin

write(f3,i,' ',sv[i].ht:10,' ');

write(f3,sv[i].dh:1,' ',sv[i].cp:1,' ',sv[i].nh:1); writeln(f3);

end;

for k:=1 to t

writeln(f3,sv1[k].ht);

write(f3,'so sv di hoc cham chi nhat la : ',t); close(f3);

readln; end

Bài 16 : Cho trước tệp văn TEN.TXT ghi họ tên chủ hộ phường, dịng ghi họ tên chủ hộ tệp văn SODIEN.TXT ghi số lượng điện hộ tiêu thụ tháng, số lượng điện tiêu thụ hộ ghi dòng, số lượng điện tháng ghi cách dấu cách

Vẽ sơ đồ thuật toán viết chương trình pascal để :

1 Tính số lượng điện trung bình hàng tháng hộ

(16)

Kết ghi vào tệp văn KETQUA.TXT theo quy cách sau : - Mỗi hộ gia đình chiếm dịng gồm thơng tin sau:

STT(2 dấu cách)Họ tên chủ hộ(2 dấu cách)Số lượng điện trung bình hàng tháng hộ

- Dịng : Số điện tiêu thụ trung bình phường

- Các dòng : Họ tên chủ hộ có số lượng điện tiêu thụ trung bình hàng tháng nhất, họ tên chủ hộ viết dòng

Giải :

type chuho=record ht:string[30];

sodien:array[1 12] of real; tb:real;

end;

var ch:array[1 50] of chuho; ch1:array[1 50] of chuho; i,j,m,n,t,k:integer;

min,tong:real; f1,f2,f3:text; begin

assign(f1,'ten.txt'); reset(f1);

i:=0;

while not eof(f1) begin

i:=i+1;

readln(f1,ch[i].ht); end;

n:=i; close(f1);

assign(f2,'sodien.txt'); reset(f2);

i:=0;

while not eof(f2) begin

i:=i+1; j:=0;

while not eoln(f2) begin

j:=j+1;

read(f2,ch[i].sodien[j]); end;

readln(f2); end;

(17)

close(f2); for i:=1 to n begin

tong:=0;

for j:=1 to m

tong:=tong+ch[i].sodien[j]; ch[i].tb:=tong/m;

end;

min:=ch[1].tb; for i:=1 to n if ch[i].tb<min then min:=ch[i].tb; t:=0;

for i:=1 to n if ch[i].tb=min then begin

t:=t+1;

ch1[t]:=ch[i]; end;

assign(f3,'ketquatiendien.txt'); rewrite(f3);

for i:=1 to n begin

write(f3,i,' ',ch[i].ht:10,' '); write(f3,ch[i].tb:3:1); writeln(f3);

end;

writeln(f3,'so dien tieu thu it nhat phuong la : ',min:3:1); writeln(f3,'Ten cac chu ho co luong dien tieu thu it nhat la :'); for k:=1 to t

writeln(f3,k,' ',ch1[k].ht:10); close(f3);

readln; end

Bài 17 : Vẽ sơ đồ thuật tốn viết chương trình Pascal thực cơng việc cho tốn sau :

Cho danh sách lớp :

TT Họ tên Kết học tập Phân loại

(18)

Phân loại A kết học tập >=8 Phân loại B kết học tập >=6 Phân loại C kết học tập >=5 Phân loại D kết học tập >=4 Phân loại E kết học tập < Ghi danh sách tệp

3 Mở tệp, đọc liệu vào nhớ

4 Một chương trình xếp lại danh sách tăng dần theo cột phân loại Hiện lại danh sách sau xếp

Giải :

program bailam; uses crt;

type sinhVien=record hoTen: string[50]; ketQua: real; loai: char; end;

var sv: array[1 100] of sinhVien; n: integer;

procedure nhap; var i,m: integer; f: file of sinhVien;

ds: array[1 100] of sinhVien; begin

{= Nhap danh sach sinh vien =} write('Nhap so sinh vien: '); readln(m);

writeln('Nhap thong tin sinh vien:'); for i:=1 to m

with ds[i] begin

writeln('* Sinh vien thu ',i); write('Ho ten: ');

readln(hoTen);

write('Ket qua hoc tap: '); readln(ketQua);

if ketQua>=8 then loai:='A' else if ketQua>=6 then loai:='B' else if ketQua>=5 then loai:='C' else if ketQua>=4 then loai:='D' else loai:='E';

end;

{= Ghi danh sach tep DANHSACH.INP =} assign(f,'DANHSACH.inp');

(19)

for i:=1 to m write(f,ds[i]); close(f); end;

procedure doc; var i: integer; f: file of sinhVien; begin

{= Doc du lieu tu tep DANHSACH.INP =} assign(f,'DANHSACH.inp');

reset(f); i:=0;

while not eof(f) begin

i:=i+1;

read(f,sv[i]); end;

n:=i; end;

procedure sapXep; var i,j: integer; tg: sinhVien; begin

{= Sap xep danh sach =} for i:=1 to n-1

for j:=i+1 to n

if sv[i].loai > sv[j].loai then begin

tg:=sv[i]; sv[i]:=sv[j]; sv[j]:=tg; end; end;

procedure hienThi; var i: integer; begin

for i:=1 to n with sv[i]

writeln(i,' ',hoTen:30,' ',ketQua:6:2,' ',loai:3); end;

(20)

sapXep; hienThi; readln end

Bài 18: Cho ma trận Anxm, vẽ sơ đồ thuật tốn viết chương trình có sử dụng chương trình để thực :

- Một chương trình nhập mảng A, ghi tệp - Mở lại tệp, đọc liệu vào nhớ

- Một chương trình xếp hàng ma trận A theo thứ tự tăng dần - Một chương trình ma trận xếp hình ghi tệp Giải :

var a,b:array[1 10,1 10] of real; i,j,m,n,k,t,l:integer;

f1,f2,f3:text; tg:real;

procedure nhap; begin

write('Nhap n : ');readln(n); write('Nhap m : ');readln(m); for i:=1 to n

for j:=1 to m begin

write('a[',i,',',j,']= '); readln(a[i,j]); end;

assign(f1,'abc.txt'); rewrite(f1);

for i:=1 to n begin

for j:=1 to m if j<m then

write(f1,a[i,j]:4:1,' ') else

write(f1,a[i,j]:4:1); writeln(f1);

end; close(f1);

writeln('Ma tran ghi la '); for i:=1 to n

begin

for j:=1 to m write(a[i,j]:4:1,' '); writeln;

(21)

procedure doc; begin

assign(f2,'abc.txt'); reset(f2);

i:=0;

while not eof(f2) begin

i:=i+1; j:=0;

while not eoln(f2) begin

j:=j+1;

read(f2,b[i,j]) end;

readln(f2) end;

t:=i;k:=j; close(f2); writeln;

write('Ma tran doc vao la '); for i:=1 to t

begin writeln;

for j:=1 to k write(b[i,j]:4:1,' '); end;

end;

procedure sapxep; begin

for i:=1 to t for j:=1 to k-1 for l:=j+1 to k if b[i,j]>b[i,l] then begin

tg:=b[i,j]; b[i,j]:=b[i,l]; b[i,l]:=tg; end;

end;

procedure hienra; begin

writeln;

(22)

begin

for j:=1 to k write(b[i,j]:4:1); writeln;

end;

assign(f3,'Kq.txt'); rewrite(f3);

for i:=1 to t begin

for j:=1 to k write(f3,b[i,j]:4:1); writeln(f3);

end; close(f3); end;

begin nhap; doc; sapxep; hienra; readln; end

Bài 19: Kết thi học kỳ lớp sinh viên cho tệp văn bản: tệp hoten.txt chứa họ tên sinh viên lớp họ tên sinh viên chiếm dòng tệp văn diem.txt ghi điểm trung bình (DTB) sinh viên, điểm sinh viên ghi dịng

Viết chương trình để:

- Tìm xếp loại sinh viên biết

Nếu DTB>=9, sinh viên xếp loại “xuat sac” Nếu 8<=DTB<9, sinh viên xếp loại “Gioi” Nếu 7<=DTB<8, sinh viên xếp loại “Kha” Nếu DTB<7, sinh viên xếp loại “Trung binh” - Tìm học bổng sinh viên biết

Nếu DTB>=9, sinh viên học bổng 240000 Nếu 8<=DTB<9, sinh viên học bổng 180000 Nếu 7<=DTB<8, sinh viên học bổng 120000 Nếu DTB<7, sinh viên không học bổng

- Sắp xếp lại bảng theo trật tự giảm dần điểm trung bình Đưa kết hình file ketqua.txt dạng sau

+ dòng : KẾT QUẢ THI HỌC KỲ CỦA LỚP

+ dòng trở dòng ghi: STT, dấu cách, Họ tên, dấu cách, điểm trung bình, dấu cách, Xếp loại, dấu cách, Học bổng sinh viên

Giải:

(23)

type sinhvien=record ht: string[50];

dtb: real;

xepLoai: string[20]; hocBong: longint; end;

var sv: array[0 100] of sinhvien; tg: sinhvien;

d, i, j, m, n: integer; f: text;

begin clrscr;

{===Lay du lieu tu tep====} assign(f,'hoten.txt');

reset(f); n:=0;

while (not eof(f)) begin

inc(n);

readln(f,sv[n].ht); end;

close(f);

assign(f,'diem.txt'); reset(f);

for i:=1 to n readln(f,sv[i].dtb); close(f);

{=== Xep Loai va Tinh Hoc Bong ===} for i:=1 to n

with sv[i] if dtb>=9 then begin

xepLoai:='Xuat Sac'; hocBong:=240000; end

else if dtb>=8 then begin

xepLoai:='Gioi'; hocBong:=180000; end

else if dtb>=7 then begin

xepLoai:='Kha'; hocBong:=120000; end

(24)

begin

xepLoai:='Trung Binh'; hocBong:=0;

end;

{=== Sap Xep ===} for i:=1 to n-1 for j:=i+1 to n

if sv[i].dtb<sv[j].dtb then begin

tg:=sv[i]; sv[i]:=sv[j]; sv[j]:=tg; end;

{=== In Ket Qua Ra File ===} assign(f,'ketqua.txt');

rewrite(f);

writeln(f,'KET QUA THI HOC KY CUA LOP:'); for i:=1 to n

with sv[i]

writeln(f,i:3,' ',ht:20,' ',dtb:6:1,xepLoai:15,' ',hocBong); close(f);

{===Dua ket qua man hinh===}

writeln('KET QUA THI HOC KY CUA LOP:'); for i:=1 to n

with sv[i]

writeln(i:3,' ',ht:20,' ',dtb:6:1,xepLoai:15,' ',hocBong); readln

end

Bài 20: Viết chương trình tính chu vi, diện tích đường trịn, hình chữ nhật, tam giác var r,s,cv,dai,rong,s1,cv1,s2,cv2,t1,t2,t3:real;

procedure tamgiac(x1,x2,x3:real;var CVtg,Stg:real); begin

CVtg:=x1+x2+x3;

Stg:=sqrt(CVtg/2*(CVtg/2-x1)*(CVtg/2-x2)*(CVtg/2-x3)); writeln('Chu vi tam giac la : ',CVtg:6:1);

writeln('Dien tich tam giac la : ',Stg:6:1); end;

procedure hcn(a:real;b:real;var Scn,CVcn:real); begin

Scn:=a*b; CVcn:=a+b;

(25)

end;

procedure DT(bk:real;var DT,Chv:real); begin

Chv:=3.14*bk*2; dt:=3.14*bk*bk;

writeln('Chu vi duong tron la : ',Chv:6:1); writeln('Dien tich duong tron la : ',DT:6:1); end;

begin

write('Nhap ban kinh duong tron : ');readln(r); DT(r,s,cv);

write('Nhap chieu rong hcn : ');readln(rong); write('Nhap chieu dai hcn : ');readln(dai); hcn(dai,rong,s1,cv1);

write('Nhap canh thu : ');readln(t1); write('Nhap canh thu : ');readln(t2); write('Nhap canh thu : ');readln(t3); tamgiac(t1,t2,t3,cv2,s2);

readln; end

Bài 21: Ngân hàng muốn cung cấp phần mềm mô hoạt động máy ATM, thông tin cần quản lý sau : Số PIN, số tài khoản, họ tên, CMTND, ngày làm thẻ, số dư Hãy khai báo kiểu ghi (Record) chứa thành phần nêu Lập sơ đồ thuật tốn viết chương trình ngơn ngữ lập trình pascal thực yêu cầu sau :

- Chương trình điều khiển (Chương trình chính)

- Một chương trình để nhập liệu thơng tin khách hàng từ bàn phím vào máy - Một chương trình lấy thơng tin số dư tài khoản hiển thị kết lên hình

với số PIN nhập từ bàn phím

- Một chương trình để rút tiền từ tài khoản theo quy trình : Yêu cầu nhập số PIN

2 Nếu số PIN, yêu cầu nhập số tiền cần rút Nếu số tiền cần rút nhỏ số dư trừ tiền số dư số tiền cần rút Thông báo giao dịch thành công

Giải :

type atm=record sopin:integer; sotk:integer; hoten:string[20]; cmtnd:string[10]; ngaylamthe:string[20]; sodu:real;

end;

var kh:array[1 50] of atm;

(26)

procedure nhap; begin

write('Nhap so khach hang : ');readln(n); for i:=1 to n

begin

write('Nhap so pin cua KH thu ',i,' : ');readln(kh[i].sopin); write('Nhap so tai khoan cua KH thu ',i,' : ');readln(kh[i].sotk); write('Nhap ho ten cua khach hang thu ',i,' : ');readln(kh[i].hoten); write('Nhap so cmtnd cua KH thu ',i,' : ');readln(kh[i].cmtnd);

write('Nhap lam the cua KH thu ',i,' : ');readln(kh[i].ngaylamthe); write('Nhap so du tai khoan cua KH thu ',i,' : ');readln(kh[i].sodu); end;

end;

procedure laythongtin; begin

writeln;

writeln('Chuong trinh lay tong tin khach hang tu so PIN'); write('Nhap so pin tai khoan : ');readln(PIN);

dem:=0;

for i:=1 to n

if PIN=kh[i].sopin then begin

k:=i;

dem:=dem+1; end;

if dem<>0 then

writeln('So du cua tai khoan la : ',kh[k].sodu:8:1) else

writeln('Khong co tai khoan nao co so PIN nhu vay'); end;

procedure ruttien; begin

writeln('Chuong trinh rut tien');

write('Nhap so pin tai khoan : ');readln(PIN1); dem1:=0;

for i:=1 to n

if PIN1=kh[i].sopin then begin

t:=i;

dem1:=dem1+1; end;

if dem1<>0 then begin

write('Nhap so tien can rut : ');readln(sotien); if sotien<=kh[t].sodu then

(27)

kh[t].sodu:=kh[t].sodu-sotien;

writeln('So tien lai cua quy khach la : ',kh[t].sodu:8:1); writeln('Giao dich cong');

end else

writeln('So tien lon hon so du tai khoan'); writeln('Giao dich ko cong');

end else

writeln('Khong co so PIN nay'); end;

begin nhap;

laythongtin; ruttien; readln; end

Bài 22: Lập sơ đồ thuật tốn viết chương trình ngơn ngữ lập trình Pascal để tính tổng mảng hai chiều số thực cách viết chương trình sau :

- Nhập số liệu cho mảng hai chiều từ bàn phím

- Xuất kết mảng hai chiều hình theo dạng ma trận - Tính tổng mảng hai chiều

Nội dung chương trình gồm :

1 Nhập số liệu cho mảng thứ nhập số liệu cho mảng thứ hai

2 Xuất kết mảng thứ xuất kết mảng thứ hai (ra hình) Tính tổng mảng xuất kết hình

Giải : (Dino) uses crt;

type mang=array[1 100,1 100] of integer; var a,b,t:mang;

i,j,m,n,m1,n1:integer;

Procedure nhap(var c:mang); Begin

for i:=1 to m for j:=1 to n begin

write('PT[',i,',',j,']= '); readln(c[i,j]);

end; end;

Procedure xuat(var c:mang); Begin

for i:=1 to m begin

(28)

end; end;

Procedure tong; Begin

for i:=1 to m for j:=1 to n t[i,j]:=a[i,j]+b[i,j]; End;

Begin clrscr;

write('Nhap so hang ma tran: '); readln(m);

write('Nhap so cot ma tran: '); readln(n);

writeln('Nhap ma tran thu nhat: '); nhap(a);

writeln('Nhap ma tran thu hai: '); nhap(b);

writeln('Ma tran thu nhat la: '); xuat(a);

writeln('Ma tran thu hai la: '); xuat(b);

tong;

writeln('Tong cua hai ma tran la: '); xuat(t);

readln; End

Bài 23: Cho danh sách chủ hộ sử dụng điện, chủ hộ biết thông tin : Mã số, họ tên, địa chỉ, điện thoại, loại hợp đồng (SH:sinh hoạt, SX:sản xuất, KD: kinh doanh), ngày ký hợp đồng Hãy lập thuật tốn viết chương trình ngơn ngữ lập trình pascal (dùng cấu trúc ghi) để thực yêu cầu sau :

- Nhập liệu cho vào máy từ bàn phím

- Tìm số hộ loại hợp đồng tách danh sách thành ba danh sách tương ứng với loại hợp đồng : SH, SX KD

- Đưa kết tìm hình Giải : (Dino)

uses crt;

type hodan=record maso:string[15]; ten,diachi:string[20]; dt,hd,ngay:string[15]; end;

var ho:array[1 100] of hodan; m,i,demsh,demsx,demkd:integer; Begin

Clrscr;

(29)

readln(m);

writeln('Nhap thong tin cac ho dan: '); demsh:=0; demsx:=0; demkd:=0; for i:=1 to m

with ho[i] begin

writeln('Ho thu ',i); write('Ma so: '); readln(maso); write('Ho ten: '); readln(ten); write('Dia chi'); readln(diachi); write('Dien thoai: '); readln(dt);

write('Loai hop dong: '); readln(hd);

write('Ngay dang ky: '); readln(ngay);

if hd='kd' then demkd:=demkd+1 else

if hd='sx' then demsx:=demsx+1 else

if hd='sh' then demsh:=demsh+1; end;

writeln('So ho hop dong kinh doanh la: ',demkd); writeln('So ho hop dong san xuat la: ',demsx); writeln('So ho hop dong sinh hoat la: ',demsh);

writeln('Hop dong':10,'Ten chu ho':20,'Dia chi':20,'SDT':12); write('Sinh hoat':10);

for i:=1 to m with ho[i] if hd='sh' then begin

write(ten:20,diachi:20,dt:12); writeln;

end;

writeln(' '); write('Kinh doanh':10);

for i:=1 to m with ho[i] if hd='kd' then begin

write(ten:20,diachi:20,dt:12); writeln;

end;

(30)

write('San xuat':10); for i:=1 to m with ho[i] if hd='sx' then begin

write(ten:20,diachi:20,dt:12); writeln;

end; readln; End

Bài 24: Cho bảng N môn học

TT Tên môn học Lý thuyết Bài tập Tổng số

Vẽ sơ đồ thuật tốn viết chương trình pascal có sử dụng kiểu mảng ghi để thực :

- Nhập mảng (TT, tên môn học, lý thuyết, tập) từ bàn phím, tính tổng số số tiết lý thuyết cộng số tiết tập, ghi nội dung bảng tệp

- Mở lại tệp, đọc liệu vào nhớ

- Tính tổng cột lý thuyết, tổng cột tập, tổng cột tổng số

- Tính phần trăm tổng số tập, tổng số lý thuyết so với tổng toàn số

- Hiện kết hình đưa tệp Giải : (Dino)

uses crt;

type monhoc = record stt:integer;

ten:string[30]; lt:integer; th:integer; ts:integer; end;

var mon:array[1 100] of monhoc; m,i, tonglt,tongth,tong:integer; f1:file of monhoc;

f2:text;

ptlt,ptth:real; Begin

Clrscr;

write('Nhap so mon hoc: '); readln(m);

writeln('Nhap thong tin tung mon hoc: '); assign(f1,'dulieu1.txt');

(31)

begin

with mon[i] begin

writeln('Mon thu: ',i); write('Ten mon hoc: '); readln(ten);

write('So gio ly thuyet: '); readln(lt);

write('So gio thuc hanh: '); readln(th);

ts:=lt+th; end;

write(f1,mon[i]); end;

Reset(f1);

for i:=1 to m read(f1,mon[i]); tonglt:=0 ;

tongth:=0; For i:=1 to m begin

tonglt:=tonglt+mon[i].lt; tongth:=tongth+mon[i].th; end;

tong:=tonglt+tongth; ptlt:=(tonglt/tong)*100 ; ptth:=(tongth/tong)*100; assign(f2,'dulieu2.txt'); rewrite(f2);

writeln('Tong cot so gio ly thuyet la: ',tonglt:3); writeln('Tong cot so gio thuc hanh la: ',tongth:3); writeln('Tong cot gio tong so la: ',tong:3);

writeln('So phan tram ly thuyet:',ptlt:3:1,'%'); writeln('So phan tram thuc hanh:',ptth:3:1,'%'); writeln(f2,'Tong cot so gio ly thuyet la: ',tonglt:3); writeln(f2,'Tong cot so gio thuc hanh la: ',tongth:3); writeln(f2,'Tong cot gio tong so la: ',tong:3);

writeln(f2,'So phan tram ly thuyet:',ptlt:3:1,'%'); writeln(f2,'So phan tram thuc hanh:',ptth:3:1,'%'); close(f1); close(f2);

readln; End

Bài 25: Một cửa hàng sách quản lý sách với thông tin sau :

Mã sách, tên sách, tên tác giả, thể loại, năm xuất bản, số lượng Hãy khai báo kiểu ghi thành phần nêu Lập sơ đồ thuật toán viết chương trình ngơn ngữ lập trình pascal thực công việc sau :

(32)

- Ghi lên file SACH.TXT danh sách toàn số sách cửa hàng theo thứ tự giảm dần số lượng

Giải : (Dino) uses crt;

type quyensach = record masach:string[20]; ten:string[30]; tacgia:string[25]; theloai:string[20]; namxb,sl:integer; end;

var sach:array[1 100] of quyensach; m,n,i,j,dem:integer;

temp:quyensach; f:text;

Begin clrscr;

Write('Nhap so quyen sach: '); readln(n);

writeln('Nhap thong tin tung quyen sach: '); For i:=1 to n

with sach[i] begin

writeln('Sach thu ',i); write('Ma sach: '); readln(masach); write('Ten sach: '); readln(ten);

write('Tac gia: '); readln(tacgia);

write('Nam xuat ban: '); readln(namxb);

write('So luong: '); readln(sl);

end;

write('Nhap so m: '); readln(m);

writeln('Danh sach nhung quyen sach co so luong be hon ',m); writeln('STT':4,'Ten sach':20);

for i:=1 to n

if sach[i].sl<m then writeln(i:4,sach[i].ten:20); assign(f,'sach.txt');

rewrite(f);

for i:=1 to n-1 for j:=i+1 to n

(33)

temp:=sach[i]; sach[i]:=sach[j]; sach[j]:=temp; end;

writeln(f,'STT':4,'Ten sach':20,'So luong':10); For i:=1 to n

with sach[i]

writeln(f,i:4,ten:20,sl:10); readln;

close(f); End

Bài 26: Hồ sơ thông tin sinh viên gồm thành phần sau :

Mã sinh viên, họ tên, năm sinh, quê quán, giới tính Hãy khai báo kiểu ghi chứa thành phần nêu Lập sơ đồ thuật tốn viết chương trình ngơn ngữ lập trình pascal thực yêu cầu sau :

- Một chương trình điều khiển (chương trình chính)

- Một chương trình để nhập liệu thơng tin sinh viên từ bàn phím vào máy - Một chương trình để tìm kiếm đưa thơng tin sinh viên có mã sinh viên

được nhập từ bàn phím

- Một chương trình tạo file lưu thông tin hồ sơ sinh viên theo thứ tự giảm dần năm sinh

Giải : uses crt;

type sinhvien=record msv:string[10]; ten,que:string[25]; ns:integer;

gt:string[5]; end;

var sv:array[1 100] of sinhvien; m,i,j:integer;

f:text;

temp:sinhvien; procedure nhap; begin

Clrscr;

write('Nhap so sinh vien: '); readln(m);

writeln('Nhap thong tin sinh vien'); for i:=1 to m

with sv[i] begin

writeln('Sinh vien thu ',i); write('Ma SV: ');

(34)

write('Ho ten: '); readln(ten);

write('Nam sinh: '); readln(ns);

write('Que quan: '); readln(que);

write('Gioi tinh: '); readln(gt);

end; end;

Procedure tracuu; var kt:boolean; temp1:string[10]; x:integer;

begin

write('Nhap Ma sv can tra cuu: '); readln(temp1);

kt:=false;

for i:=1 to m

if sv[i].msv=temp1 then begin

kt:=true; x:=i; end;

if kt=true then with sv[x] begin

writeln('Thong tin hoc sinh co ma sv la ',temp1); writeln('Ho ten: ',ten);

writeln('Nam sinh: ',ns); writeln('Gioi tinh: ',gt); writeln('Que quan: ',que); end

else writeln('Ma sv ban vua nhap khong co'); end;

procedure ghitep; begin

assign(f,'abc.txt'); rewrite(f);

for i:=1 to m-1 for j:=i+1 to m

if sv[i].ns>sv[j].ns then begin

(35)

writeln(f,'STT':4,'Ho ten':25,'Nam sinh':10);

{Minh chi hien thi tung nay,ai thich hien thi them thi them vao nhe} for i:=1 to m

with sv[i]

writeln(f,i:4,ten:25,ns:10); close(f);

end; Begin Nhap; tracuu; ghitep; readln; End

Bài 27: Cho trước danh sách tên đội bóng tham gia mùa giải kết thi đấu đội Kết thi đấu đội ghi ma trận vuông gồm kết thắng (3 điểm), hòa (1 điểm), thua (0 điểm) tổ chức sau : Các phần tử thuộc đường chéo gán 0, phần tử aij khác có ý nghĩa :

aij= đội i thắng đội j aij= đội i hòa đội j aij= đội i thua đội j

Hãy viết chương trình để thực yêu cầu sau : - Một chương trình nhập liệu từ bàn phím - Một chương trình tính điểm đội

- Một chương trình xếp theo thứ tự đội sau mùa giải theo thứ tự giảm dần

- Một chương trình ghi kết vào tệp chương trình hình theo định dạng sau :

Dòng : KET QUA BONG DA

Dòng : Số đội bóng tham gia mùa giải

Các dòng dòng ghi : STT, hai dấu cách, số điểm - Một chương trình gọi chương trình

Giải : Uses crt;

Var i,j,m,Temp1:integer; f1:text;

Temp:string[25];

Doi:array[1 20] of string[25]; S:array[1 20] of integer; A:array[1 20,1 20] of integer; Procedure Nhap;

Begin

Write('Nhap so doi: '); Readln(m);

For i:=1 to m Begin

(36)

End;

Writeln('Nhap ket qua tung tran dau theo ma tran vuong: '); For i:=1 to m

For j:=1 to m Begin

Write('A[',i,j,']= '); Readln(A[i,j]); End;

End;

Procedure Tinhdiem; Begin

Fillchar(S,Sizeof(s),0); {Gan tat ca phan tu S = 0} For i:=1 to m

For j:=1 to m

If i<>j then {Khong tinh duong cheo chinh} Begin

If A[i,j]=3 then S[i]:=S[i]+3 Else

If A[i,j]=1 then Begin

S[i]:=S[i]+1; {Vi doi hoa nen so diem ca cung se tang len 1} S[j]:=S[j]+1;

End

Else S[j]:=S[j]+3; {A[i,j]=0 > Doi J duoc diem, I dc diem} End;

End;

Procedure Sapxep; Begin

For i:=1 to m-1 For j:=i+1 to m If S[i]<S[j] then Begin

Temp:=Doi[i]; Doi[i]:=Doi[j]; Doi[j]:=Temp; Temp1:=S[i]; S[i]:=S[j]; S[j]:=Temp1; End;

End;

Procedure Ghitep; Begin

Assign(f1,'Ketquathidau.txt'); Rewrite(f1);

Writeln(f1,'KET QUA THI DAU');

Writeln(f1,'STT':4,'TEN DOI BONG':25,'SO DIEM':10); For i:=1 to m

(37)

Write(f1,i:4,Doi[i]:25,S[i]:10); Writeln(f1);

End; Close(f1); End;

Procedure Inra; Begin

Writeln('KET QUA THI DAU'); Writeln('So doi bong tham gia: ',m);

Writeln('STT':4,'TEN DOI BONG':25,'SO DIEM':10); For i:=1 to m

Begin

Write(i:4,Doi[i]:25,S[i]:10); Writeln;

(38)

Website HOC247 cung cấp môi trường học trực tuyến sinh động, nhiều tiện ích thơng minh, nội dung giảng biên soạn công phu giảng dạy giáo viên nhiều năm kinh nghiệm, giỏi kiến thức chuyên môn lẫn kỹ sư phạm đến từ trường Đại học trường chuyên danh tiếng

I. Luyện Thi Online

- Luyên thi ĐH, THPT QG: Đội ngũ GV Giỏi, Kinh nghiệm từ Trường ĐH THPT danh tiếng xây dựng khóa luyện thi THPTQG các mơn: Tốn, Ngữ Văn, Tiếng Anh, Vật Lý, Hóa Học Sinh Học - Luyện thi vào lớp 10 chun Tốn: Ơn thi HSG lớp 9 luyện thi vào lớp 10 chuyên Toán

trường PTNK, Chuyên HCM (LHP-TĐN-NTH-GĐ), Chuyên Phan Bội Châu Nghệ An trường Chuyên khác TS.Trần Nam Dũng, TS Pham Sỹ Nam, TS Trịnh Thanh Đèo Thầy Nguyễn Đức Tấn

II. Khoá Học Nâng Cao HSG

- Toán Nâng Cao THCS: Cung cấp chương trình Tốn Nâng Cao, Tốn Chun dành cho em HS THCS

lớp 6, 7, 8, u thích mơn Tốn phát triển tư duy, nâng cao thành tích học tập trường đạt điểm tốt kỳ thi HSG

- Bồi dưỡng HSG Tốn: Bồi dưỡng phân mơn Đại Số, Số Học, Giải Tích, Hình Học Tổ Hợp dành cho học sinh khối lớp 10, 11, 12 Đội ngũ Giảng Viên giàu kinh nghiệm: TS Lê Bá Khánh Trình, TS Trần Nam Dũng, TS Pham Sỹ Nam, TS Lưu Bá Thắng, Thầy Lê Phúc Lữ, Thầy Võ Quốc Bá Cẩn đơi HLV đạt thành tích cao HSG Quốc Gia

III. Kênh học tập miễn phí

- HOC247 NET: Website hoc miễn phí học theo chương trình SGK từ lớp đến lớp 12 tất môn học với nội dung giảng chi tiết, sửa tập SGK, luyện tập trắc nghiệm mễn phí, kho tư liệu tham khảo phong phú cộng đồng hỏi đáp sôi động

- HOC247 TV: Kênh Youtube cung cấp Video giảng, chuyên đề, ôn tập, sửa tập, sửa đề thi miễn phí từ lớp đến lớp 12 tất mơn Tốn- Lý - Hố, Sinh- Sử - Địa, Ngữ Văn, Tin Học Tiếng Anh

Vững vàng tảng, Khai sáng tương lai

Học lúc, nơi, thiết bi – Tiết kiệm 90%

Học Toán Online Chuyên Gia

Ngày đăng: 21/04/2021, 09:15

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w