[PASCAL] Chương trình con

  • Thread starter iloveyou247_tintin
  • Ngày gửi
  • Replies 5
  • Views 8,339

I

iloveyou247_tintin

[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.

Cho mảng T gồm 20 phần tử thuộc số nguyên. Viết chương trình thực hiện yêu cầu sau:
a.) Viết thủ tục nhập giá trị cho mảng T từ bàn phím.
b.) Viết hàm tính trung bình cộng cho các phần tử chẵn trong mảng T.
c.) Hiển thị các phần tử mảng T và giá trị TBC tính ở câu b.

Check hộ :

Mã:
uses crt;
var   A:array[1..100] of integer;
Procedure Nhap(var T:array of integer);
                 var i:integer;
                 begin
                         for i:= 1 to 20 do
                              begin
                                     write('Nhap so thu ',i,' :'); readln(T[i]);
                              end;
                 end;
function tbc(T: array of integer):real;
             var j,S,d:integer;
                   begin
                          S:=0; d:=0;
                          for j:=1 to 20 do
                                if T[j] mod 2 =0 then
                                   begin
                                          S:=S+T[j];
                                          d:=d+1;
                                   end;
                           tbc:=S/d
                    end;
begin
clrscr;
Nhap(A);
write('TBC :',tbc(A));
readln
end.

==================

Sau khi sửa như mikelhpdatke thì chương trình vẫn cho ra tbc là số lẻ. Mặc dù nhập toàn bộ mảng là 2 nhưng tbc lại là 1.9000000000E+00
Không biết sao nữa
 
Last edited by a moderator:
M

mikelhpdatke

Thủ tục nhập edit lại thế này:

Mã:
Procedure Nhap([COLOR=Red]Var[/COLOR] T:array of integer);
                 var i:integer;
                 begin
                         for i:= 1 to 20 do
                              begin
                                     write('Nhap so thu ',i,' :'); readln(T[i]);
                              end;
                 end;

Vì sau khi ra khỏi chương trình con này, biến của chương trình con bị thay đổi nên dùng "var" để sau khi ra khỏi CTC giá trị sẽ lưu lại.

Nói một cách dễ hiểu hơn thì : Nếu chỉ khai báo biến CTC như bạn thì sau khi ra khỏi CTC, giá trị của biến vẫn giữ nguyên khi chưa chạy CTC này
 
M

mikelhpdatke

Mã:
uses crt;
var   A:array[1..100] of integer;
Procedure Nhap(T:array of integer);
                 var i:integer;
                 begin
                         for i:= 1 to 20 do
                              begin
                                     write('Nhap so thu ',i,' :'); readln(T[i]);
                              end;
                 end;
function tbc(T: array of integer):real;
             var j,S,d:integer;
                   begin
                          S:=0; d:=0;
                          for j:=1 to 20 do
                                if T[j] mod 2 =0 then
                                   begin
                                          S:=S+T[j];
                                          d:=d+1;
                                   end;
                           tbc:=S/d
                    end;
begin
clrscr;
Nhap(A);
write('TBC :',tbc(A)[COLOR="Red"]:5:3[/COLOR]);
readln
end.



Edit như trên tức là: "Dành" cho 5 cột để viết giá trị của biến tbc và làm tròn đến chữ số thập phân thứ 3
 
A

angleofdarkness

Vậy khi chương trình lớn có các CTC thì dùng proceduce khi nhập dữ liệu còn dùng funxtion khi xử lí, tình toán trên dữ liệu, đúng hay sai?
 
M

mikelhpdatke

Vậy khi chương trình lớn có các CTC thì dùng proceduce khi nhập dữ liệu còn dùng funxtion khi xử lí, tình toán trên dữ liệu, đúng hay sai?
Procedure thường dùng để thực hiện các câu lệnh. Function thì nó còn có chức năng như biến.
Còn dùng thế nào thì tùy vào thuật toán của mỗi người
 
D

devilin

ai giúp đỡ bài này vs (chủ yếu là câu 4)
Cho số tự nhiên N (N<=50). Hãy viết chương trình thực hiện:
Câu 1: Nhập số N, sau đó nhập N số nguyên vào từ bàn phím. Thứ tự của các số gọi là chỉ số.
Câu 2: Hãy tính trong dãy số trên có bao nhiêu số dương chẵn.
Câu 3: Tìm (các) chỉ số của giá trị âm lớn nhất của dãy số nếu có.
Câu 4: Tìm tất cả các dãy con dài nhất các số khác không cùng dấu.
- Đưa kết quả thực hiện ra màn hình dưới dạng thích hợp.

mong mọi người sớm giúp đỡ
 
Top Bottom