Đến nội dung

Hình ảnh

TOPIC: Tổng hợp bài tập PASCAL


  • Please log in to reply
Chủ đề này có 72 trả lời

#41
Mystic

Mystic

    Thượng sĩ

  • Thành viên
  • 240 Bài viết

- Số ô nhớ đó là đủ, vì số Fibonnacci thứ 75 đã lên tới 7 tỷ rồi, trong khi giới hạn của đề chỉ là 2 tỷ.

- Ta chỉ sử dụng chữ var trong khung ngoặc của procedure khi và chỉ khi ta cần thay đổi giá trị ta cung cấp cho procedure (tức là cung cấp tham biến). Thuật toán trên không đả động gì tới thay đổi limit nên không cần phải thêm var.

- Phần chữ đó là để dấu cách dòng cho dễ nhìn thôi, lâu rồi mình không viết pascal nên quên mất cách viết phần comment thế nào.

- Không phải ở đó mà ở đoạn indice phải là index

Ta chỉ sử dụng chữ var trong khung ngoặc của procedure khi và chỉ khi ta cần thay đổi giá trị ta cung cấp cho procedure (tức là cung cấp tham biến).

-> Đúng !Nhưng limit là số ta nhập vào nên phải dùng var  chứ (số nhập vào có thể thay đổi)...


>>> Nếu bạn luôn buồn phiền hãy dùng hy vọng để chữa trị <<<

Và ...

>>>  Không bao giờ nói bạn đã thất bại

Cho đến khi đó là nỗi lực cuối cùng của bạn

           Và không bao giờ nói rằng:

        Đó là nỗi lực cuối cùng của bạn

         Cho tới khi bạn đã thành công  >>>

 

~ Mystic Lâm


#42
perfectstrong

perfectstrong

    $LOVE(x)|_{x =\alpha}^\Omega=+\infty$

  • Quản lý Toán Ứng dụng
  • 4996 Bài viết

- Không phải ở đó mà ở đoạn indice phải là index

Ta chỉ sử dụng chữ var trong khung ngoặc của procedure khi và chỉ khi ta cần thay đổi giá trị ta cung cấp cho procedure (tức là cung cấp tham biến).

-> Đúng !Nhưng limit là số ta nhập vào nên phải dùng var  chứ (số nhập vào có thể thay đổi)...

- Chỗ indice mình đánh nhầm.

- Bạn hiểu sai biến cục bộ rồi. Mời bạn đọc thêm ở đây http://www.nguyenvan...uong-trinh-con/

 

– Tham biến: là các tham số được khai báo sau từ khóa var. Các tham số thực phải là các biến chứ không được là giá trị. Tham biến có thể được thay đổi trong CTC và sau khi ra khỏi CTC nó vẫn giữ giá trị thay đổi đó.
– Tham trị: là các tham số được khia báo mà không đứng sau từ khóa var. Các tham số thực có thể là các giá trị, hằng, biến. Tham trị có thể thay đổi trong ctc nhưng sau khi kết thúc ctc giá trị của nó trở về như ban đầu.

Nhưng chú ý, ở đây limittham trị trong procedure generateFibo, vậy nên ở trong thân chương trình chính, ta sẽ gọi generateFibo(n) với $n$ là số được nhập từ bàn phím.


Luôn yêu để sống, luôn sống để học toán, luôn học toán để yêu!!! :D
$$\text{LOVE}\left( x \right)|_{x = \alpha}^\Omega = + \infty $$
I'm still there everywhere.

#43
Mystic

Mystic

    Thượng sĩ

  • Thành viên
  • 240 Bài viết

- Chỗ indice mình đánh nhầm.

- Bạn hiểu sai biến cục bộ rồi. Mời bạn đọc thêm ở đây http://www.nguyenvan...uong-trinh-con/

À chắc ở đoạn thủ tục bạn dùng để cấp dữ liệu vào ct chính phải không ?

- Nhưng cô mình dạy thì lại nói là có var nhỉ ??


>>> Nếu bạn luôn buồn phiền hãy dùng hy vọng để chữa trị <<<

Và ...

>>>  Không bao giờ nói bạn đã thất bại

