Giúp tìm Min Max dãy n số thực trong turbo pascal?

rcp

Administrator
Dùng mảng một chiều thôi nhé :p mình mới học lệnh If và vòng lặp thui.
Futaro
 

Viết Sang

Moderator
Xin lỗi vì đã trả lời chậm trể, có phải đề của Futaro là như thế này không?
nhập dãy a gồm n số nguyên ,tìm giá trị nhỏ nhất (min) và giá trị lớn nhất(max) . Rồi in ra theo thứ tự tăng dần các số trong đoạn [min,max]
Viết Sang cũng đang học lớp 11, và VS chưa xem qua bài tập như vậy, đây là cách làm của VS nghiên cứu trên mạng!
Mã:
min=1;
max=1;
for i:1 to spt do 
begin
if max<a[i] then begin max:=a[i]; b[max]:=max;
if min>a[i] then  begin  min:= a[i];b[min]:= min;
for min to max do 
writeln(b[i]);
end.
 

rcp

Administrator
Với đề tài :
Giúp tìm Min Max dãy n số thực trong turbo pascal?
Dùng mảng một chiều thôi nhé :p mình mới học lệnh If và vòng lặp thui.
Futaro



thì logic của câu trả lời là:

Dùng một biến tạm là max hoặc min. So sánh lần lượt với các phần tử của mảng.

  • max: nếu max nhỏ hơn phân tử đang so sánh thì gán max bằng phần tử đó, không thì bỏ qua.
  • min thì ngược lại.

thì câu trả lời của VS là có đúng ko???? . VS nên suy nghĩ ...




Nhắc nhở:
1) khi có "begin" thì bao giờ cũng phải có "end">:p
2) thế nào là mãng một chiều????:-??
3) mọi sự việc copy trên mạng, chưa chắc là đúng. [-X



Do đó khi mún bit đúng hay sai, VS phải :

  • cho vào một method
  • nhét vào trong một Program,
  • compile
  • và execute Program đó
  • cuối cùng xem kết quả ra trên màn hình (writeln)
  • so sánh với đề bài
  • nếu đúng thì xong giai đoạn một.:-"


rcp để comments (//) cho VS xem lại...

...
min=1;
max=1;

// lần lượt với các phần tử của mảng.
for i:1 to spt do
begin

...// So sánh
...if max<a then begin max:=a; b[max]:=max;

...// So sánh
...if min>a then begin min:= a;b[min]:= min;

...for min to max do
.......// viết ra kết quả ra trên màn hình
......writeln(b);

end.



--- rcp ---
 

minhphuc

New member
nhập dãy a gồm n số nguyên ,tìm giá trị nhỏ nhất (min) và giá trị lớn nhất(max) . Rồi in ra theo thứ tự tăng dần các số trong đoạn [min,max]
Thử phân tích đề bài xem nhé!
Bước 1: Nhập vào dãy số nguyên a
Bước 2: Tìm min và max trong dãy a.
Bước 3: Rồi in ra theo thứ tự tăng dần các số trong đoạn [min,max]

Hiểu theo cách này có vẻ đúng với yêu cầu của tác giả câu hỏi hơn.

Không biết đúng không nữa nhưng nếu đúng thì thuật giải của Viết Sang cần xem lại.

Thêm tí xíu, khởi tạo giá trị min=1 & max=1 là không đúng tí nào.
Nó sẽ sai trong 2 trường hợp sau:
+ Tất cả các số trong dãy số nhỏ hơn 1.
+ Tất cả các số trong dãy số lớn hơn 1.


mến!
 
Sửa lần cuối:

rcp

Administrator
Trích:
nhập dãy a gồm n số nguyên ,tìm giá trị nhỏ nhất (min) và giá trị lớn nhất(max) . Rồi in ra theo thứ tự tăng dần các số trong đoạn [min,max]

vấn đề minhphuc nêu ra là đề tài thứ 2 (do vs nêu ra), rcp sẽ cùng minhphuc hướng dẫn sau...


Với đề tài (Futaro):
Giúp tìm Min Max dãy n số thực trong turbo pascal?
Dùng mảng một chiều thôi nhé :p mình mới học lệnh If và vòng lặp thui.



Nhắc nhở:
1) khi có "begin" thì bao giờ cũng phải có "end">:p
2) thế nào là mãng một chiều????:-??
3) mọi sự việc copy trên mạng, chưa chắc là đúng. [-X



Do đó khi mún bit đúng hay sai, VS phải :

  • cho vào một method
  • nhét vào trong một Program, lập một main() để gọi method đó
  • compile
  • và execute Program đó
  • cuối cùng xem kết quả ra trên màn hình (writeln)
  • so sánh với đề bài
  • nếu đúng thì xong giai đoạn một.:-"

Ko hiủ chỗ nào thì VS cứ hỏi, đã hiủ dzoi thì hãy thực hành và cho rcp bit kết quả.


P.S.: nhắc nhở cho VS, cơ duyên mình sắp tận, ... ko nên phí phạm thời gian..:-ss


--- rcp ---
 

Viết Sang

Moderator
Mã:
program Tim_Min_Max_cua_N_so_thuc;
Var a:array[1..100]of Single;[INDENT] n,min,max:word;
[/INDENT]Procedure doc;
Var i:word;[INDENT] Begin
Assign(f,fi);reset(f);
readln(f,n);
For i:=1 to n do read(f,a[i]);
Close(f);
End;
[/INDENT]Procedure tim;
Var i:word;[INDENT] Begin
min:=a[1];max:=a[1];
For i:=2to n do[INDENT] Begin
If a[i]>max then max:=a[i];
If a[i]<min then min :=a[i];
End;
[/INDENT]End;
[/INDENT]Function ktr(c:word):boolean;
Var i:word;[INDENT] Begin
ktr:=true;
For i:=1 to n do
If c=a[i] then Begin ktr:=false;break;End;
End;
[/INDENT]Procedure kq;
Var f:text;[INDENT] Begin
Assign(f,fo);rewrite(f);
While min<=max do
End;
[/INDENT]End.
Bài làm hoàn chỉnh của Viết Sang :), tuy thời gian làm bài rất lâu (Có lý do riêng) nhưng em chỉ làm được chừng này mong các sư phụ thông cảm và bỏ qua :)
 
