banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành Windows Cần Giúp Pascal về pascal  XML
  [Programming]   Cần Giúp Pascal về pascal 04/04/2007 02:55:59 (+0700) | #1 | 51421
[Avatar]
neo_hack
Member

[Minus]    0    [Plus]
Joined: 07/02/2007 19:06:57
Messages: 280
Offline
[Profile] [PM] [WWW] [Yahoo!]
Chào các huynh , đệ được giao một bài tập lớn về Pascal , bài toán như sau !
Tính tổng hai số lớn có số chữ số lớn hơn 10 ! Có thế hai số khac nhau về số chữ số ! ( Lưu ý là tính tổng cả các số âm )
Mong bác nào dành pascal có thế giúp em cái ! em cám ơn nhiều nhiều !!!!
[Up] [Print Copy]
  [Question]   Cần Giúp Pascal về pascal 04/04/2007 10:32:33 (+0700) | #2 | 51519
[Avatar]
phonglanbiec
Member

[Minus]    0    [Plus]
Joined: 03/07/2006 20:56:00
Messages: 162
Offline
[Profile] [PM]
Số chữ số lớn hơn 10 thì bạn thử dùng kiểu extended xem sao.
[Up] [Print Copy]
  [Question]   Cần Giúp Pascal về pascal 04/04/2007 10:51:03 (+0700) | #3 | 51527
[Avatar]
learn2hack
Elite Member

[Minus]    0    [Plus]
Joined: 29/06/2006 16:32:37
Messages: 825
Offline
[Profile] [PM] [WWW]
Bạn nên dùng mảng để lưu trữ các chữ số, ý tưởng là mỗi chữ số được coi là 1 thành phần của mảng. Việc cộng 2 số sẽ được thực hiện từ cuối lên đầu theo quy tắc cộng bình thường.
Nếu số nào có ít chữ số hơn, có thể thêm 0 vào đầu để tiện tính toán.

Tư tưởng chung của giải thuật là vậy, bạn thử làm xem sao.
Blog: http://hontap.blogspot.com
Tải phần mềm miễn phí: http://www.taiphanmem.org
[Up] [Print Copy]
  [Question]   Re: Cần Giúp Pascal về pascal 05/04/2007 00:34:40 (+0700) | #4 | 51616
[Avatar]
neo_hack
Member

[Minus]    0    [Plus]
Joined: 07/02/2007 19:06:57
Messages: 280
Offline
[Profile] [PM] [WWW] [Yahoo!]
Hix Em cũng đã ngĩ đến hai trường hợp dùng array và String nhưng mà giải quyết và viết như thế nào mới là chuyện em cần quan tâm !
Mong các bác giúp em cách giải quyết cơ ! chủ yếu là thuật toán cơ !!
Mong các pro giúp cái nhé . sắp đến hạn em lộp bài rồi hix !!
[Up] [Print Copy]
  [Question]   Cần Giúp Pascal về pascal 05/04/2007 09:35:30 (+0700) | #5 | 51736
[Avatar]
Durza
Member

[Minus]    0    [Plus]
Joined: 07/02/2007 20:23:29
Messages: 177
Location: UnderGround World
Offline
[Profile] [PM] [WWW]
Bạn nên dùng mảng để lưu trữ các chữ số, ý tưởng là mỗi chữ số được coi là 1 thành phần của mảng. Việc cộng 2 số sẽ được thực hiện từ cuối lên đầu theo quy tắc cộng bình thường.
Nếu số nào có ít chữ số hơn, có thể thêm 0 vào đầu để tiện tính toán.

Tư tưởng chung của giải thuật là vậy, bạn thử làm xem sao 




Hix Em cũng đã ngĩ đến hai trường hợp dùng array và String nhưng mà giải quyết và viết như thế nào mới là chuyện em cần quan tâm !  



Híc ! Nếu mà dùng mảng , bắt người dùng nhập từng số của số ( có > 10 chữ số ) thì việc cộng các giá trị của mảng lại quá đơn giản . Vậy thì việc gì phải ra bài tập LỚN để bắt về nhà làm ????
Ở lớp tớ thì lập trình bên C++ nhưng không cho dùng mảng mà bắt dùng if else , while , do...while thôi
Theo tớ thì nên dùng lệnh mod ( bên pascal ) hoặc % ( bên C++ ) để lấy phần dư .... Vì dụ số có 11 chữ số thì chia số đó cho 1000000000 lấy dư sẽ được con số đầu tiên của dãy số đó , sau đó lại lấy số bán đầu trừ đi số đầu tiên nhân với 1000000000 sẽ được 10 số còn lại . Sau đó lại lấy 10 số còn lại chia cho 100000000 sẽ được số ở vị trí thứ 2 ..... cứ tiếp tục như thế