Cho đến khi đó là nỗi lực cuối cùng của bạn

           Và không bao giờ nói rằng:

        Đó là nỗi lực cuối cùng của bạn

         Cho tới khi bạn đã thành công  >>>

 

~ Mystic Lâm


#44
perfectstrong

perfectstrong

    $LOVE(x)|_{x =\alpha}^\Omega=+\infty$

  • Quản lý Toán Ứng dụng
  • 4996 Bài viết

À chắc ở đoạn thủ tục bạn dùng để cấp dữ liệu vào ct chính phải không ?

- Nhưng cô mình dạy thì lại nói là có var nhỉ ??

Xin nói rõ để bạn hiểu:

Chương trình chính sẽ gồm đầu tiên là mời nhập giá trị $n$, rồi tiếp theo ta gọi generateFibo(n) để tạo mảng Fibonacci, các bước tiếp theo thì bạn đã biết nên mình không nói lại.

 

Lưu ý không phải khi nào cũng dùng var để cấp tham trị cho hàm/thủ tục. Một chương trình máy tính sẽ xử lý dữ liệu đầu vào ở nhiều trường hợp. Với mỗi trường hợp, máy tính sẽ thực hiện theo chương trình ta đã viết. Trong mỗi trường hợp vậy, nếu có hàm/thủ tục nào ta cần dùng để thay đổi những thông số ta trao cho nó, thì ta mới thêm var đằng trước. Bằng không, var không cần thiết. Trong bài toán này, bạn thêm var vào cũng được, không ảnh hưởng gì vì trong thân của thủ tục, không chứa lệnh nào làm thay đổi thông số. Nhưng về mặt thuật toán, ta không thêm var.


Luôn yêu để sống, luôn sống để học toán, luôn học toán để yêu!!! :D
$$\text{LOVE}\left( x \right)|_{x = \alpha}^\Omega = + \infty $$
I'm still there everywhere.

#45
Mystic

Mystic

    Thượng sĩ

  • Thành viên
  • 240 Bài viết

 

Không nên dùng hàm này để tính $F_n$ với mỗi $n$ vì khi $n$ càng lớn, ta phải tính đi tính lại một công đoạn rất nhiều lần, như thuật toán bạn đề ra. Thay vì vậy, nên tạo một mảng vừa lưu trữ, vừa dùng để tính.

var	array_Fibo[1..75]:longword;
/*=========================*/
procedure generateFibo(limit: longword);
var	index:word;
begin
	array_Fibo[1] := a;
	array_Fibo[2] := b;
	index := 2;
	repeat
	index:=index+1;
	array_Fibo[index]:=array_Fibo[index-1]+array_Fibo[index-2];
	until array_Fibo[index]>=limit;
end;

Mình đọc lại mới thấy :

- Sao ko thay vào luôn :

array_Fibo[1] := 1;

array_Fibo[2] := 1;


Bài viết đã được chỉnh sửa nội dung bởi Mystic: 17-04-2016 - 15:03

>>> Nếu bạn luôn buồn phiền hãy dùng hy vọng để chữa trị <<<

Và ...

>>>  Không bao giờ nói bạn đã thất bại

Cho đến khi đó là nỗi lực cuối cùng của bạn

           Và không bao giờ nói rằng:

        Đó là nỗi lực cuối cùng của bạn

         Cho tới khi bạn đã thành công  >>>

 

~ Mystic Lâm


#46
perfectstrong

perfectstrong

    $LOVE(x)|_{x =\alpha}^\Omega=+\infty$

  • Quản lý Toán Ứng dụng
  • 4996 Bài viết

Mình đọc lại mới thấy :

- Sao ko thay vào luôn :

array_Fibo[1] := 1;

array_Fibo[2] := 1;

À xin lỗi, do ban đầu mình viết kiểu khác rồi sửa lại nên vẫn còn sót mấy typo ấy.


Luôn yêu để sống, luôn sống để học toán, luôn học toán để yêu!!! :D
$$\text{LOVE}\left( x \right)|_{x = \alpha}^\Omega = + \infty $$
I'm still there everywhere.

#47
anhtuantieulinh

anhtuantieulinh

    Lính mới

  • Thành viên mới
  • 2 Bài viết

