PDA

View Full Version : lam tiep minh voi!!



greencolour
19-04-2005, 21:33
mấy bạn giải tiếp giùm mình bài tập mảng trong pascal:
nhập vào mảng A có n phần tử nguyên:
a) tính tổng các phần tử dương
b) tính hiệu các phần tử âm
cảm ơn nhiếu!!!

green_apples002
19-04-2005, 21:51
Nè bạn ơi, theo mình trước hết ta kiểm tra mảng nhập vào xem phần tử nào dương, phần tử nào âm, cho phần tử âm vào 1 mảng nữa, dương vào 1 mảng ,sau đó tính tổng hay hiệu từng mảng đó!!1:D:D:D:D
Còn nếu bạn cần chương trình thì mình sẽ post sau vậy!

greencolour
20-04-2005, 09:21
cam on ,green_apples002
minh giai duoc cau a nhung con cau b minh hong biet giai nhu the nao
ban co the giai gium minh cau b duoc khong ,cam on nhieu

green_apples002
20-04-2005, 19:16
Nhưng mà cho mình hỏi tính hiệu các số âm là sao vậy? ví dụ như a[1]=-3, a[2]=-4 ,a[5]=-8 tính hiệu là a[1]-a[2]-a[5] hả bạn !

lee_huynh306
21-04-2005, 15:22
Mình có cách giải quyết bài này như sau :


Const n = 10; { Bạn có thể thay đổi số này}
Var
m: array [1..n] of integer;
t,h:longint; {tổng và hiệu}
i,c:word;
Procedure get_data;
begin
{Làm bất cứ gì bạn muốn để có dữ liệu}
end;
begin
get_data;
t:=0;
h:=0;
c:=0;
for i:=1 to n do
if m[i] > 0 then t:=t+m[i]
else
if m[i]<0 then
begin
inc(c);
if c=1 then h:=m[i]
else
h:=h-m[i];
end;
{ Đến đây bạn đã có tổng trong t và hiệu trong h, cứ in nó ra là xong}
end.

Giải thích: do đầu bài yêu cầu tính hiệu các số âm cho nên hiệu này sẽ là số âm thứ nhất trừ cho tất cả các số âm còn lại.
Mình đã sửa ở lệnh if, vì không thêm vào dòng đó sẽ dẫn đến sự tính toán sai nếu chuỗi nhập vào xuất hiện số 0 trước khi xuất hiện một số âm.
Bạn ithichyou mến, giải thuật của mình và của Green_apples002 là giống hệt nhau. Bạn hãy thử chạy chương trình với một dãy số bất kỳ xem, rồi tính lại bằng tay và so sánh !!

ithichyou
28-04-2005, 12:29
Mình nghĩ cách tính hiệu của bạn green_apples002 thì đúng hơn .

ghosthd
12-05-2005, 08:09
Đề bài không rõ dàng, tốt nhất nên hỏi lại người ra đề.