Nội dung của Bài 16: Ví dụ làm việc với tệp dưới đây với mục đích nhằm giúp các em hiểu thêm các thao tác cơ bản làm việc với tệp thông qua giải một số bài toán đơn giản. Mời các em cùng theo dõi nội dung chi tiết của bài học.
Cho ba điện trở R1, R2, R3. Sử dụng cả ba điện trở ta có thể tạo ra năm điện trở tương đương bằng cách mắc các sơ đồ nêu ở hình 1 dưới đây:
Hình 1. Sơ đồ mắc điện trở
Mỗi cách mắc sẽ cho một điện trở tương đương khác nhau. Ví dụ:
\(R=\frac{R1^{*}R2^{*}R3}{R1^{*}R2+R1^{*}R3+R2^{*}R3}\)
Cho tệp văn bản RESIST.DAT gồm nhiều dòng, mỗi dòng chứa ba số thực R1, R2 và R3, các số cách nhau một dấu cách, 0 < R1, R2, R3 \(\leq\) 105.
Chương trình sau đọc dữ liệu từ tệp RESIST.DAT, tính các điện trở tương đương và ghi kết quả ra tệp văn bản RESIST.EQU, mỗi dòng ghi năm điện trở tương đương của ba điện trở ở dòng dữ liệu vào tương ứng.
Gợi ý làm bài:
Cài đặt chương trình:
program Dientro;
var a:array[1..5] of real;
r1,r2,r3:real;
i:integer;
f1,f2:text;
begin
assign(f1,’RESIST.DAT’);
reset(f1);
assign(f2,’RESIST.EQU’);
rewrite(f2);
while not eof(f1) do
begin
readln(f1,r1,r2,r3);
a[1]:=r1*r2*r3/(r1*r2+r1*r3+r2*r3);
a[2]:=r1*r2/(r1+r2)+r3;
a[3]:=r1*r3/(r1+r3)+r2;
a[4]:=r2*r3/(r2+r3)+r1;
a[5]:=r1+r2+r3;
for i:=1 to 5 do write(f2,a[i]:9:3,’ ‘);
writeln(f2)
end;
close(f1); close(f2)
end.
Thầy hiệu trưởng tổ chức cho giáo viên và học sinh của trường đi cắm trại, sinh hoạt ngoài trời ở vườn quốc gia Cúc Phương. Để lên lịch đến thăm khu trại các lớp, thầy Hiệu trưởng cần biết khoảng cách từ trại của mình (ở vị trí có toạ độ (0;0)) đến trại các giáo viên chủ nhiệm lớp. Mỗi lớp có một khu trại, vị trí trại của mỗi thầy chủ nhiệm đều có tọa độ nguyên (x;y), được ghi vào tệp văn bản TRAI.TXT (như vậy, tệp TRAI.TXT chứa các cặp số nguyên liên tiếp, các số cách nhau bởi dấu cách và không kết thúc bằng dấu xuống dòng).
Chương trình sau sẽ đọc từ tệp TRAI.TXT các cặp toạ độ, tính và đưa ra màn hình khoảng cách (với độ chính xác hai chữ số sau dấu chấm thập phân) từ trại mỗi giáo viên chủ nhiệm lớp đến trại của thầy hiệu trưởng.
Gợi ý làm bài:
program Khoang_Cach;
var d:real;
f:text;
x,y:integer;
begin
assign(f,’TR¹I.TXT’);
reset(f);
while not eof(f) do
begin
read(f,x,y);
d:=sqrt(x*x+y*y);
writeln('Khoang cach:' d:10:2)
end;
close(f);
end.
Sau khi học xong Bài 16: Ví dụ làm việc với tệp, các em cần ghi nhớ:
Các em có thể hệ thống lại nội dung kiến thức đã học được thông qua bài kiểm tra Trắc nghiệm Tin học 11 Bài 16 cực hay có đáp án và lời giải chi tiết.
Hãy viết lệnh tính điện trở tương đương Rtd cho sơ đồ mạch điện sau:
Hãy viết lệnh tính điện trở tương đương Rtd cho sơ đồ mạch điện sau:
Câu 3-5: Mời các em đăng nhập xem tiếp nội dung và thi thử Online để củng cố kiến thức về bài học này nhé!
Các em có thể xem thêm phần hướng dẫn Giải bài tập Tin học 11 Bài 16để giúp các em nắm vững bài học và các phương pháp giải bài tập.
Bài tập 1 trang 89 SGK Tin học 11
Bài tập 2 trang 89 SGK Tin học 11
Bài tập 3 trang 89 SGK Tin học 11
Bài tập 4 trang 89 SGK Tin học 11
Trong quá trình học tập nếu có thắc mắc hay cần trợ giúp gì thì các em hãy comment ở mục Hỏi đáp, Cộng đồng Tin học DapAnHay sẽ hỗ trợ cho các em một cách nhanh chóng!
Chúc các em học tập tốt và luôn đạt thành tích cao trong học tập!
-- Mod Tin Học 11 DapAnHay
Hãy viết lệnh tính điện trở tương đương Rtd cho sơ đồ mạch điện sau:
Hãy viết lệnh tính điện trở tương đương Rtd cho sơ đồ mạch điện sau:
Trong mặt phẳng hệ tọa độ Descartes vuông góc, cho 2 điểm M(x1,y1) và N(x2,y2). Hãy viết câu lệnh tính khoảng cách d từ điểm M đến N:
Trong mặt phẳng hệ tọa độ Descartes vuông góc, cho điểm M(x, y). Hãy viết câu lệnh tính khoảng cách d từ điểm M đến gốc tọa độ O:
Cho biết f1 là biến tệp văn bản và tệp ketqua.txt có nội dung đang lưu trữ là: Tich 2 so la: 20. Hãy cho biết sau khi thực hiện đoạn lệnh sau:
a := 10; b :=2;
assign(f1, 'ketqua.txt');
rewrite(f1);
writeln(f1, 'Thuong 2 so la: ', a/b);
thì tệp ketqua.txt có nội dung gì?
Nêu một số trường hợp cần phải dùng tệp.
Trong sơ đồ thao tác với tệp, khi cần nhập dữ liệu từ tệp phải dùng những thao tác nào?
Tại sao cần phải có câu lệnh mở tệp trước khi đọc/ghi tệp?
Tại sao phải dùng câu lệnh đóng tệp sau khi đã kết thúc ghi dữ liệu vào tệp?
Họ và tên
Tiêu đề câu hỏi
Nội dung câu hỏi
Câu trả lời của bạn
uses crt;
const fi='tamgiac.dat';
var f1:text;
a,b,c:array[1..100]of real;
n,i,j,k,dem:integer;
begin
clrscr;
assign(f1,fi); reset(f1);
n:=0;
while not eof(f1) do
begin
inc(n);
readln(f1,a[n],b[n],c[n]);
end;
dem:=0;
for i:=1 to n do
for j:=1 to n do
for k:=1 to n do
if (i=j) and (j=k) then
begin
if (a[i]+b[j]>c[k]) and (a[i]+c[k]>b[j]) and (c[k]+b[j]>a[i]) then
begin
if (a[i]=b[j]) and (a[i]<>c[k]) and (b[j]<>c[k]) then inc(dem);
if (a[i]=c[k]) and (a[i]<>b[j]) and (c[k]<>b[j]) then inc(dem);
if (b[j]=c[k]) and (b[j]<>a[i]) and (c[k]<>a[i]) then inc(dem);
end;
end;
writeln(dem);
readln;
end.
Câu trả lời của bạn
const fi='daysoZ.inp';
fo='vd1.txt';
var f1,f2:text;
z:array[1..100]of integer;
i,dem:integer;
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
dem:=0;
while not eoln(f1) do
begin
inc(dem);
read(f1,z[dem]);
end;
for i:=1 to dem do
write(f2,z[i]:4);
close(f1);
close(f2);
end.
Câu trả lời của bạn
uses crt;
const fi='lop11a1.txt';
var f1:text;
st:array[1..255]of string;
n,i,dem,d,j,dem1,kq:integer;
a:shortstring;
b:array[1..1000]of integer;
begin
clrscr;
assign(f1,fi); rewrite(f1);
write('Nhap so ban trong Group:'); readln(n);
for i:=1 to n do
begin
write('Ban thu ',i,' ten:'); readln(st[i]);
end;
writeln(f1,'Danh sach cac ban trong Group la: ');
for i:=1 to n do
writeln(f1,'Ban thu ',i,' ten la: ',st[i]);
dem:=0;
for i:=1 to n do
begin
a:=st[i];
d:=length(a);
dem1:=0;
for j:=1 to d do
if a[j]=' ' then dem1:=dem1+1;
begin
inc(dem);
b[dem]:=dem1+1;
end;
end;
kq:=0;
for i:=1 to dem do
kq:=kq+b[i];
writeln(f1,'So tu trong day ten vua nhap la: ',kq);
close(f1);
readln;
end.
Câu trả lời của bạn
Program hotrotinhoc_hoc247;
const fi='D:\bai1.txt';
var a,b: integer;
procedure ip;
begin
assign(f,fi);
reset(f);
read(f,a,b);
close(f);
end;
begin
ip;
write(a*a+b*b);
readln
end.
Câu trả lời của bạn
Program DapAnHay;
const fi='dl.inp';
fo='kq.out';
var f: text;
d: integer;
s: string;
procedure ip;
begin
assign(f,fi);
reset(f);
read(f,s);
close(f);
end;
procedure out;
begin
assign(f,fo);
rewrite(f);
d:=0;
for i:=1 to length(s) do
if s[i]=' ' then d:=d+1;
if d>0 then write(f,'Xau co dau cach') else write(f,'Xau khong co dau cach');
close(f);
end;
begin
ip;
out;
end.
Câu trả lời của bạn
Program DapAnHay;
const fi='sn.inp';
var f: text;
i,n,d: integer;
a: array[1..32000] of integer;
function nt(x: integer): boolean;
var j: integer;
begin
nt:=true;
if (x=2) or (x=3) then exit;
nt:=false;
if (x=1) or (x mod 2=0) or (x mod 3=0) then exit;
j:=5;
while j<=trunc(sqrt(x)) do
begin
if (x mod j=0) or (x mod (j+2)=0) then exit;
j:=j+6;
end;
nt:=true;
end;
procedure ip;
begin
assign(f,fi);
reset(f);
n:=1;
while not(eof(f)) do
begin
read(f,a[n]);
inc(n);
end;
d:=0;
for i:=1 to n-1 do
if nt(a[i]) then d:=d+1;
close(f);
end;
begin
ip;
write(d);
readln
end.
-Dữ liệu vào : max.inp - số n, mảng A[n]
-Dữ liệu ra: max.out - số lớn nhất của mảng
Max.inp Max.out
6 9
2 3 5 4
9 7
Câu trả lời của bạn
const fi='min.inp';
fo='min.out';
var f1,f2:text;
a:array[1..100]of integer;
i,n,max:integer;
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
readln(f1,n);
for i:=1 to n do
read(f1,a[i]);
max:=a[1];
for i:=1 to n do
if max<a[i] then max:=a[i];
writeln(f2,'So lon nhat la: ',max);
close(f1);
close(f2);
end.
- Đi vào : min.inp - số n, mảng A
- Đi ra : min.out - số min, vtrí số min
Câu trả lời của bạn
const fi='min.inp';
fo='min.out';
var f1,f2:text;
a,b:array[1..100]of integer;
i,n,min,dem:integer;
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
readln(f1,n);
for i:=1 to n do
read(f1,a[i]);
min:=a[1];
for i:=1 to n do
if min>a[i] then min:=a[i];
writeln(f2,'So nho nhat la: ',min);
dem:=0;
for i:=1 to n do
if min=a[i] then
begin
dem:=dem+1;
b[dem]:=i;
end;
writeln(f2,'Vi tri dau tien cua So nho nhat trong day A la: ',b[1]);
close(f1);
close(f2);
end.
Câu trả lời của bạn
uses crt;
const fi='bai.inp';
var f1:text;
m,n:real;
begin
clrscr;
assign(f1,fi); rewrite(f1);
write('m='); readln(m);
writeln(f1,'m=',m:4:2);
write('n='); readln(n);
writeln(f1,'n=',n:4:2);
writeln(f1,m:4:2,'+',n:4:2,'=',m+n:4:2);
close(f1);
readln;
end.
Câu trả lời của bạn
const fi='songuyen.txt';
fo='ketqua.txt';
var f1,f2:text;
a:array[1..100]of integer;
n,i,t:integer;
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
n:=0;
while not eoln(f1) do
begin
inc(n);
read(f1,a[n]);
end;
t:=0;
for i:=1 to n do
if a[i]>0 then t:=t+a[i];
writeln(f2,t);
close(f1);
close(f2);
end.
Câu trả lời của bạn
uses crt;
const fi='baitap.txt';
var f1:text;
a,b:real;
begin
clrscr;
assign(f1,fi); reset(f1);
readln(f1,a,b);
writeln('Tong cua hai so la: ',a+b:4:2);
writeln('Tich cua hai so la: ',a*b:4:2);
close(f1);
readln;
end.
1. Đưa ra màn hình các số nguyên âm ở trong tệp
2. Hãy tính TỔNG các số chia hết cho 3 và 5 ở trong tệp và ghi kết quả vào tệp 'SOLOUT'
Câu trả lời của bạn
const fi='so.inp';
fo='so.out';
var f1,f2:text;
a:array[1..100]of integer;
dem,i,t:integer;
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
dem:=0;
while not eof(f1) do
begin
inc(dem);
readln(f1,a[dem]);
end;
writeln(f2,'Cac so nguyen am la: ');
for i:=1 to dem do
if a[i]<0 then write(f2,a[i]:4);
writeln(f2);
t:=0;
for i:=1 to dem do
if (a[i] mod 5=0) and (a[i] mod 3=0) then t:=t+a[i];
writeln(f2,'Tong cac so chia het cho 3 va 5 la: ',t);
close(f1);
close(f2);
end.
1.Hãy đếm và đưa ra màn hình số lượng các số chia hết cho 5 ở trong tệp .
2.Hãy tạo tệp ' KQ.OUT' chứa các số chính phương trong tệp ' BAITAP.TXT'
Câu trả lời của bạn
uses crt;
const fi='baitap.txt';
fo='kq.qut';
var f1,f2:text;
a:array[1..100]of integer;
dem,i,n:integer;
begin
clrscr;
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
n:=0;
while not eoln(f1) do
begin
inc(n);
read(f1,a[n]);
end;
dem:=0;
for i:=1 to n do
if a[i] mod 5=0 then dem:=dem+1;
writeln('So luong cac so chia het cho 5 la: ',dem);
for i:=1 to n do
if sqrt(a[i])=trunc(sqrt(a[i])) then write(f2,a[i]:4);
close(f1);
close(f2);
readln;
end.
Câu trả lời của bạn
Program DapAnHay;
var f: text;
begin
assign(f,'lop 11c8.TxT');
rewrite(f);
write(f,'toi yeu VN');
close(f);
end.
Câu trả lời của bạn
uses crt;
var a,t1,t2,t3,t4:real;
i:integer;
begin
clrscr;
t1:=1;
for i:=1 to 3 do
t1:=t1*2;
t2:=1;
for i:=1 to 5 do
t2:=t2*3;
t3:=1;
for i:=1 to 8 do
t3:=t3*4;
t4:=1;
for i:=1 to 12 do
t4:=t4*5;
a:=t1+t2+t3+t4;
writeln('Ket qua la: ',a:0:0);
readln;
end.
Câu trả lời của bạn
const fi='songuyen.txt';
fo='ketqua.txt';
var f1,f2:text;
a:array[1..100]of integer;
n,i,t:integer;
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
n:=0;
while not eoln(f1) do
begin
inc(n);
read(f1,a[n]);
end;
t:=0;
for i:=1 to n do
if a[i]>0 then t:=t+a[i];
writeln(f2,t);
close(f1);
close(f2);
end.
Câu trả lời của bạn
Program DapAnHay;
var s: string;
begin
write('Nhap xau : '); readln(s);
for i:=1 to length(s) do
if s[i] in ['0'..'9'] then write(s[i]);
readln
end.
Câu trả lời của bạn
uses crt;
var a:array[1..100]of integer;
i,n,x,dem:integer;
begin
clrscr;
write('Nhap n='); readln(n);
for i:=1 to n do
begin
write('A[',i,']='); readln(a[i]);
end;
write('Nhap x='); readln(x);
dem:=0;
for i:=1 to n do
if a[i]=x then inc(dem);
writeln('Trong mang co ',dem,' so ',x);
readln;
end.
Câu trả lời của bạn
uses crt;
var a:array[1..100]of integer;
i,n,dem:integer;
begin
clrscr;
write('Nhap n='); readln(n);
for i:=1 to n do
begin
write('A[',i,']='); readln(a[i]);
end;
dem:=0;
for i:=1 to n do
if a[i] mod 2=0 then inc(dem);
writeln('So luong so chan la: ',dem);
readln;
end.
a. Các số nguyên có giá trị lớn hơn 20 và nhỏ hơn 50.
b. Nhập vào 1 số nguyên A, cho biết có bao nhiêu số lớn hơn A.
c. Cho biết xâu nào dài hơn và dài hơn bao nhiêu kí tự.
d. Nếu xâu thứ 2 dài hơn 8 kí tự thì xóa 2 kí tự cuối cùng của xâu đó.
Câu trả lời của bạn
uses crt;
var st1,st2:string;
b:array[1..10]of integer;
i,a,dem,d1,d2:integer;
begin
clrscr;
for i:=1 to 10 do
begin
write('Nhap so thu ',i,'='); readln(b[i]);
end;
write('Nhap xau thu nhat:'); readln(st1);
write('Nhap xau thu hai:'); readln(st2);
writeln('Cac so nguyen co gia tri lon hon 20 va nho hon 50 la: ');
for i:=1 to 10 do
if (b[i]>20) and (b[i]<50) then write(b[i]:4);
writeln;
write('Nhap a='); readln(a);
dem:=0;
for i:=1 to 10 do
if b[i]>a then inc(dem);
writeln('So phan tu lon hon ',a,' trong day la: ',dem);
d1:=length(st1);
d2:=length(st2);
if d1>d2 then writeln('Xau ',st1,' dai hon xau ',st2,' va dai hon ',d1-d2,' ki tu');
if d1=d2 then writeln('Hai xau co do dai bang nhau');
if d1<d2 then writeln('Xau ',st2,' dai hon xau ',st1,' va dai hon ',d2-d1,' ki tu');
if d2>8 then
begin
if (st2[d2-1] in ['0'..'9']) and (st2[d2] in ['0'..'9']) then
begin
st2[d2-1]:='a';
st2[d2]:='b';
delete(st2,d2-1,2);
end
else delete(st2,d2-1,2);
writeln(st2);
end
else writeln('Xau ',st2,' khong dai hon 8 ki tu');
readln;
end.
0 Bình luận
Để lại bình luận
Địa chỉ email của hạn sẽ không được công bố. Các trường bắt buộc được đánh dấu *