có bài nào về phương pháp hướng sai k mấy bạn ?????



#48
quylit

quylit

    Lính mới

  • Thành viên mới
  • 2 Bài viết

cho 2 số nghuyên N và K , tìm số nguyên nhỏ nhất lớn hơn N , có đúng K chữ số 5 trong biêu diễn thập phân của số đó

inp:gồm 1 dòng 2 số nguyên N,K

out: số càn tìm

vd:

inp: 3630 1

out:3635

(1<=N<=10^15 vaf 1<=K<=15)


Bài viết đã được chỉnh sửa nội dung bởi quylit: 18-04-2016 - 19:28


#49
Mystic

Mystic

    Thượng sĩ

  • Thành viên
  • 240 Bài viết

cho 2 số nghuyên N và K , tìm số nguyên nhỏ nhất lớn hơn N , có đúng K chữ số % trong biêu diễn thập phân của số đó

inp:gồm 1 dòng 2 số nguyên N,K

out: số càn tìm

vd:

inp: 3630 1

out:3635

(1<=N<=10^15 vaf 1<=K<=15)

Chỗ đó nghĩa là sao ?


>>> Nếu bạn luôn buồn phiền hãy dùng hy vọng để chữa trị <<<

Và ...

>>>  Không bao giờ nói bạn đã thất bại

Cho đến khi đó là nỗi lực cuối cùng của bạn

           Và không bao giờ nói rằng:

        Đó là nỗi lực cuối cùng của bạn

         Cho tới khi bạn đã thành công  >>>

 

~ Mystic Lâm


#50
anhtuantieulinh

anhtuantieulinh

    Lính mới

  • Thành viên mới
  • 2 Bài viết

TÍNH TỔNG

Trên một màn hình lớn, người ta lần lượt cho hiện ra các số của một dãy gồm N số nguyên không âm a1, a2, …, aN và cứ lặp đi lặp lại như thế. Mỗi người theo dõi màn hình được đề nghị tính tổng của K số nguyên liên tiếp xuất hiện trên màn hình bắt đầu từ số nguyên thứ B.

Viết chương trình giúp cho những người theo dõi màn hình tính được tổng như đề nghị.

Dữ liệu vào: chứa trong tệp văn bản SUM.INP gồm hai dòng

+ Dòng đầu tiên ghi ba số nguyên N, K và B, 1 £ N £100, 1 £ K £100, 1 £ B £ 109.

+ Dòng thứ hai chứa dãy số nguyên không âm a1, a2, …, aN.

Dữ liệu ra: ghi vào tệp văn bản SUM.OUT gồm một dòng chứa tổng cần tính.

Ví dụ:

SUM.INP                               SUM.OUT

5  7  154                                           24

1  2  3  4  5



#51
quylit

quylit

    Lính mới

  • Thành viên mới
  • 2 Bài viết

Chỗ đó nghĩa là sao ?

chỗ nào bạn



#52
vanlong12

vanlong12

    Binh nhất

  • Thành viên mới
  • 34 Bài viết

ui!!

 

TÍNH TỔNG

Trên một màn hình lớn, người ta lần lượt cho hiện ra các số của một dãy gồm N số nguyên không âm a1, a2, …, aN và cứ lặp đi lặp lại như thế. Mỗi người theo dõi màn hình được đề nghị tính tổng của K số nguyên liên tiếp xuất hiện trên màn hình bắt đầu từ số nguyên thứ B.

Viết chương trình giúp cho những người theo dõi màn hình tính được tổng như đề nghị.

Dữ liệu vào: chứa trong tệp văn bản SUM.INP gồm hai dòng

+ Dòng đầu tiên ghi ba số nguyên N, K và B, 1 £ N £100, 1 £ K £100, 1 £ B £ 109.

+ Dòng thứ hai chứa dãy số nguyên không âm a1, a2, …, aN.

Dữ liệu ra: ghi vào tệp văn bản SUM.OUT gồm một dòng chứa tổng cần tính.

Ví dụ:

SUM.INP                               SUM.OUT

5  7  154                                           24

1  2  3  4  5

