Bài tập Pascal kiểu file có lời giải
Làm việc với File trong Pascal 1. Một file văn bản trên đĩa có tên là SON.INF chứa đúng một dòng bao gồm hai số tự nhiên n, m được viết cách nhau một dấu cách. Sau đây là một ví dụ về file này:4 5. …
Làm việc với File trong Pascal
Assign(f,'son.inf'); Reset(f);
Em hãy viết đoạn chương trình nhập hai số này từ file trên và in kết quả ra màn hình.
assign(f,'sod.inf');reset(f);
- Dòng đầu tiên của DATA ghi số n.
- n dòng tiếp theo của file ghi n số, mỗi số trên một dòng.
Viết chương trình nhập số liệu của dãy trên vào một mảng và in ra dữ liệu của mảng trên sau khi đã sắp lại theo thứ tự tăng dần.
n, i, j, jmax,atg,: integer;
a: array[1..100] of integer;
assign(f, 'data.txt'); reset(f);
For i:=1 to n do Readln(f,a[i]);
If (a[j]>a[jmax]) then j:=jmax;
For i:=1 to n do Writeln(a[i]);
- Dòng đầu tiên của DATA ghi số n.
- Dòng tiếp theo của file ghi n số, các số cách nhau bởi tối thiểu một dấu cách.
Viết chương trình nhập số liệu của dãy trên vào một mảng và in ra dữ liệu của mảng trên
a:array[1..100] of integer;
assign(f,'data.txt'); reset(f);
For i:=1 to n do Read(f,a[i]);
For i:=1 to n do Write(a[i]:8);
a:array[1..100] of integer;
assign(f,'data.txt'); reset(f);
For i:=1 to n do Writeln(a[i]);
a:array[1..100] of integer;
assign(f,'data.txt'); reset(f);
For i:=1 to n do Write(a[i]:8);
- Dòng đầu tiên ghi hai số N, M cách nhau bởi dấu cách.
- N dòng tiếp theo ghi số liệu của N hàng, mỗi dòng bao gồm M số cách nhau bởi dấu cách.
Sau đây là ví dụ một file như vậy:
Viết chương trình nhập dữ liệu từ file trên vào một mảng số N x M.
a:array[1..100,1..100] of integer;
assign(f,'data.txt'); reset(f);
For j:=1 to m do Read(f,a[i,j]);
For j:=1 to m do Write(a[i,j]:8);
Bui Quang Than 14 K
Tran Minh Quang 16 G
Le Van Minh15 T
Dữ liệu ghi trong file này có ý nghĩa như sau:
- Dòng đầu tiên ghi đúng một số n chỉ số lượng học sinh trong lớp.
- n dòng tiếp theo mỗi dòng ghi dữ liệu của một học sinh.
- Mỗi học sinh được ghi các dữ liệu sau:
Họ và tên: 20 ký tự; Tuổi: 3 ký tự; Xếp loại: 1 ký tự
Hãy viết chương trình nhập dữ liệu học sinh từ file trên và đưa vào các mảng dữ liệu tương ứng, tên file cũng được đọc từ bàn phím.
ht: array[1..100] of string[20];
t: array[1..100] of string[3];
xl: array[1..100] of char;
Write('Tên file cần đọc: '); Readln(fn);
Readln(f, ht[i], t[i], xl[i]);
Writeln(ht[i],t[i]:4,xl[i]:3);
ht: array[1..100] of string[20];
t: array[1..100] of string[3];
xl: array[1..100] of char;
Write('Tên file cần đọc: ');Readln(fn);
Readln(f,ht[i],t[i],xl[i]);
Writeln(ht[i],t[i]:4,xl[i]:3);
assign(f, 'son.inf'); reWrite(f);
assign(f, 'son.inf'); reset(f);
assign(f, 'sod.inf'); reWrite(f);
assign(f, 'sod.inf'); reset(f);
Readln(f, m); Readln(f, n);
a:array[1..100] of integer;
Write('Nhập số n: ');Readln(n);
Writeln('Nhập dãy n số : ');
Begin Write('a[',i:2,'] = ');Readln(a[i]); End;
assign(f,'data.txt'); rewrite(f);
Begin Writeln(f,a[i]); End;
assign(f, 'data.txt'); reset(f);
For i:=1 to n do Readln(f,a[i]);
For i:=1 to n do Writeln(a[i]);
a:array[1..100] of integer;
Write('Nhập số n: ');Readln(n);
Writeln('Nhập dãy n số: ');
Begin Write('a[',i:2,'] = ');Readln(a[i]); End;
assign(f,'data.txt'); rewrite(f);
Begin Write(f,a[i],' '); End;
assign(f,'data.txt'); reset(f);
For i:=1 to n do Read(f,a[i]);
For i:=1 to n do Writeln(a[i]);
a: array[1..100] of integer;
Write('Nhập số n: '); Readln(n);
Writeln('Nhập một dãy số n: ');
assign(f,'data.txt'); rewrite(f);
Write(' a[',i:2,'] = '); Readln(a[i]);
assign(f,'data.txt'); reset(f);
While not(seekeoln(f)) do
ht: array[1..100] of string[20];
t: array[1..100] of string[3];
xl: array[1..100] of char;
Write('Tên file cần đọc: '); Readln(fn);
Write('Số lượng học sinh: '); Readln(n);
Write('Nhập họ và tên: '); Readln(ht[i]);
For j:=l+1 to 20 do ht[i]:=ht[i]+' ';
Write('Nhập tuổi: '); Readln(t[i]);
For j:=l+1 to 3 do t[i]:=' '+t[i];
Write('Nhập xếp loại: '); Readln(xl[i]);
Writeln(f, ht[i], t[i], xl[i]);
Readln(f, ht[i], t[i], xl[i]);
Writeln(ht[i], t[i]:4, xl[i]:3);
- Dòng đầu tiên ghi số tự nhiên N (N <20).
- N dòng tiếp theo, mỗi dòng ghi một dãy số, các số cách nhau bởi dấu cách. Số lượng phần tử của các dãy có thể khác nhau.
Viết chương trình nhập số liệu từ file trên, sắp xếp n dãy trên theo thứ tự tăng dần và ghi kết quả ra file OUTPUT.TXT có dạng tương tự như file nhập liệu.
n, m, i, j, k, kmax: integer;
a: array[1..100] of real;
assign(fin, 'input.txt'); reset(fin);
assign(fou, 'output.txt'); rewrite(fou);
Readln(fin, n); Writeln(fou, n);
j:=1; {đọc dòng thứ i của input.txt}
While not(seekeoln(fin)) do
{sắp xếp lại dòng thứ i đó}
If (a[k]>a[kmax]) then kmax:=k;
{ghi dòng đó ra output.txt}
assign(fou,'output.txt'); reset(fou);
While not(seekeoln(fou)) do
Nguyen Van Minh Nam
Tran Quang Thu Nam
Bui Van Ngo Nam
...................................................
Trong đó họ và tên học sinh được ghi trên độ dài 20 ký tự, 3 ký tự tiếp theo sẽ ghi Nam hoặc Nu chỉ giới tính của học sinh đó. Số dòng của file này sẽ bằng số học sinh trong lớp.
Em hãy viết chương trình thực hiện các công việc sau:
Nhập tên File số liệu từ bàn phím, sau đó nhập dữ liệu từ File vào bộ nhớ máy tính.
Thực hiện việc sắp xếp lại danh sách học sinh trong lớp sao cho các bạn Nữ lên trước, các bạn Nam sau.
Nhập tên File kết quả từ bàn phím và ghi danh sách lớp sau khi đã sắp xếp lại ra File đó theo mẫu giống như lúc đọc vào.
a: array[1..100] of string[23];
Write('Đọc số liệu từ file:'); Readln(tfin);
assign(fin, tfin); reset(fin);
While not(seekeof(fin)) do
If (copy(a[i],21,3)='Nam') then
If (copy(a[j],21,3)>='Nu') then
Begin atg:=a[i]; a[i]:=a[j]; a[j]:=atg; End;
Write('Ghi số liệu ra file: '); Readln(tfou);
assign(fou,tfou); rewrite(fou);
For i:=1 to n do Writeln(fou, a[i]);
assign(fou,tfou); reset(fou);
Begin Readln(fou,atg); Writeln(atg); End;
- Đếm xem trong lớp có bao nhiêu bạn là Nam, bao nhiêu bạn là Nữ.
- Kiểm tra xem lớp có hai bạn nào cùng họ hay không? Nếu có liệt kê tất cả các bạn có chung họ.
n, i, j, snam, snu: integer;
a: array[1..100] of string[23];
(*==========================================*)
Function ho(hvt:string):string;
While (hvt[i]=' ') do inc(i);
(*==========================================*)
Write('Đọc số liệu từ file: '); Readln(tfin);
assign(fin, tfin); reset(fin);
While not(seekeof(fin)) do
If (copy(a[i],21,3)='Nam') then snam:=snam+1
Writeln('Số nam: ',snam,'. Số nữ : ',snu,'.');
If (ho(a[j])=ho(a[i]))and(j<>i) then t:=true;
Nguyen Van Minh Nam
Bui Van Ngo Nam
Tran Quang Thu Nam
a: array[1..100] of string[23];
(*==========================================*)
Function thutu(hvt:string):string;
For i:=1 to 23 do hvt[i]:=upcase(hvt[i]);
If (copy(hvt,21,3)='NAM') then g:='b' else g:='a';
While (hvt[i]=' ') do dec(i);
Begin tg:=ten[i]; ten[i]:=ten[l-i+1]; ten[l-i+1]:=tg; End;
thutu:=g+ten+copy(hvt,1,l1);
(*==========================================*))
Write('Đọc số liệu ghi từ file: '); Readln(tfin);
assign(fin, tfin); reset(fin);
While not(seekeof(fin)) do
If (thutu(a[i])>thutu(a[j])) then {sắp xếp lại}
Begin atg:=a[i];a[i]:=a[j];a[j]:=atg; End;
Write('Ghi số liệu ra file: '); Readln(tfou); {ghi ra file tfou}
assign(fou, tfou); rewrite(fou);
For i:=1 to n do Writeln(fou, a[i]);
assign(fou,tfou); {kiểm tra} reset(fou);
Begin Readln(fou, atg); Writeln(atg); End;
- Biến đổi xâu con 11 thành 00.
- Biến đổi xâu con 010 thành 000.
Hãy chỉ một cách biển đổi xâu đã cho thành xâu có toàn 0. Kết quả thể hiện trong file OUTPUT.TXT như sau:
Dòng đầu tiên của OUTPUT.TXT chứa xâu ban đầu, sau đó mỗi dòng là một xâu tiếp theo sau một phép biến đổi, xâu cuối cùng là xâu toàn 0.đổi xâu nhị phân này về dạng toàn số 0. Các phép biến đổi có thể chỉ là một trong các loại sau:
(*==========================================*)
Procedure ghi1(i:integer);
(*==========================================*)
Procedure ghi2(i:integer);
(*==========================================*)
assign(fin, 'input.txt'); reset(fin);
If ((st[l]='1')and(st[l-1]='0'))or((st[1]='1')and(st[2]='0')) then
Writeln('Không thể biến đổi được!')
assign(fou,'output.txt'); rewrite(fou);
If (st[l]='1')and(st[l-1]='1') then ghi1(l-1);
Repeat { biến đổi xâu con '11' }
Repeat {biến đổi xâu con '010' }
assign(fou,'output.txt'); reset(fou);
While not(seekeof(fou)) do
Readln(fou,st); Writeln(st);
Em hãy viết chương trình in ra file mới có tên BLMOI.PAS chương trình Pascal trên sao cho thỏa mãn điều kiện mỗi lệnh phải nằm trên một hàng.
assign(fin, 'p4216.pas'); reset(fin);
assign(fou, 'blmoi.pas'); rewrite(fou);
While not(seekeof(fin)) do
st1:=copy(st1, p+1, l-p);
Writeln(fou, st1); close(fin); close(fou);
assign(fou, 'blmoi.pas'); reset(fou);
While not(seekeof(fou)) do
Begin Readln(fou, st); Writeln(st); End;
Video liên quan
Bài tập Pascal kiểu file có lời giải
Related post
Home
Nhà thiết kế WebTôi là admin trang go plus là một người có đam mê với Blogspot, kinh nghiệm 5 năm thiết kế ra hàng trăm mẫu Template blogpsot như" Bán hàng, bất động sản, landing page, tin tức...