Đúng không nhể ?
[Up] [Print Copy]
  [Question]   Cần Giúp Pascal về pascal 05/04/2007 10:22:32 (+0700) | #6 | 51746
seraphpl
Member

[Minus]    0    [Plus]
Joined: 04/12/2006 19:52:12
Messages: 97
Location: xxx
Offline
[Profile] [PM] [WWW] [Yahoo!] [MSN] [ICQ]
Nhưng trong Pascal không có kiểu nguyên nào lưu được 11 chữ số cả .
[Up] [Print Copy]
  [Question]   Re: Cần Giúp Pascal về pascal 05/04/2007 14:47:37 (+0700) | #7 | 51800
FaL
Moderator

Joined: 14/04/2006 09:31:18
Messages: 1232
Offline
[Profile] [PM]

neo_hack wrote:
Hix Em cũng đã ngĩ đến hai trường hợp dùng array và String nhưng mà giải quyết và viết như thế nào mới là chuyện em cần quan tâm !
Mong các bác giúp em cách giải quyết cơ ! chủ yếu là thuật toán cơ !!
Mong các pro giúp cái nhé . sắp đến hạn em lộp bài rồi hix !!
 


Trong diễn đàn đã có 1 bài tương tự http://hvaonline.net/hvaonline/posts/list/6815.html rồi, bồ search trước khi hỏi nhé.

- Mục đích của việc cộng số lớn như thế này là giúp bồ làm quen với việc xử lý dữ liệu lớn, vượt khỏi những kiểu cơ bản của ngôn ngữ.

- Việc xử lý như thế nào theo tui nghĩ cứ đi từ những suy nghĩ đơn giản nhất mà giải quyết. (Cộng 2 số bằng tay thì sẽ như thế nào -> làm sao lưu dữ liệu> 10^10 -1 - có 10 chữ số -> xử lý dữ liệu ...)

Thân.
Hãy giữ một trái tim nóng và một cái đầu lạnh
[Up] [Print Copy]
  [Question]   Cần Giúp Pascal về pascal 05/04/2007 14:54:30 (+0700) | #8 | 51801
[Avatar]
learn2hack
Elite Member

[Minus]    0    [Plus]
Joined: 29/06/2006 16:32:37
Messages: 825
Offline
[Profile] [PM] [WWW]
Bước nhập dữ liệu bạn cứ thử nhập vào xâu, rồi duyệt xâu đó từ cuối lên để đưa vào mảng:
Code:
ka := 0;
for i := length(str) downto 1 do
  begin
    inc(k);
    a[ka] := ord(str[i]) - ord('0');
  end;


Tương tự có mảng b nữa chẳng hạn, với kb là số các chữ số của số đó.

Bây giờ điền các số 0 vào phía trước số có chữ số bé hơn:
Code:
if ka < kb then
  for i := ka+1 to kb do a[i] := 0
else
  for i := kb+1 to kb do b[i] := 0;


Bây giờ duyệt ngược từ cuối lên để cộng, kết quả lưu trong mảng c:
Code:
if ka < kb then k := kb else k := ka;
du := 0;
for i := 1 to k do
  begin
    tong := a[i] + b[i] + du;
    c[i] := tong mod 10;
    du := tong div 10;
  end;


Cuối dùng đưa số c ra màn hình:
Code:
for i := k downto 1 do write(c[i]);


Có thể cú pháp mình viết trên còn sai, nhưng ý tưởng chính là như thế. Bạn xem thử xem có giúp gì được không.
Blog: http://hontap.blogspot.com
Tải phần mềm miễn phí: http://www.taiphanmem.org
[Up] [Print Copy]
  [Question]   Re: Cần Giúp Pascal về pascal 07/04/2007 00:00:15 (+0700) | #9 | 52083
[Avatar]
neo_hack
Member

[Minus]    0    [Plus]
Joined: 07/02/2007 19:06:57
Messages: 280
Offline
[Profile] [PM] [WWW] [Yahoo!]
Hê hê hê ! Em cám ơn các Pro nhiều lắm !!
o(*_*)o
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|