01/10/2018, 12:19
Hỏi thuật toán của bài tập
Ai đó cho em hỏi về bài tập này.
Bài tập pascal cực khó , giải bằng ngôn ngữ khác cũng được, chủ yếu lấy cái thuật toán.
Cho mảng gồm 20 phần tử, chọn đại một phần tử ở giữa rồi tính tổng từ đó đến mảng phần tử a[1], rồi tính từ chỗ chọn đại đó đến phần tử mảng cuối cùng. Dữ liệu mảng có thể random hoặc nhập thủ công. Em làm thế này, không đúng, ai đó cho em ý kiến.
program hello;
uses crt;
var i, tong, tong1: longint;
a: array[1..20] of integer;
begin
clrscr;
tong:=0;
tong1:=0;
{ this is a comment
for i:=1 to 20 do
begin
write('Nhap phan tu so: ',i, ' cua mang a');
readln(a[i]);
end;
}
for i:=random(a[i]) to 20 do a[i]:=random(20);
i:=0;
for i:=random(a[i]) downto a[1] do
begin
tong:=tong+a[i];
end;
for i:=1 to a[20] do
begin
tong1:=tong+a[i];
end;
'
begin
writeln('Tong tu phan tu ', tong);
writeln('Tong1 tu phan tu ', tong1);
end;'
readln;
end.
Bài liên quan
MapReduce thôi, có gì đâu
can you show me what to do?
Tổng quan mô hình lập trình MapReduce
Khái niệm : Mapreduce là một mô hình lập trình, thực hiện quá tình xử lý tập dữ liệu lớn. Mapreduce gồm 2 pha : map và reduce. Hàm Map : Các xử l...
[quote=“tuan.io, post:1, topic:57764”]
Bài tập pascal cực khó
[/quote]
Bạn phải gọi thêm randomize ở đầu chương trình (Sau begin ấy) để pascal khởi tạo bộ trộn số. Nếu không randomize thì khi gọi random(n) nó lúc nào cũng trả về 0.
Thứ hai, bạn nên biết là bài này yêu cầu 1 vị trí random cố định, nghĩa là chỉ lấy 1 lần random.
Code của bạn là lấy nhiều lần random nên mỗi lần sẽ cho vị trí khác nhau
Theo mình bạn nên thêm 1 viết VT (vị trí) để lưu random vị trí giữa. Rồi cho for tính tổng T1 từ vị trí 1 đến vt, rồi T2 từ vt đến hết.