Tin học Bài tập Pascal

minh triều

Học sinh mới
Thành viên
30 Tháng ba 2019
14
3
6
32
Đồng Tháp
thcs bình thạnh

Attachments

  • IMG_0266.JPG
    IMG_0266.JPG
    104.1 KB · Đọc: 104
  • IMG_0267.JPG
    IMG_0267.JPG
    126.3 KB · Đọc: 75

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
216
18
Quảng Trị
Trường TH&THCS Hải Ba
anh em xem baì tập pascal này và giups mình giải với
Mình chỉ nói thuật toán thôi vì dài nhưng không khó
Bài 1:
Sử dụng các câu lệnh If để xét hai trường hợp là a='a4' và a='a3'. Với từng trường hợp thì mình lại sd lệnh if để xét th số tờ rồi xét th số mặt. Sau đó lấy 1 biến lưu giá trị sau khi nhân tương ứng
Bài 2:
Hừm...Mình nghĩ cách đơn giản nhất là tạo thêm 1 mảng giống với mảng ban đầu, sau đó xóa các pt giống nhau, rồi sắp xếp mảng giảm dần, từ đó xác định đc pt lớn thứ 3 và lưu vào một biến x chẳng hạn. Đem so sánh x với các pt của mảng ban đầu rồi lưu vị trí,cộng kq và đếm là đc

Bạn thử làm theo sườn này là ra rồi
 
Last edited:
  • Like
Reactions: Lê thanh Dũng

minh triều

Học sinh mới
Thành viên
30 Tháng ba 2019
14
3
6
32
Đồng Tháp
thcs bình thạnh
Mình chỉ nói thuật toán thôi vì dài nhưng không khó
Bài 1:
Sử dụng các câu lệnh If để xét hai trường hợp là a='a4' và a='a3'. Với từng trường hợp thì mình lại sd lệnh if để xét th số tờ rồi xét th số mặt. Sau đó lấy 1 biến lưu giá trị sau khi nhân tương ứng
Bài 2:
Hừm...Mình nghĩ cách đơn giản nhất là tạo thêm 1 mảng giống với mảng ban đầu, sau đó xóa các pt giống nhau, rồi sắp xếp mảng giảm dần, từ đó xác định đc pt lớn thứ 3 và lưu vào một biến x chẳng hạn. Đem so sánh x với các pt của mảng ban đầu rồi lưu vị trí,cộng kq và đếm là đc

Bạn thử làm theo sườn này là ra rồi
Bạn có thể viết code lun dc không? Mình mới vào pascal nên củng còn yếu! Mong các bạn hỗ trợ
 

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
216
18
Quảng Trị
Trường TH&THCS Hải Ba
Bạn có thể viết code lun dc không? Mình mới vào pascal nên củng còn yếu! Mong các bạn hỗ trợ
Vừa vào pascal mà giải đễ rồi :D, h bạn cần gấp không vậy, muộn rồi, để sáng mai mình làm đc ko bạn, sáng mai mình đi học thêm nên chắc trưa nếu rãnh mình sẽ làm
 

minh triều

Học sinh mới
Thành viên
30 Tháng ba 2019
14
3
6
32
Đồng Tháp
thcs bình thạnh
Ohm củng dc nửa! Bạn nhớ giải dùm mình là dc rồi! Thanks bạn trước! Mà có thể kb zalo dc ko bạn? Mình mún học hỏi ! Nếu dc bạn add sdt: 0919995622! Thanks bạn nhiều
 

nguyen tran thanh nha

Học sinh
Thành viên
10 Tháng sáu 2018
107
53
36
20
Bà Rịa - Vũng Tàu
thcs kim long
bài 3 đây k biết có tối ưu k nữa
Mã:
var i,n,t,max,max1,x,vt:longint;f,g:text;  l:real;
    a:array[1..100000000] of longint;
begin
     assign(f,'banthangdep.inp');reset(f);
     assign(g,'banthangdep.out');rewrite(g);
     readln(f,n);     max:=0;max1:=0;t:=0;
     for i:=1 to n do
     begin
          read(f,a[i]);
          t:= t+a[i];
          if max<a[i] then max:=i;
     end;
     readln(f);
     for i:=1 to n do
     begin
          read(f,x);
          a[i]:=a[i]+x; t:=t+x;
          if max1<a[i] then begin max1:=a[i];vt:=i;end;
      end;
      l:=max1/t *100;
     writeln(g,vt);
     writeln(g,max1,' ',l:0:1);
     if vt=max then write(g,1) else write(g,0);
     close(f);
     close(g);
end.
 

minh triều

Học sinh mới
Thành viên
30 Tháng ba 2019
14
3
6
32
Đồng Tháp
thcs bình thạnh
bài 3 đây k biết có tối ưu k nữa
Mã:
var i,n,t,max,max1,x,vt:longint;f,g:text;  l:real;
    a:array[1..100000000] of longint;
