Trang chủ > Câu hỏi
Câu hỏi
Giai may bai tap pascal giup minh voi !!!!!!!
Mình có mấy bài toán mà mãi không hiểu thuật toán để giải như thế nào, rất mong  các anh chị, các bạn giúp đỡ.
Bài 1:
Lập chương trình xếp các dấu * thành tam giác cân n dòng (n<40), đỉnh của tam giác nằm ở chính giữa trên cùng màn hình ( với n đọc từ bàn phím)

    *
   ***
  *****
 *******

Bài 2: Viết chương trình tính số lần xuất hiện tổng số điểm bằng 6 khi gieo n lần ngẫu nhiên cùng một lúc 2 con xúc sắc (n bất kỳ nhập tù bàn phím; mỗi con xúc sắc gồm 6 mặt. mỗi chấm trên một mặt tương ứng với 1 điểm

Bài 3: Lập chương trình làm các công việc sau:
a) Nhập thong tin về các thí sinh gồm: họ đệm, tên, điểm thi và địa chỉ. Kết thúc nhập khi họ đệm bằng rỗng. Lưu các thong tin về thí sinh vào tệp ‘thisinh.txt’ trong ổ đĩa C:\
b) Tìm điểm thi và địa chỉ của thí sinh trong tệp “thisinh.txt” có họ đệm và tên nhập từ bàn phím, đưa kết quả tìm kiếm ra màn hình.
(Chỗ kết thúc em không biết làm kiểu gì.......)
Bài 4:
Cho trước dãy số n số nguyên a1, a2,…,an là một dãy không giảm và 2 chỉ số I, j (1<=i<=j<=n)
Dữ liệu vào: từ file IN.TXT gồm:
- Dòng đầu tiên chứa n
- Dòng thứ 2 chứa dãy số a1,a2,…,an
- Dòng thứ 3 chứa 2 số I, j
(Các số trên cùng một dòng cách nhau ít nhất bởi một dấu cách)
Kết quả ghi ra file OUT.TXT có:
- Dòng đầu tiên chứa số lần lặp lại nhiều nhất của các số trong dãy a1, a2, …, an
- Dòng thứ 2 chứa số lần lặp lại nhiều nhất của số lớn nhất có trong dãy
a1, a2,…, an

Bài 5: Cho một mảng cấp n*n (n lẻ), viết chương trình nhập vào một số tự nhiên n, sau đó điền vào các số từ 1 tới n^2 vào mảng (không cần theo thứ tự) sao cho tổng các hang ngang, hang dọc và 2 đường chéo đều bằng nhau
Ngôn ngữ lập trình | Máy tính và Internet 04/04/2011 Đăng bởi Chưa đặt tên
Câu trả lời
1 trong số 5
Thuật toán thôi nhá, chứ còn về pascal thì tớ không biết. Làm thử bài 1 cậu xem thử.

Lập chương trình xếp các dấu * thành tam giác cân n dòng (n<40), đỉnh của tam giác nằm ở chính giữa trên cùng màn hình ( với n đọc từ bàn phím)

Để làm được tam giác cân = các dấu * thì ta có thể hiểu là mỗi dòng là các khoảng trắng của phím space sau đó là tập hợp số lẻ của các ký tự * liên tiếp (VD: 1,3,5,7,9).

Space của dòng đầu tiên có thể tính được bằng cách lấy n-1, * của dòng đầu tiên = 1.
Space của dòng thứ 2 có thể tính được bằng cách lấy n-2, * của dòng thứ 2 = 3.
Space của dòng thứ 3 có thể tính được bằng cách lấy n-3, * của dòng thư 3 = 5.
Cứ như vậy cho đến dòng n
Space của dòng n = 0, * của dòng n = n*2 - 1

Đấy, thuật toán là như vậy thì bạn có thể xử lý code bằng 1 vòng lặp for với giá trị i bắt đầu = 1, i= i + 1, và kết thúc khi i = n.

For (int i = 1; i<=n;i++)
{
    timeofSpace = timeofSpace + 2;
    timeofStar = i * 2 - 1;
    output = " " (repeat time = timeofSpace) + "*" (repeat time = timeofStar)
}