Sửa lần cuối:

rcp

Administrator
Mã:
program Tim_Min_Max_cua_N_so_thuc;
Var a:array[1..100]of Single;[INDENT] n,min,max:word;
[/INDENT]Procedure doc;
Var i:word;[INDENT] Begin
Assign(f,fi);reset(f);
readln(f,n);
For i:=1 to n do read(f,a[i]);
Close(f);
End;
[/INDENT]Procedure tim;
Var i:word;[INDENT] Begin
min:=a[1];max:=a[1];
For i:=2to n do[INDENT] Begin
If a[i]>max then max:=a[i];
If a[i]<min then min :=a[i];
End;
[/INDENT]End;
[/INDENT]Function ktr(c:word):boolean;
Var i:word;[INDENT] Begin
ktr:=true;
For i:=1 to n do
If c=a[i] then Begin ktr:=false;break;End;
End;
[/INDENT]Procedure kq;
Var f:text;[INDENT] Begin
Assign(f,fo);rewrite(f);
While min<=max do
End;
[/INDENT]End.
Bài làm hoàn chỉnh của Viết Sang :), tuy thời gian làm bài rất lâu (Có lý do riêng) nhưng em chỉ làm được chừng này mong các sư phụ thông cảm và bỏ qua :)

VS hè...

vs đem cái program này :

1) compile
2) execute
3) rồi copy ra cho rcp bit kết quả của cái printscreen hén 8->

--- rcp ---
 

minhphuc

New member
VS đã làm xong bài này chưa nhỉ?

Trước khi đi xa, sư phụ Rcp của VS nhờ MP được theo dõi tiến độ học tập của VS. Hy vọng VS không làm sự phụ Rcp thất vọng.
 

Viết Sang

Moderator
VS đã làm xong bài này chưa nhỉ?

Trước khi đi xa, sư phụ Rcp của VS nhờ MP được theo dõi tiến độ học tập của VS. Hy vọng VS không làm sự phụ Rcp thất vọng.
Chào minhphuc (sư phụ phó)

Trước tiên cho Viết Sang xin lỗi và xin cuối đầu chào 1 người sự phụ mới

Sau đó Viết Sang xin minhphuc cho phép Viết Sang tập trung vào từ hôm nay đến hết ngày 15/11 (ngày gì thì Viết Sang nghĩ minhphuc đã biết)

Viết Sang sẽ viết làm bài này đầy đủ yêu cầu mà sư phụ rcp giao phó, dự kiến thực hiện bài viết sạch đẹp và dẫn chứng cụ thể từ ngày 15>20, và ngày đúng 20h11 phút ngày 20 tháng 11 năm 2009 sẽ dâng tặng sư phụ rcp

Kính gởi sư phụ minhphuc và sư phụ rcp

