Go Back   VN-Zoom forum > Chia sẻ kiến thức > Lập trình > Pascal | C/C++

 


Server Counter Strike 1.6 miễn phí cho thành viên VZ

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 01-05-2008, 08:31   #1
Gà Con
 
likethewind's Avatar
 
Tham gia: Mar 2008
Bài: 1
VZD: 174
Điểm: 0/0 bài viết
Default Bài tập pascal!! Làm sao đây???

1)Viết CT sử dụng CTC để nhập dữ liệu cho 1 mảng cỡ m x n số nguyên (10 <= m <= 20, 5 <= n < 20). Các phần tử của mảng là những số chia hết cho 5 hoặc chia hết cho 3. Trong CT chính hãy nhập 1 mảng đếm và đưa ra màn hình danh sách những phần tử chia hết cho 5 và chia hết cho 3.
likethewind vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-05-2008, 09:55   #2
Búa Gỗ
 
phanbuuvinh's Avatar
 
Tham gia: Nov 2007
Bài: 11
VZD: 394
Điểm: 6/2 bài viết
Default

Đề bài yêu cầu ko rõ gì cả. Có phải là mình sẽ lập ra mảng 2 mảng 1 chiều để in ra các phần tử chia hết cho 5 trong mảng m x n, và 1 mảng còn lại in ra các phần tử chia hểt cho 3 của mảng m x n. Đúng vậy ko ?
Nếu như vậy thì dễ rồi. Chỉ cần dùng thuật toán nổi bọt quét qua mảng 2 chiều. Nếu số nào chia hểt cho 5 ( mod 5 = 0) thì ghi vào mảng 1 chiều thứ 1. Tương tự với sô chia hểt cho 3, ghi vào mản 1 chiều thứ 2.
phanbuuvinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-07-2008, 08:32   #3
Gà Con
 
quachduchau's Avatar
 
Tham gia: Jul 2008
Bài: 5
VZD: 232
Điểm: 0/0 bài viết
Default

uses crt;
var n,m:byte;
A:array[1..i,1..j] of integer;
begin
writeln('nhap so cot so hang');readln(m,n);
for i:=1 to m do
for j:=1 to n do
writeln('a[',i,',',j,']=');readln(a[i,j]);
for i:=1 to i do
for j:=1 to j do
if (a[i,j] mod 5=0) and (a[i,j] mod 3=0) then writeln(a[i,j]);
readln
end.
to moi viet chua thu nen chac ko chuan lam.

thay đổi nội dung bởi: quachduchau, 12-07-2008 lúc 08:35.
quachduchau vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-07-2008, 08:36   #4
Gà Con
 
quachduchau's Avatar
 
Tham gia: Jul 2008
Bài: 5
VZD: 232
Điểm: 0/0 bài viết
Default

theo tớ các số ban đầu đều phải đủ điều kiện rồi.
quachduchau vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-07-2008, 08:53   #5
Búa Gỗ Đôi
 
bagiadangtri's Avatar
 
Tham gia: Jul 2008
Bài: 32
VZD: 675
Điểm: 0/0 bài viết
Default

Trích:
likethewind View Post
1)Viết CT sử dụng CTC để nhập dữ liệu cho 1 mảng cỡ m x n số nguyên (10 <= m <= 20, 5 <= n < 20). Các phần tử của mảng là những số chia hết cho 5 hoặc chia hết cho 3. Trong CT chính hãy nhập 1 mảng đếm và đưa ra màn hình danh sách những phần tử chia hết cho 5 và chia hết cho 3.


đề này đâu có khó hiểu?
để tui phân tích cho coi nha
đề yêu cầu viết chương trình con cỡ m*n (dk m,n). sau đó ở chương trình chính sử dụng mảng này để nhập các phần tử mảng thỏa mãn chia hết cho 5 hoặc 3. ngoài ra ta còn đếm các phần tử chia hết cho 5 và cho 3
bagiadangtri vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-07-2008, 09:21   #6
Búa Gỗ Đôi
 
bagiadangtri's Avatar
 
Tham gia: Jul 2008
Bài: 32
VZD: 675
Điểm: 0/0 bài viết
Default

program baigiai;
type
PT: array[1..20,1..20 ] of integer;
var mangT;
m,n,dem,i,j:integer;
procedure ctc(var B: PT, var m,n:integer);
var i,j:integer;
begin
repeat
write('nhap vao so hang m, cotn (10 <= m <= 20, 5 <= n < 20) :');
readln(m,n);
until (m>=10) and (m<=20) and (n>=5)and (n<20);
for i:=1 to m do
for j:=1 to n do
begin
write('B[',i,',',j,']:='); 'B[i,j]:=
readln(B[i,j]);
end;
end;
begin
'goi ham ctc ra
ctc(mang1,m,n);
'đếm các phần tử mảng vừa chia hết cho 5 và 3
dem=0;
writeln('nhung phan tu chia het cho 5 va 3 la: ');
for i=1 to m do
for j=1 to n do
if(mang1[i,j]mod 3=0)and (mang1[i,j] mod 5=0) then
begin
dem=dem+1;
write(B[i,j], ' ,'); 'dua phan tu do ra man hinh
end;
write('so phan tu mang chi het cho 5 va 3 la:',dem);
readln;
end.