Ở trên chỉ là ví dụ minh họa thôi, mong là cậu hiểu được :D
04/04/2011 Đăng bởi nahc-soraki
2 trong số 5
Bạn đưa ra câu hỏi có nhiều bài toán quá! Bài nào cũng hóc búa, để giải hết chắc cả ngày mới xong. Lần sau bạn nên đặt câu hỏi ngắn thôi (mỗi câu 1 bài) như vậy mọi người dễ dàng giúp bạn hơn, do thời gian không nhiều nên tôi xin góp ý với bạn bài 1 thôi:
- Màn hình văn bản của Pascal có 80 cột và 25 dòng, nên vẽ tam giác cân như trên thì n<=25 mà thôi.
- Khi vẽ, dấu * ở dòng 1 không thể nằm chính giữa màn hình mà nằm lệch trái (cột 40) hoặc lệch phải (cột 41) 1 chút. VD ta chọn cột 40:
Vì vậy:
+ Số khoảng trắng trước dấu * ở dòng 1 là 39 (=40 - 1), số dấu * cần vẽ là 1.
+ Số khoảng trắng trước dấu * ở dòng 2 là 38 (=40 - 2), số dấu * cần vẽ là 3.
+ Số khoảng trắng trước dấu * ở dòng 3 là 37 (=40 - 3), số dấu * cần vẽ là 5.
...
+ Số khoảng trắng trước dấu * ở dòng n là 40 - n, số dấu * cần vẽ là 2n - 1.
----- Sau đây là thủ tục để vẽ:
Procedure Ve(n : byte);
Var i, j, k : byte;
Begin
For i := 1 to n do
Begin
For j := 1 to 40 - i do Write(' ');
For k := 1 to 2*i - 1 do Write('*');
Writeln;
End;
-------------
Còn mấy bài kia hẹn dịp khác nhé!
Chào bạn!
10/04/2011 Đăng bởi Trần Ngọc Thanh Lâm
3 trong số 5
soraki dùngc++  đó  bạn.cuối quyển tin 11 có giới thiệu qua.cách làm của bạn rất hay.bạn nên cho mỗi bài vào 1 câu hỏi (ai đó mà làm cả 5 thì...mà mỗi người làm 1 bài cũng...)
và gắn nhãn pascal cho câu pascal.c++ cho câu dùng c++ nhé
mình làm bài 3
type thí sinh record
  họ đệm:text;
  tên:text;
  điểm thi:real;
  địa chỉ:text;
   end;
var a,b:thí sinh;
    f1:text;
    md:char;
begin
assign(f1,thisinh.txt');
write('bạn muốn nhập nhấn 1,xuất nhấn 2');readln(md);
if md =1 then
while not b.[họ đệm] =0 then
begin
write ('nhập họ đệm'); read(b.[họ đệm]); write('nhập họ');read(b.[tên])
write('nhập điểm');read(b.[hoj đệm]);write ('nhập địa chỉ')readln(b.địa chỉ);
write (f1,b);
end;
if md=2 then
begin
write (nhập tên và họ tên);readln(a.[họ tên],a[tên]);
reset(f1;)readln(f1,b[họ tên],b.[tên],b.[điểm],b.[địa chỉ]);
while (a.[họ tên]<>b.[họ tên] and a[tên]<>b.[tên] )or not eof(f1) then
begin readln(f1,b[họ tên],b.[tên],b.[điểm],b.[địa chỉ]);end;
if a.[họ tên]=b.[họ tên] and a[tên]=b.[tên] then write (b.[điểm],b.[địa chỉ]);
readln;
end;
end.
02/05/2011 Đăng bởi ông già chậm hiểu
4 trong số 5
bai 1
begin
writeln('      * ' );
writeln('     *** ' );
writeln('    ***** ' );
writeln('   ******* ' );
end.
18/10/2011 Đăng bởi tran van hien
5 trong số 5
Ý tưởng: Dùng lệnh gotoxy để di chuyển con trỏ đến 1 vị trí trên màn hình. Sau đó in ra 1 số lượng dấu sao để tạo thành tam giác.
<--chương trình đầy đủ nhé-->
Var i,j,n :byte;
begin
writeln('nhap n=');
readln(n);
for i:=1 to n do
begin
gotoxy(n-i+15, i+15);
for j:=1 to (2i-1) do
write('*');
end;
readln
end.
<--hết-->
04/01/2012 Đăng bởi Chưa đặt tên
Bạn cũng có thể quan tâm
Chứng minh.Với mọi số nguyên dương thì: (3^n+2)-(2^n+2)+(3^n)-(2^n) chia hết cho10
aj pjt tra loj ho dj. zo day ne. tra loj duoc cau nao hay cau dok nha!!!!!!!!!
chứng minh rằng với mọi số nguyên dương n ta có
Tìm số nguyên n sao cho 2n^2+5 chia hết cho n+2
Tìm số tự nhiên n
Đăng nhập
Xem Giải Đáp ở: Di động | Cổ điển
©2014 Google - Chính sách bảo mật - Trợ giúp