:(
 

minhphuc

New member
Chào minhphuc (sư phụ phó)

Trước tiên cho Viết Sang xin lỗi và xin cuối đầu chào 1 người sự phụ mới
Cái này thì không đúng nè! MP không phải là sự phụ của VS. MP thay Rcp quan sát và kiểm tra tiến độ học tập của VS mà thôi.

Chức sư phụ, sư phò chi đó thì mình không nhận. Chỉ làm đúng nhiệm vụ đã được gởi gắm.

Hy vọng là sư phụ Rcp hài lòng với học trò VS của mình.

Chúc VS vui và hoàn thành tốt
 

Viết Sang

Moderator
Để tránh sự sai sót Viết Sang xin trình bày trước nội dung của bài này

Viết Sang am hiểu môn Toán Logic hơn là toán giả sử như thế này, không biết nhận định của Viết Sang với bài này có đúng hay không

Giúp tìm Min Max dãy n số thực trong turbo pascal?

Bắt đầu làm: mới thoạt nhìn tức ai cũng sẽ nghĩ làm sao tìm được giá trị Min và Max khi không có giới hạn, Viết Sang cũng đã từng nhầm lẫn giữa toán học và tin học... và bây giờ mới nhận ra là


Giả sử N là x với tập hợp từ x1,x2,x3,x4.......xN ( với X(chập) là số thực thuộc tập hợp R, và N (phần tử ))

Bài làm như sau
Mã:
[INDENT]
[FONT=Courier New][SIZE=2]program baitap;
uses crt;
var
a:array[1..100] of integer;
n,i,max,min:integer;
begin
repeat
write('n= ');
readln(n);
until (1<=n);
for i:=1 to n do[/SIZE][/FONT][/INDENT][INDENT][FONT=Courier New][SIZE=2]begin
 write('a[',i,']=');
readln(a[i]);
end;[/SIZE][/FONT][/INDENT][INDENT][FONT=Courier New][SIZE=2] max:=a[1];
min:=a[1];
for i:=1 to n do
begin
 if max<a[i] then
max:=a[i];
if min>a[i] then
min:=a[i];
end;
writeln('Max la: ',max);
writeln('Min la: ',min);
readln
end.[/SIZE][/FONT][/INDENT]


 
Sửa lần cuối:

minhphuc

New member
Chào Viết Sang,

Về logic thì giải thuật trên là đúng nhưng bài toán trên chưa đáp ứng đúng với yêu cầu đề bài vì yêu cầu tìm min, max của dãy n số thực chứ không phải n số nguyên. Lần sau Viết Sang cẩn thận hơn nhé!

A! Hình như đoạn code trên viết chưa run được.

Thân mến!
 

giasunhanviet

New member
Độ phức tạp các bạn làm là 2n .
Nên làm tối tưu hơn (^^)
Chú ý rằng để tìm min max 2 số ta chỉ cần 1 phép so sánh, tìm min max của dãy n số (a1, a2, a3, … an) theo cách như sau: Xét n/2 nhóm 2 số sau: (a1, a2); (a3, a4); (a5, a6); … để tìm min max của hết mỗi nhóm cần n/2 phép so sánh. Đánh số các nhóm này là: b1, b2, …, b[n/2]. Lúc này ở mỗi nhóm ta đều biết min và max của nhóm đó.
Lại chia nhóm tiếp: (b1, b2); (b3, b4); (b5, b6); …n/4 nhóm, để tìm min max của mỗi nhóm ta cần 2 phép so sánh (1 phép cho 2 min, 1 phép cho 2 max). Tổng cộng là 2 * (n/4) = n/2 phép so sánh.
Lặp lại quá trình trên, ta có số các phép so sánh tiếp theo tính được là n/4, n/8, n/16, n/32, …
Tổng số phép so sánh là: n/2 + n/2 + n/4 + n/8 + n/16 + n/32 + … dễ thấy = 3n/2. Đây chỉ là 1 phép tính giới hạn (lim) đơn giản.
 

Facebook Comment

Similar threads
Thread starter Tiêu đề Diễn đàn Trả lời Ngày
nhocty [Help] Tìm giúp mấy icon Hỏi đáp Tin học 7
K Tìm nhà trọ: Mọi người giúp đỡ em với! - Đà Nẵng Các Địa Chỉ Khác 8
hoanganhdha Giúp tìm phòng trọ tại Đà Nẵng Các Địa Chỉ Khác 8
T Bí quyết bài trí bàn học theo phong thủy để giúp con học tập tốt Du lịch - Mua sắm 0
P [Hà Nội] Những điểm hấp dẫn của Feliz Homes giúp bạn cảm thấy thoải mái Nhà đất Đà Nẵng 0
Q Root máy Android có giúp máy mạnh hơn không? Hỏi đáp Tin học 0
bbcincorporation [Tin tức] Kính thông minh giúp người khuyết tật của chàng trai Đà Nẵng Thông tin & Giao lưu 0
A [Phần mềm] Bí kíp giúp bạn thu hàng trăm đơn hàng từ phương pháp nuôi fanpage Website - Blog 0
A [Phần mềm] Tuyệt chiêu giúp bạn kinh doanh trên facebook hiệu quả Website - Blog 0
P Hầu hết chúng ta thường lợi dụng điểm yếu của người khác thay vì giúp đỡ họ khắc Lời muốn nói 0
D Giúp đỡ Ngôn ngữ WEB 2
rcp [Sự kiện] Xe chở bia bị lật, dân giúp tài xế thu gom Tin tức 24h 0
L Thực đơn của bé giúp bé ăn ngoan mà dinh dưỡng đầy đủ Cà phê - ẩm thực 2
Q Có người giúp sức trong vụ “nổ mìn tự sát cùng người yêu cũ”? Tin tức 24h 0
Viết Sang Nhờ tư vấn giúp về máy ảnh KTS CLB NHIẾP ẢNH ĐÀ NẴNG 4
N Nhờ các bạn dịch giúp CLB Tiếng Trung 0
BNN [Thương hiệu] 5 yếu tố giúp định giá sản phẩm Tổng quát thương hiệu 0
BNN [Marketing] Bao bì tốt giúp bán được nhiều hàng Tổng quát thương hiệu 0
BNN [Thương hiệu] Hai bước giúp tăng thêm khách hàng Tổng quát thương hiệu 0
N Cần sự giúp đở của mọi người Chương trình - sự kiện 0
degiocuondi Giúp Gió cả nhà nhé Kế toán - Tài chính 1
G Cần giúp về nikon N6006 CLB NHIẾP ẢNH ĐÀ NẴNG 2
BNN [Môi trường] IBM giúp Đà Nẵng làm "thành phố thông minh hơn" Tin tức 24h 0
BNN [Xã hội] Đà Nẵng dành 80 tỉ đồng giúp phụ nữ thoát nghèo Tin tức 24h 0
N Giúp bạn hết ngại học tiếng Anh! Lời Khuyên Chung 0
V [Album ảnh] Cần làm 1 bộ ảnh, các photographer vào đây xem giúp CLB NHIẾP ẢNH ĐÀ NẴNG 0
BNN [Xã hội] Hơn 11.000 người khuyết tật tại Đà Nẵng được các dự án của chính phủ Hoa Kỳ giúp Tin tức 24h 0
hanlong Đức giúp Đà Nẵng xây dựng TP môi trường Tin tức 24h 0
M 10 thiết lập IE giúp bạn lướt web an toàn Thủ thuật - Mẹo vặt 1
BNN [Ký sự] Thầm lặng giúp bệnh nhân nghèo Viết về Đà Nẵng 0
mr_tran89 Nhờ mọi người giúp đỡ Thủ thuật - Mẹo vặt 0
H Giúp bài tập pascal cần rất gấp Pascal 6
N Giúp mình viết bài luận này với,cần gấp lắm CLB Tiếng Anh 2
N Giúp mình phân biệt mấy từ tiếng anh này với: CLB Tiếng Anh 0
N Giúp mình phân biệt mấy từ tiếng anh này với: CLB Tiếng Anh 0
V Giúp mọi người học tập CLB Tiếng Anh 4
K Giúp chèn flash vào bài viêt Phần cứng 1
Viết Sang Hãy giúp đỡ cháu bé bị nhiễm trùng máu thoát cơn hiểm nghèo Địa chỉ cần giúp 1
BNN Mỹ giúp Philippines Sóng BIỂN ĐÔNG 1
Viết Sang [Đà Nẵng] Hơn 60 ngày công thanh niên tình nguyện giúp đỡ các vùng khó khăn Tin tức 24h 0
F Vấn đề canon 600D giúp mình với nào.. CLB NHIẾP ẢNH ĐÀ NẴNG 4
O Du học Anh: 10 gợi ý giúp bạn học tốt tiếng Anh CLB NGOẠI NGỮ 0
binho243 Ngủ trưa giúp ta học giỏi hơn Kinh nghiệm - Chia sẻ 2
L Gia Đình Nghèo Mắc Phải Bệnh Nhà Giàu Cần Được Giúp Đỡ! Địa chỉ cần giúp 1
V Nhà nghỉ dịp 30/4-1/5.Giúp em ! Khách sạn - Nhà hàng 3
binho243 Các biện pháp giúp người gầy tăng cân Kinh nghiệm - Chia sẻ 6
D Xin hãy giúp đỡ cháu Nguyễn Thành Đạt CLB Fireclub 2
K Địa hình Đà nẵng.Ai giúp em với.... Danh lam - Thắng cảnh 1
sakura_1008 Đà Nẵng- 1 hoàn cảnh thương tâm đang cần được giúp đỡ Địa chỉ cần giúp 1
N Cần giúp địa chỉ học luyện thi TOEIC đảm bảo CLB Tiếng Anh 3

Similar threads

Top