Tin học Lập trình Pascal !

T

thai_tin

bài tập mới

Nhờ các pro giúp mình bài này.
Trên mặt phẳng cho n điểm. Toạ độ của của các điểm được cho trong một file văn bản trong đó dòng thư i ghi hai số xi,yi là toạ độ của điểm thư i. Các số ghi cách nhau một dấu cách. Lập trình nhập dữ liệu tù file và
a) Thông báo lên màn hình số đường thẳng khác nhau tạo thành bằng cách nối mọi cặp điểm trong số các điểm đã cho.
b) Thông báo lên màn hình số giao điểm của các đường thắng đó.
 
B

bachoc9x

PHP:
uses crt;
const fi='vao.inp';
      fo='ra.out';
      max=30;
Var a:array[1..max] of integer;
    b:array[1..max] of boolean;
    n,k:integer;
    f:text;
Procedure Inkq;
    Var i:integer;
    Begin
       For i:=1 to k do
           write(f,a[i]);
       writeln(f);
    End;
Procedure Try(i:integer);
    Var j:integer;
    Begin
       For j:=1 to n do
           If b[j] then
              Begin
                  a[i]:=j;
                  if i=k then Inkq;
              End
           Else
              Begin
                  b[j]:=False;
                  try(i+1);
                  b[j]:=true;
              End;
    End;
Begin
    Assign(f,fi);reset(f);
    Read(f,n,k);
    Assign(f,fo);rewrite(f);
    Fillchar(b,sizeof(b),True);
    Try(1);
    Close(f);
End.
Qua hướng dẫn của quyển Giải thuật lập trình. Em đã làm bài liệt kê các chỉnh hơp k lặp chặp k. Xem xong so với đáp án thì giống nhưng chạy k ra kết quả. Bạn nào tìm hộ tớ lỗi.
Thanks nhiều
 
B

bachoc9x

Cho mảng mxn chứa các số nguyên, hãy tìm dc đi có tọa độ [1,q] đến ô có tọa độ [m,k] (k là bất kì) sao cho tổng các số đi trên đường đi là nhỏ nhất.Biết rằng từ ô [i,j] chỉ có thể đi sang ô [i+1,j-1] ; [i+1,j]; [i+1,j+1]
(m,n,q, mảng nhập từ bàn phím, kq hiện ra màn hình)
 
D

duynhan1

Cho mảng mxn chứa các số nguyên, hãy tìm dc đi có tọa độ [1,q] đến ô có tọa độ [m,k] (k là bất kì) sao cho tổng các số đi trên đường đi là nhỏ nhất.Biết rằng từ ô [i,j] chỉ có thể đi sang ô [i+1,j-1] ; [i+1,j]; [i+1,j+1]
(m,n,q, mảng nhập từ bàn phím, kq hiện ra màn hình)

Em tạo viền lớn vô cùng ở ngoài rồi quy hoạch động.
F[i,j] là chi phí nhỏ nhất đi từ ô [1,q] đến [i,j]
F[1,q]:=A[1,q] ( A là mảng lưu số nguyên)
[TEX]F[i,j]:=Min(F[i-1,j-1],F[i-1,j],F[i-1,j+1])[/TEX]
 
B

bachoc9x

OK. Cảm ơn anh nhé
.............
Em đang ôn QHD. ai có code bài dãy con chung dài nhất ko cho em xin (or thuật toán cũng dc)
 
P

plan_a2

Cho em hỏi bài 2 của thày Thái trang 36 có code chưa ạ? Bài này hay quá mà chả thấy ai trả lời vậy?
 
P

plan_a2