ui!!cái ví dụ sao lại tính tổng 7 số ,,bắt đầu từ 154 mà tổng có 24 là thế nào ,,mk k hỉu!!!bạn  chỉ rõ ra thử xem....


_ _ _ nỗi bất hạnh làm ra con người_ _ _

  + _còn con người làm ra hạnh phúc_ +


#53
Mystic

Mystic

    Thượng sĩ

  • Thành viên
  • 240 Bài viết

chỗ nào bạn

Chỗ chữ màu xanh ấy !


>>> Nếu bạn luôn buồn phiền hãy dùng hy vọng để chữa trị <<<

Và ...

>>>  Không bao giờ nói bạn đã thất bại

Cho đến khi đó là nỗi lực cuối cùng của bạn

           Và không bao giờ nói rằng:

        Đó là nỗi lực cuối cùng của bạn

         Cho tới khi bạn đã thành công  >>>

 

~ Mystic Lâm


#54
Mystic

Mystic

    Thượng sĩ

  • Thành viên
  • 240 Bài viết

ui!!

 

ui!!cái ví dụ sao lại tính tổng 7 số ,,bắt đầu từ 154 mà tổng có 24 là thế nào ,,mk k hỉu!!!bạn  chỉ rõ ra thử xem....

Cái dãy đó lặp đí lặp lại .....nên ta tính được


>>> Nếu bạn luôn buồn phiền hãy dùng hy vọng để chữa trị <<<

Và ...

>>>  Không bao giờ nói bạn đã thất bại

Cho đến khi đó là nỗi lực cuối cùng của bạn

           Và không bao giờ nói rằng:

        Đó là nỗi lực cuối cùng của bạn

         Cho tới khi bạn đã thành công  >>>

 

~ Mystic Lâm


#55
vanlong12

vanlong12

    Binh nhất

  • Thành viên mới
  • 34 Bài viết

nhu

 

Cái dãy đó lặp đí lặp lại .....nên ta tính được

nhug tổng đâu =24 đâu??


_ _ _ nỗi bất hạnh làm ra con người_ _ _

  + _còn con người làm ra hạnh phúc_ +


#56
Mystic

Mystic

    Thượng sĩ

  • Thành viên
  • 240 Bài viết

nhu

 

nhug tổng đâu =24 đâu??

Thế thì cứ viết dẫy đó lặp đi lặp lại cỡ 200 lần đi cho đẹp rồi tính tổng từ phần tử thứ 154 -> pt thứ 161 thì sẽ được tổng như trên !


>>> Nếu bạn luôn buồn phiền hãy dùng hy vọng để chữa trị <<<

Và ...

>>>  Không bao giờ nói bạn đã thất bại

Cho đến khi đó là nỗi lực cuối cùng của bạn

           Và không bao giờ nói rằng:

        Đó là nỗi lực cuối cùng của bạn

         Cho tới khi bạn đã thành công  >>>

 

~ Mystic Lâm


#57
vanlong12

vanlong12

    Binh nhất

  • Thành viên mới
  • 34 Bài viết

ak...hỉu rùi


_ _ _ nỗi bất hạnh làm ra con người_ _ _

  + _còn con người làm ra hạnh phúc_ +


#58
vanlong12

vanlong12

    Binh nhất

  • Thành viên mới
  • 34 Bài viết


TÍNH TỔNG

Trên một màn hình lớn, người ta lần lượt cho hiện ra các số của một dãy gồm N số nguyên không âm a1, a2, …, aN và cứ lặp đi lặp lại như thế. Mỗi người theo dõi màn hình được đề nghị tính tổng của K số nguyên liên tiếp xuất hiện trên màn hình bắt đầu từ số nguyên thứ B.

Viết chương trình giúp cho những người theo dõi màn hình tính được tổng như đề nghị.

Dữ liệu vào: chứa trong tệp văn bản SUM.INP gồm hai dòng

+ Dòng đầu tiên ghi ba số nguyên N, K và B, 1 £ N £100, 1 £ K £100, 1 £ B £ 109.

+ Dòng thứ hai chứa dãy số nguyên không âm a1, a2, …, aN.

Dữ liệu ra: ghi vào tệp văn bản SUM.OUT gồm một dòng chứa tổng cần tính.

Ví dụ:

SUM.INP                               SUM.OUT

5  7  154                                           24

1  2  3  4  5

ui!thucự ra nó cũm bt thui bạn ak!

đây là test của mk,,bạn xem thử..có chỗ nào k hiểu bạn có thể hỏi...

 

uses crt;
var a: array[1..1000]  of longint;
m,t,i,j,k,l,s,n,b:longint;
f:text;
begin
clrscr;
assign(f,'d:\sum.inp');
reset(f);
i:=0;
while not eof(f) do
begin
i:=i+1;
read(f,a[i]);
end;
close(f);
assign(f,'d:\sum.out');
rewrite(f);
n:=a[1];
k:=a[2];
b:=a[3];
for m:=1 to i do
a[m]:=a[m+1];
for m:=1 to i do
a[m]:=a[m+1];
for m:=1 to i do
a[m]:=a[m+1];
t:=0;l:=0;
for j:=1 to b+k do
begin
t:=t+1;
if j=b then
repeat
l:=l+1;
s:=s+a[t];
t:=t+1;
if t>n then
begin
t:=0;
t:=t+1;
end;
until l=k;
if t=n then t:=0;
end;
write(f,'tong:=',s);
close(f);
readln
end.

_ _ _ nỗi bất hạnh làm ra con người_ _ _

  + _còn con người làm ra hạnh phúc_ +


#59
PlanBbyFESN

PlanBbyFESN

    Thiếu úy

  • Điều hành viên OLYMPIC
  • 637 Bài viết

Bài 11:  Tính tổng các số nguyên dương có trong một chuỗi.

 

Ví dụ: abcAcb90sgsd3sdsdg12sdfsdfds                  :              Tong: 105

          fsđfSdgvfd                                                      :              Sai! Nhap lai:

 

Bài 12: Cho dãy số gồm n số nguyên. Tìm dãy con lớn nhất các phần tử theo tứ tự tăng dần hoặc giảm dần. 

     


:huh:


#60
perfectstrong

perfectstrong

    $LOVE(x)|_{x =\alpha}^\Omega=+\infty$

  • Quản lý Toán Ứng dụng
  • 4996 Bài viết

Bài 12: Cho dãy số gồm n số nguyên. Tìm dãy con lớn nhất các phần tử theo tứ tự tăng dần hoặc giảm dần. 

     

Bài này là ví dụ cơ bản của thuật toán quy hoạch động. Mình sẽ xử lý cho trường hợp tăng dần (không nghiêm ngặt), trường hợp giảm dần làm tương tự.

var	n:integer;
	a_input, a_precedant_index, a_local_longest: array[1..1000] of integer;
/* giả sử đã có a_input gồm n số nguyên*/

function	a_longest_incre: array[1..1000] of integer;
/* trả lại mảng gồm chỉ số từ mảng a_input*/
	var 	i, j, last_index_maxi, length_maxi:integer;
		a_result:array[1..1000] of integer;
begin
	/* tìm kiếm dãy con tăng dần dài nhất */
	for i:=1 to n do
		begin
			a_precedant_index[i]:=0;
			a_local_longest[i]:=1;
			for j:=1 to i-1 do
				if (a[j]<=a[i]) and (a_local_longest[j]>a_local_longest[i]) then
					begin
						a_precedant_index[i]:=j;
						a_local_longest[i]:=a_local_longest[j]+1;
					end;
		end;
	/* truy ngược để trả kết quả */
	last_index_maxi:=1;
	for i:=2 to n do
		if a_local_longest[i]>a_local_longest[last_index_maxi] then last_index_maxi:=i;
	length_maxi:=a_local_longest[last_index_maxi];
	i:=last_index_maxi;
	j:=0;
	repeat
	j:=j+1;
	a_result[length_maxi+1-j]:=i;
	i:=a_precedant_index[i];
	until i=0;
	a_longest_incre:=a_result;
end;

Luôn yêu để sống, luôn sống để học toán, luôn học toán để yêu!!! :D
$$\text{LOVE}\left( x \right)|_{x = \alpha}^\Omega = + \infty $$
I'm still there everywhere.




1 người đang xem chủ đề

0 thành viên, 1 khách, 0 thành viên ẩn danh