begin
     assign(f,'banthangdep.inp');reset(f);
     assign(g,'banthangdep.out');rewrite(g);
     readln(f,n);     max:=0;max1:=0;t:=0;
     for i:=1 to n do
     begin
          read(f,a[i]);
          t:= t+a[i];
          if max<a[i] then max:=i;
     end;
     readln(f);
     for i:=1 to n do
     begin
          read(f,x);
          a[i]:=a[i]+x; t:=t+x;
          if max1<a[i] then begin max1:=a[i];vt:=i;end;
      end;
      l:=max1/t *100;
     writeln(g,vt);
     writeln(g,max1,' ',l:0:1);
     if vt=max then write(g,1) else write(g,0);
     close(f);
     close(g);
end.
Code này đã chạy đúng rồi phải ko bạn?
 

minh triều

Học sinh mới
Thành viên
30 Tháng ba 2019
14
3
6
32
Đồng Tháp
thcs bình thạnh
Thanks bạn nhé! Để mình về nhà rồi chạy thử xem sao! Bạn có thể giải giúp mình 2 bài còn lại dc ko?
 

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
216
18
Quảng Trị
Trường TH&THCS Hải Ba
Thanks bạn nhé! Để mình về nhà rồi chạy thử xem sao! Bạn có thể giải giúp mình 2 bài còn lại dc ko?
Bai 1:
upload_2019-3-31_13-44-9.png
Bai 2:
Mã:
Var
Begin
 assign(fi,'muaqua.inp');reset(fi);
 assign(fo,'muaqua.out');rewrite(fo);
 readln(fi,n);m:=n;
 For i:=1 to n do read(fi,a[i]);
 For i:=1 to n do b[i]:=a[i];
 For i:=1 to m-1 do
  For j:=i+1 to m do
   if a[i]=a[j] then
   begin
    For k:=i to m-1 do
     a[k]:=a[k+1];
    m:=m-1;
   end;
  For i:=1 to m-1 do
   For j:=i+1 to m do
    if a[i]<a[j] then
     begin
      tg:=a[i];a[i]:=a[j];a[j]:=tg;
     end;
   x:=a[3];t:=0;k:=0;d:=d+1;
  For i:=1 to n do
   if x=a[3] then
    begin
     t:=t+a[i];k:=k+1;vt[k]:=i;d:=d+1;
    end;
   writeln(fo,d);
   For i:=1 to k do write(vt[i],' ');
   write(fo,t);
   Close(Fi);close(fo);
end.
Bài 1 thì mình check rồi nhưng bài 2 thì chưa, bạn check xem đúng ko có gì báo với mình để mình sửa và thêm phần khai báo . Mà đó cách đơn giản nên chắc chưa có tối ưu đâu
 
Last edited:

minh triều

Học sinh mới
Thành viên
30 Tháng ba 2019
14
3
6
32
Đồng Tháp
thcs bình thạnh
Bai 1:
View attachment 107334
Bai 2:
Mã:
Var
Begin
 assign(fi,'muaqua.inp');reset(fi);
 assign(fo,'muaqua.out');rewrite(fo);
 readln(fi,n);m:=n;
 For i:=1 to n do read(fi,a[i]);
 For i:=1 to n do b[i]:=a[i];
 For i:=1 to m-1 do
  For j:=i+1 to m do
   if a[i]=a[j] then
   begin
    For k:=i to m-1 do
     a[k]:=a[k+1];
    m:=m-1;
   end;
  For i:=1 to m-1 do
   For j:=i+1 to m do
    if a[i]<a[j] then
     begin
      tg:=a[i];a[i]:=a[j];a[j]:=tg;
     end;
   x:=a[3];t:=0;k:=0;d:=d+1;
  For i:=1 to n do
   if x=a[3] then
    begin
     t:=t+a[i];k:=k+1;vt[k]:=i;d:=d+1;
    end;
   writeln(fo,d);
   For i:=1 to k do write(vt[i],' ');
   write(fo,t);
   Close(Fi);close(fo);
end.
Bài 1 thì mình check rồi nhưng bài 2 thì chưa, bạn check xem đúng ko có gì báo với mình để mình sửa và thêm phần khai báo . Mà đó cách đơn giản nên chắc chưa có tối ưu đâu
BẠN có thể viết ra code đầy đủ dc ko? Giúp mình nha!
 

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
216
18
Quảng Trị
Trường TH&THCS Hải Ba
BẠN có thể viết ra code đầy đủ dc ko? Giúp mình nha!
Bài 1 hở bạn? Ầu, mình viết bài đó xong rồi up ảnh lên, sau đó mình xóa và viết code của bài 2 lên đó luôn nên h chỉ có lưu bài 2 chứ bài 1 thì mất rồi, bn thông cảm
 

minh triều

Học sinh mới
Thành viên
30 Tháng ba 2019
14
3
6
32
Đồng Tháp
thcs bình thạnh
Last edited by a moderator:
Top Bottom