{$A+,B-,D+,E-,F+,G-,I+,L+,N+,O-,P-,Q+,R-,S+,T-,V+,X+}
{$M 16384,0,655360}
Program badiem;
Uses Crt;
Const fi = 'D:\badiem.inp';
fo = 'D:\badiem.out';
maxN = 2000;
Type td = Record
x, y : Integer;
End;
tarr = Array[1..maxN] of td;
Var a : tarr;
free : Array[1..maxN] of Boolean;
n, i : Integer;
c : LongInt;
input, output : Text;
Procedure Read_file;
Begin
Assign(input,fi); Reset(input); Readln(n);
For i := 1 to n do Readln(input,a.x,a.y);
Close(input);
End;
Procedure Count;
Var j, k, x1, y1, tg : Integer;
Begin
c := 0;
For i := 1 to n-2 do
Begin
Fillchar(free, sizeof(free), true);
For j := i+1 to n-1 do If free[j] then
Begin
tg := 1;
x1 := a[j].x - a.x;
y1 := a[j].y - a.y;
For k := j+1 to n do If free[k] then
If x1*(a[k].y-a.y)=y1*(a[k].x-a.x) then
Begin
Inc(tg);
free[k] := False;
End;
Inc(c,tg*(tg-1) div 2);
End;
End;
End;
Procedure Write_file;
Begin
Assign(output,fo); Rewrite(output);
Writeln(output,c);
Close(output);
End;
BEGIN
ClrScr;
Read_file;
Count;
Write_file;
END.
 
P

plan_a2

Tệp babiem.inp có cấu trúc như sau:
6
0 0
0 1
0 2
1 1
1 2
2 2
Ta sẽ được tệp badiem.out có cấu trúc như bài PUNCTER là số lần ba điểm thẳng hàng. Cụ thể ở đây là:
3
 
P

plan_a2

Đây có lẽ là lần cuối em phải nghiên cứu Pascal, khó nhưng mà hay. Từ 22/07 trở đi em phải học Access rồi để sang năm thi HSG 12. Em hy vọng lần sau lên diễn đàn thấy được code bài PUNCTER. Theo em đừng quá nói xa xôi, hãy giải quyết từng bài của thành viên chứ, sao để bài này lâu quá mà không có code.
 
T

thanhphatsuper

help me!!!
Cho xâu S = ’123456789’ hãy tìm cách chèn vào S các dấu '+' hoặc '-' để thu được biểu thức có giá trị bằng số nguyên M cho trước (nếu có thể).
Dữ liệu vào trong file CHENXAU.INP gồm một số nguyên M.
Dữ liệu ra ghi vào file văn bản CHENXAU.OUT tất cả các phương án chèn (nếu có) và ghi Khong co nếu như không thể thu được M từ cách làm trên.
Ví dụ:

CHENXAU1.INP
500
CHENXAU1.OUT
1-234-56+789
1-2+345+67+89
-12+34+567-89


CHENXAU2.INP
1000

CHENXAU2.OUT
Khong co
 
H

hoangha8394

help me!!!
Cho xâu S = ’123456789’ hãy tìm cách chèn vào S các dấu '+' hoặc '-' để thu được biểu thức có giá trị bằng số nguyên M cho trước (nếu có thể).
Dữ liệu vào trong file CHENXAU.INP gồm một số nguyên M.
Dữ liệu ra ghi vào file văn bản CHENXAU.OUT tất cả các phương án chèn (nếu có) và ghi Khong co nếu như không thể thu được M từ cách làm trên.
Ví dụ:

CHENXAU1.INP
500
CHENXAU1.OUT
1-234-56+789
1-2+345+67+89
-12+34+567-89


CHENXAU2.INP
1000

CHENXAU2.OUT
Khong co

Bài này có thể dùng phương pháp duyệt quay lui để giải.:D
 
C

coolboy9x00

Các pro giúp em làm mấy bài pascal này với ^^
Bài 1 :
Viết chương trình tạo têp lưu danh sách các cơ sở cần quản lý an toàn PCCC của Hà Nội bao gồm : tên cơ sở, địa chỉ ( số nhà, đường phố, quận ), số Đt liên hệ. Tên cơ sở được sắp xếp theo thứ tự từ điển .

Bài 2:
Lập chương trình thực hiện:
a, Đọc vào một số nguyên tố có nhiều nhất 6 chữ số
b, Đưa ra màn hình cách đọc số nguyên tố đó. Ví dụ : 156: một trăm năm mươi sáu

Bài 3 :
Viết chương trình nhập họ, tên, điểm trung bình của n học sinh, n nhập từ bàn phím. Xếp thứ hạng n học sinh theo điểm