thay đổi nội dung bởi: bagiadangtri, 12-07-2008 lúc 09:29.
bagiadangtri vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-07-2008, 19:10   #7
Búa Gỗ
 
shinrel's Avatar
 
Tham gia: Jun 2008
Bài: 23
VZD: 541
Điểm: 1/1 bài viết
Default

sao ai cung dung mảng 2 chiều vậy,tốn khá nhiều bộ nhớ mà giải quyết lại chậm. theo mình chỉ sử dụng mảng 1 chiều vì ở đây đề bài chỉ yêu cầu đưa ra màn hình các số chia hết cho 5 và 3. chuong trình minh họa như sau:
Program chiahet;
const max=400;
var a:array[1..max] of integer;
dem,i:integer;
function kiemtra(x:integer):boolean;
begin
if ((x div 5)==0) or ((x div 3)==0 then
kiemtra:=true
else kiemtra:=false;
end;
procedure nhapso;
begin
i:=0;
while (i<max) do
begin
inc(i);
again:write('nhap a[',i,'}:=');
readln(a[i]);
if kiemtra(a[i])=true then continue
else goto again;

end;
end;
procedure count(x:integer);
begin
dem:=0;
if ((x div 5)==0) and ((x div 3)==0) then
begin
inc(dem);
write(a[i],' ');
end;
begin
nhapso;
for i:=1 to max do
count(a[i));
writeln('tong cac so chia het 3 va 5 la:',dem);
end.
ngoài ra nếu để chương trình chạy kô tốn bộ nhớ bạn có thể dùng bộ nhớ ảo.Trong pascal cũng có đấy.Bạn tìm đọc trog cuốn cấu trúc dữ liệu và giải thuật của LMH sẽ rõ
shinrel vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-07-2008, 21:13   #8
Búa Gỗ Đôi
 
bagiadangtri's Avatar
 
Tham gia: Jul 2008
Bài: 32
VZD: 675
Điểm: 0/0 bài viết
Default

ông này ko đọc kỹ đề ah? mảng 2 chiều m*n cơ mà

thay đổi nội dung bởi: bagiadangtri, 12-07-2008 lúc 21:17.
bagiadangtri vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-07-2008, 21:41   #9
Búa Gỗ
 
not_forme's Avatar
 
Tham gia: Dec 2007
Bài: 20
VZD: 568
Điểm: 12/4 bài viết
Default

Trích:
shinrel View Post
sao ai cung dung mảng 2 chiều vậy,tốn khá nhiều bộ nhớ mà giải quyết lại chậm. theo mình chỉ sử dụng mảng 1 chiều vì ở đây đề bài chỉ yêu cầu đưa ra màn hình các số chia hết cho 5 và 3. chuong trình minh họa như sau:
Program chiahet;
const max=400;
var a:array[1..max] of integer;
dem,i:integer;
function kiemtra(x:integer):boolean;
begin
if ((x div 5)==0) or ((x div 3)==0 then
kiemtra:=true
else kiemtra:=false;
end;
procedure nhapso;
begin
i:=0;
while (i<max) do
begin
inc(i);
again:write('nhap a[',i,'}:=');
readln(a[i]);
if kiemtra(a[i])=true then continue
else goto again;

end;
end;
procedure count(x:integer);
begin
dem:=0;
if ((x div 5)==0) and ((x div 3)==0) then
begin
inc(dem);
write(a[i],' ');
end;
begin
nhapso;
for i:=1 to max do
count(a[i));
writeln('tong cac so chia het 3 va 5 la:',dem);
end.
ngoài ra nếu để chương trình chạy kô tốn bộ nhớ bạn có thể dùng bộ nhớ ảo.Trong pascal cũng có đấy.Bạn tìm đọc trog cuốn cấu trúc dữ liệu và giải thuật của LMH sẽ rõ
Khò khò cách này cùn quá lại sai đề bài nữa
not_forme vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-07-2008, 11:00   #10
Búa Gỗ
 
shinrel's Avatar
 
Tham gia: Jun 2008
Bài: 23
VZD: 541
Điểm: 1/1 bài viết
Default

mang 2 chieu cung duoc ma 1 chieu cung duoc.1 chieu thi toc do truy cap nhanh hon.
shinrel vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-07-2008, 21:13   #11
Búa Đá
 
laai's Avatar
 
Tham gia: Apr 2008
Bài: 52
VZD: 1.299
Điểm: 14/3 bài viết
Default

tốt nhất là sái mảng hai chiều cho đặt diểm tối đa,
nếu mà sái mảng một chiều thì "lợi thì có lợi nhưng răng không còn" đùa thui, không những không mất răng mà còn nhận nữa, nhận điểm một đó lấy ko
laai vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt
Trackbacks are Tắt
Pingbacks are Tắt
Refbacks are Tắt
Chuyển đến


Múi giờ GMT +7. Hiện tại là 09:10.


Powered by vBulletin® Version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Template-Modifications by TMS
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
Từ điển được cung cấp bởi VDict.com - Hosting được tài trợ bởi Rao vặt 123