Các bài tập Pascal nâng cao dành cho thi Tỉnh!


quảng cáo tại Diễn Đàn Tin Học
 

Hãy tìm kiếm trước khi HỎI hoặc ĐĂNG BÀI


kết quả từ 1 tới 5 trên 5
  1. #1
    Người Đóng Góp Hàng Đầu Avatar của HappySoftGroup
    Gia nhập
    May 2008
    Nơi cư ngụ
    Tp. Cam Ranh - Khánh Hòa
    Bài gởi
    2,265
    Bài viết Cám ơn / Thích
    Downloads V.I.P
    2
    Uploads
    0

    Các bài tập Pascal nâng cao dành cho thi Tỉnh!

    Trung tâm dịch vụ

    Có N địa điểm dân cư đánh số từ 1 đến N. Giữa M cặp địa điểm trong số N địa điểm nói trên có tuyến đường nối chung. Người ta cần xây dựng một trung tâm dịch vụ tổng hợp tại một địa điểm hoặc là trùng với một trong số các địa điểm dân cư hay là nằm trên tuyến đường nối 2 địa điểm dân cư hay là nằm trên tuyến đường nối 2 địa điểm nào đó, sao cho tổng khoảng cách từ trung tâm dịch vụ đến N địa điểm dân cư là nhỏ nhất. Ta gọi khoảng cách giữa 2 địa điểm là độ dài đường đi ngắn nhất nối chúng. Giả sử rằng N địa điểm trên liên thông với nhau.
    Dữ liệu vào: Cho trong File TRUNGTAM.INP gồm M+1 dòng:
    + Dòng 1: chứa 2 số N và M.
    + Dòng i+1 (1<=i<=M) ghi 3 số nguyên dương: hai số đầu là chỉ số của hai địa điểm dân cư được nối nhau bởi tuyến đường này, còn số thứ 3 là độ dài của tuyến đường.
    Dữ liệu ra là số nguyên dương.
    Kết quả: Xuất ra File TRUNGTAM.OUT thông báo vị trí trung tâm dịch vụ và tổng khoảng cách từ trung tâm dịch vụ đến các địa điểm dân cư. Nếu điểm tìm được nằm trên tuyến đường thì cần chỉ rõ 2 đầu của tuyến đường và khoảng cách từ địa điểm xây dựng đến đầu thứ nhất.
    Ví dụ:
    Code:
              TRUNGTAM.INP             TRUNGTAM.OUT
              6 7                                  Trung tam dich vu dat tai diem 1
              1 2 3                               Tong khoang cach la 19
              2 3 4 
              1 4 2
              4 5 5
              5 6 1
              5 1 3
              3 6 4
    Chúc các bạn luyện tập tốt!




    DMCA.com

    Chia sẻ bài viết



    Copy đoạn dưới và gửi cho bạn bè qua Yahoo!
    Link bài viết Diễn Đàn Tin Học by QRCode
    ...♥.♥.♥..:: Chúc Tất cả các bạn thành công ::..♥.♥.♥...
    ---------o0o---------
    Chúc bạn vui vẻ̉ khi đến với DIENDANTINHOC.VN
    ============>>><<<============

  2. #2
    Thành viên nhiệt tình Avatar của hang_vt
    Gia nhập
    Jun 2008
    Nơi cư ngụ
    Vũng Tàu
    Bài gởi
    373
    Bài viết Cám ơn / Thích
    Downloads V.I.P
    0
    Uploads
    0
    thi tỉnh đâu có thi QHĐ , thi quay lui thôi

  3. #3
    Người Đóng Góp Hàng Đầu Avatar của HappySoftGroup
    Gia nhập
    May 2008
    Nơi cư ngụ
    Tp. Cam Ranh - Khánh Hòa
    Bài gởi
    2,265
    Bài viết Cám ơn / Thích
    Downloads V.I.P
    2
    Uploads
    0
    Thôi thì mình post code cho các bạn tham khảo nếu muốn biết thêm nhá!
    Code:
    Uses Crt;
    Const maxN = 50;
          FI = 'TRUNGTAM.INP';
          FO = 'TRUNGTAM.OUT';
    Var   A, C : Array[1..maxN, 1..maxN] Of Integer;
          N, M, P, Q, i, j, k, Luu, Min : Integer;
          F : Text;
    
    Procedure Nhap;
    Var x, y, z : Byte;
    Begin
            Assign(F, FI);
            Reset(F);
            Readln(F, N, M):
            FillChar(A, SizeOf(A), 0);
            C := A;
            For i := 1 To M Do
            Begin
                    Readln(F, x, y, z);
                    A[x, y] := z;
                    A[y, x] := z;
            End;
            Readln(F, P, Q);
            Close(F);
    End;
    
    Procedure XuLy;
    Var d : Integer;
    Begin
            Assign(F, FO);
            Rewrite(F);
            For k := 1 To N Do
            For i := 1 To N Do
                    If A[i, k] > 0 Then
                    For j := 1 To N Do
                            If A[j, k] > 0 And i <> j Then
                            If A[i, j] = 0 Or (A[i, j] > A[i, k] + A[k, j]) Then
                            Begin
                                    A[i, j] := A[i, k] + A[k, j];
                                    C[i, j] := k;
                            End;
                            Luu := 0;
                            Min := MaxInt;
            For i := 1 To N Do
            Begin
                    D := 0;
                    For j := 1 To N Do
                    Begin
                            If i <> j Then D := D + A[i, j];
                            If i <> j And A[i, j] = 0 Then
                            Begin
                                    D := MaxInt;
                                    j := N;
                            End;
                    End;
                    If D < Min Then
                    Begin
                            Luu := i;
                            Min := D;
                    End;
            End;
            Writeln(F,'Trung tam dich vu dat tai dia diem ',Luu);
            Write(F,'Tong khoang cach la ',Min);
            Close(F);
    End;
    
    Begin
            Nhap;
            XuLy;
    End.
    Chúc các bạn học tập tốt!
    ...♥.♥.♥..:: Chúc Tất cả các bạn thành công ::..♥.♥.♥...
    ---------o0o---------
    Chúc bạn vui vẻ̉ khi đến với DIENDANTINHOC.VN
    ============>>><<<============

  4. #4
    Người Đóng Góp Hàng Đầu Avatar của HappySoftGroup
    Gia nhập
    May 2008
    Nơi cư ngụ
    Tp. Cam Ranh - Khánh Hòa
    Bài gởi
    2,265
    Bài viết Cám ơn / Thích
    Downloads V.I.P
    2
    Uploads
    0
    Một bài Vét Cạn nhé! Đề bài này chỉ là một trường hợp, các bạn hãy phát triển thành một bài tổng quát nha!

    Lập phương trình tìm tất cả các cách thay thế các dấu chấm hỏi (?) bởi các dấu phép tính +, -, *, / trong biểu thức dưới đây sao cho biểu thức đúng:
    (((((a1 ? a2) ? a3) ? a4) ? a5) ? a6) = a7.
    Trong đó, a1, a2, a3, a4, a5, a6, a7 nhập từ bàn phím.

    Code:
    Uses Crt;
    Const Dau : Array[1..4] Of Char = ('+', '-', '*', '/');
    Var i, j, k, l, m, dem : Integer;
        a : Array[1..7] Of Real;
    
    Procedure Input;
    Var t : Integer;
    Begin
            Writeln('Chuong trinh dien phep toan vao dau "?"');
            Writeln('(((((a1?a2)?a3)?a4)?a5)?a6) = a7');
            For t := 1 To 7 Do
            Begin
                    Write('a',t,'=');
                    Readln(a[t]);
            End;
            Writeln;
    End;
    
    Procedure Print;
    Var t : Integer;
    Begin
            Inc(Dem);
            Write('(((((',a[1]:0:0,dau[i],a[2]:0:0,')');
            Write(Dau[j],a[3]:0:0,')',dau[k],a[4]:0:0,')');
            Write(Dau[l],a[5]:0:0,')',dau[m],a[6]:0:0,')');
            Writeln('=',a[7]:0:0);
    End;
    
    Function F(x, y : Real; d : Integer) : Real;
    Begin
            Case d Of
            1: F := x + y;
            2: F := x - y;
            3: F := x * y;
            4: F := x / y;
            End;
    End;
    
    Procedure Process;
    Var t : Integer;
    Begin
            Writeln('Ket qua: ');
            Dem := 0;
            For i := 1 To 4 Do
                    For j := 1 To 4 Do
                            For k := 1 To 4 Do
                                    For l := 1 To 4 Do
                                            For m := 1 To 4 Do
                                            If F(F(F(F(F(a[1],a[2],i),a[3],j),a[4],k),a[5],l),a[6],m)=a[7] Then Print;
            If Dem = 0 Then Writeln('Vo nghiem')
            Else Writeln('Co tat ca ',dem,' nghiem');
    End;
    
    Begin
            Clrscr;
            Input;
            Process;
            Readln;
    End.


    ...♥.♥.♥..:: Chúc Tất cả các bạn thành công ::..♥.♥.♥...
    ---------o0o---------
    Chúc bạn vui vẻ̉ khi đến với DIENDANTINHOC.VN
    ============>>><<<============

  5. #5
    Thành viên nhiệt tình Avatar của hang_vt
    Gia nhập
    Jun 2008
    Nơi cư ngụ
    Vũng Tàu
    Bài gởi
    373
    Bài viết Cám ơn / Thích
    Downloads V.I.P
    0
    Uploads
    0
    e góp đề cho vui
    Nhập phân số t/m (0<t<m<969696; t,m nguyên ) . Lập trình thực hiên các yêu cầu
    a) Biểu diễn phân số dưới dạng phân số tối giản
    b) Biểu diện phân số này dưới dạng tổng các phân số có tử số = 1 . Tổng càng ít số hạng càng tốt

Thông tin Chủ đề

Users Browsing this Thread

Hiện đang có 1 người đang đọc bài này. (0 thành viên và 1 khách)

Quyền Hạn Của Bạn

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •