Tin học bài tập pascal lớp 9

bùi thị xuân mai

Học sinh
Thành viên
28 Tháng bảy 2019
42
13
31
19
Quảng Nam
thcs võ thị sáu
[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Ngày sinh của mỗi học sinh được ghi bằng một số có 8 chữ số. Trong đó hai số đầu ghi ngày, hai số tiếp theo ghi tháng và bốn số cuối ghi năm. Viết chương trình cho phép nhập ngày sinh của N học sinh. Rồi thực hiện:
a. Trong N học sinh vừa nhập có bạn nào sinh nhật vào ngày 22 tháng 01 không?
b. Lớp chỉ tổ chức sinh nhật chung khi có hai người trở lên có cùng ngày sinh nhật. Cho biết những ngày lớp tổ chức sinh nhật?
c. Cho biết người trẻ nhất có ngày sinh là bao nhiêu?
d. Cho biết người (được nhập) thứ k lớn thứ mấy trong lớp?
 

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
Ngày sinh của mỗi học sinh được ghi bằng một số có 8 chữ số. Trong đó hai số đầu ghi ngày, hai số tiếp theo ghi tháng và bốn số cuối ghi năm. Viết chương trình cho phép nhập ngày sinh của N học sinh. Rồi thực hiện:
a. Trong N học sinh vừa nhập có bạn nào sinh nhật vào ngày 22 tháng 01 không?
b. Lớp chỉ tổ chức sinh nhật chung khi có hai người trở lên có cùng ngày sinh nhật. Cho biết những ngày lớp tổ chức sinh nhật?
c. Cho biết người trẻ nhất có ngày sinh là bao nhiêu?
d. Cho biết người (được nhập) thứ k lớn thứ mấy trong lớp?

Bài này là thuộc dạng mảng xâu, mình chỉ viết code chính của từng câu thôi bạn. Bạn làm luôn các phần còn lại nha bạn.
a.
Mã:
kt:=false;
     For i:=1 to n do
         Begin
              st:=copy(a[i],1,4);
              If st='2201' then begin kt:=true;break;end;
         End;
     If kt=true then writeln('trong so',n,'hoc sinh co ban sinh ngay 22 thang 1');
     Else writeln('khong co ban nao sinh ngay 22 thang 01);
b.
Mã:
{Dùng hàm Fillchar để gán giá trị 1 cho mảng D)
For i:=1 to n-1 do
         For j:=i+1 to n do
             Begin
                  If a[i]=a[j] then
                     begin
                           d[i]:=d[i]+1;
                           For m:=j to n-1 do a[m]:=a[m+1];
                           n:=n-1;
                           write('ngay',copy(a[i],1,2),'thang',copy(a[i],3,2,'  ');
                     end;
c.
Mã:
For i:=1 to n-1 do
         Begin
              s:=copy(a[i],5,4);st:=copy(a[i+1],5,4);
              Val(s,n,code);Val(st,min,code);
              If n>min then min:=n
              Else If n=min then
                   begin
                         s:=copy(a[i],3,2);st:=copy(a[i+1],3,2);
                         Val(s,n,code);Val(st,min,code);
                         If n>min then min:=n
                         Else If n=min then
                              begin
                                   s:=copy(a[i],1,2);st:=copy(a[i+1],1,2);
                                   Val(s,n,code);Val(st,min,code);
                                   If n>min then min:=n;
                              end;
                   end;
         end;
d. Nếu người thứ k cùng ngày/tháng/năm sinh thì so sánh bằng cách nào bạn nhỉ? Nếu không có trường hợp này thì đơn giản hơn. Bạn lưu lại giá trị a[k] rồi sắp xếp mảng cũng được :)
 

Đắng!

Giải Ba event Thế giới Sinh học 2
Thành viên
17 Tháng mười một 2018
767
2,258
256
Bà Rịa - Vũng Tàu
Minh Dạm
Bài này là thuộc dạng mảng xâu, mình chỉ viết code chính của từng câu thôi bạn. Bạn làm luôn các phần còn lại nha bạn.
a.
Mã:
kt:=false;
     For i:=1 to n do
         Begin
              st:=copy(a[i],1,4);
              If st='2201' then begin kt:=true;break;end;
         End;
     If kt=true then writeln('trong so',n,'hoc sinh co ban sinh ngay 22 thang 1');
     Else writeln('khong co ban nao sinh ngay 22 thang 01);
b.
Mã:
{Dùng hàm Fillchar để gán giá trị 1 cho mảng D)
For i:=1 to n-1 do
         For j:=i+1 to n do
             Begin
                  If a[i]=a[j] then
                     begin
                           d[i]:=d[i]+1;
                           For m:=j to n-1 do a[m]:=a[m+1];
                           n:=n-1;
                           write('ngay',copy(a[i],1,2),'thang',copy(a[i],3,2,'  ');
                     end;
c.
Mã:
For i:=1 to n-1 do
         Begin
              s:=copy(a[i],5,4);st:=copy(a[i+1],5,4);
              Val(s,n,code);Val(st,min,code);
              If n>min then min:=n
              Else If n=min then
                   begin
                         s:=copy(a[i],3,2);st:=copy(a[i+1],3,2);
                         Val(s,n,code);Val(st,min,code);
                         If n>min then min:=n
                         Else If n=min then
                              begin
                                   s:=copy(a[i],1,2);st:=copy(a[i+1],1,2);
                                   Val(s,n,code);Val(st,min,code);
                                   If n>min then min:=n;
                              end;
                   end;
         end;
d. Nếu người thứ k cùng ngày/tháng/năm sinh thì so sánh bằng cách nào bạn nhỉ? Nếu không có trường hợp này thì đơn giản hơn. Bạn lưu lại giá trị a[k] rồi sắp xếp mảng cũng được :)
Nếu là tớ, tớ sẽ dùng record cho vui :D
Mã:
type T_HS = record
Ngay, Thang, Nam: integer;
                  end;
var HS : T_HS;
Sau đó xử lý nó sẽ vui hơn.....chứ dùng bình thường thì đơn giản, nhưng nếu có nhiều thứ khác liên quan thì làm vậy nó không thể kiểm soát được.
Pascal mình cũng nên hướng đối tượng đi chứ để nó mãi là "Pascal" thì chán lắm.
 

trà nguyễn hữu nghĩa

Cựu Mod Vật Lí |Cây bút Thơ|Thần tượng VH
Thành viên
14 Tháng năm 2017
3,974
7,623
744
22
Phú Yên
Trường THPT Lương Văn Chánh
Nếu là tớ, tớ sẽ dùng record cho vui :D
Mã:
type T_HS = record
Ngay, Thang, Nam: integer;
                  end;
var HS : T_HS;
Sau đó xử lý nó sẽ vui hơn.....chứ dùng bình thường thì đơn giản, nhưng nếu có nhiều thứ khác liên quan thì làm vậy nó không thể kiểm soát được.
Pascal mình cũng nên hướng đối tượng đi chứ để nó mãi là "Pascal" thì chán lắm.
Hoặc là dùng object để thể hiện sự pro trước giáo viên
Mã:
type THS = object
Ngay, Thang, Nam: integer;
Procedure LayThongTin;
                    end;
var HS: array[1..100] of THS;
Rồi khi cần thông tin thì mình khai lại:
Mã:
for i := 1 to N do
HS[i].LayThongTin;
Giống như hướng đối tượng trong C# vậy đó :D
 
Top Bottom