Bài 4 :
Viết chương trình nhập 10 số tự nhiên bất kì vào 1 tập tin văn bản có tên tapso1, rồi đọc giá trị từ tập tin này ra, nhân các số với 2 và ghi vào tập tin văn bản có ten tapso2.

Bài 5:
Viết chương trình nối 2 tập tin văn bản thành tập thứ 3. Thử lại với 2 tập tin tạo ra ở câu 3

Bài 6 :
Viết chương trình đọc vào nội dung là những chuỗi kí tự chữ 'A'..'Z', từ 'a'..'z' cho 1 file văn bản tên nguon.txt. mã hóa các kí tự này rồi lưu vào file mới có tên mahoa.txt. Các kí tự được mã hóa như sau:
ABCDEFGHILKLMNOPQRSTUVWXYZ
XYZABCDEFGHILKLMNOPQRSTUVW
Hiện ra màn hình nội dung file được mã hóa

Cảm ơn các pro nhìu nhìu :X
 
O

o0_zz_0o

Cho em hỏi
Các câu lệnh, hàm dùng trong Turbo Pascal nhưng không dùng được trong Free Pascal và câu lệnh, hàm thay thế
 
T

trongvu_98

Viết chương trình in ra màn hình các hình sau:
a)
*
***
*****
*******
*********​
b)

*******
*****
***
*
***
*****
*******​

Cho em đoạn mã của đoạn này ạ!
Nếu có thể xin thầy cô cho em luôn cái clip để em xem rõ ràng hơn
 
Last edited by a moderator:
P

p_trk

Các pro giúp em làm mấy bài pascal này với ^^
Bài 1 :
Viết chương trình tạo têp lưu danh sách các cơ sở cần quản lý an toàn PCCC của Hà Nội bao gồm : tên cơ sở, địa chỉ ( số nhà, đường phố, quận ), số Đt liên hệ. Tên cơ sở được sắp xếp theo thứ tự từ điển .

Bài 2:
Lập chương trình thực hiện:
a, Đọc vào một số nguyên tố có nhiều nhất 6 chữ số
b, Đưa ra màn hình cách đọc số nguyên tố đó. Ví dụ : 156: một trăm năm mươi sáu

Bài 3 :
Viết chương trình nhập họ, tên, điểm trung bình của n học sinh, n nhập từ bàn phím. Xếp thứ hạng n học sinh theo điểm

Bài 4 :
Viết chương trình nhập 10 số tự nhiên bất kì vào 1 tập tin văn bản có tên tapso1, rồi đọc giá trị từ tập tin này ra, nhân các số với 2 và ghi vào tập tin văn bản có ten tapso2.

Bài 5:
Viết chương trình nối 2 tập tin văn bản thành tập thứ 3. Thử lại với 2 tập tin tạo ra ở câu 3

Bài 6 :
Viết chương trình đọc vào nội dung là những chuỗi kí tự chữ 'A'..'Z', từ 'a'..'z' cho 1 file văn bản tên nguon.txt. mã hóa các kí tự này rồi lưu vào file mới có tên mahoa.txt. Các kí tự được mã hóa như sau:
ABCDEFGHILKLMNOPQRSTUVWXYZ
XYZABCDEFGHILKLMNOPQRSTUVW
Hiện ra màn hình nội dung file được mã hóa

Cảm ơn các pro nhìu nhìu :X

Bài 2: số nguyên tố có nhiều nhất 6 chữ số
Mã:
 for i:=2 to 999999 do 
  begin
     check[i]:=true; 
     for j:=2 to j do 
      if i mod j = 0 then check[i]:= false;
end;
for i:=1 to 999999 do 
 if check[i] = true then write ( i :4 );
bài 3: dùng record .......
dùng thuật toán quikshop hoăc buddle để sắp xếp theo điểm;
Sau day la thuat toan sap xep cac gia trị trong mảng A : ( minh họa để giải bài trên )
Mã:
j:= n downto  2 do 
  for i:= 1 to j-1 do
      if a[i]> a[i+1] then   
       begin
              t:=a[i];
              a[i]:=a[i+1];
              a[i+1]:=t;

Mình giải một số bài còn lại các bạn thảo luận thêm. mình bận nên không giải hết được
 
Top Bottom