Trang chủ Tin Học Lớp 8 #include <iostream> using namespace std; int main() { int n,t=0,f[10001],d[10001]; cin>>n; int a[n+1]; for (int i=1;i<=n;i++) { cin>>a[i
Câu hỏi :

#include <iostream> using namespace std; int main() { int n,t=0,f[10001],d[10001]; cin>>n; int a[n+1]; for (int i=1;i<=n;i++) { cin>>a[i]; t=t+a[i]; } t=t/2; //QHD for (int i=1;i<=t;i++) { f[i]=INT_MAX; for (int j=1;j<=n;j++) if (i>=a[j] && j>f[i-a[j]]) { f[i]=j; break; } } //Truyvet while (f[t] > n) t--; while (t > 0) { d[f[t]]=1; t=t-a[f[t]]; } for (int i=1;i<=n;i++) if (d[i]==1) cout<<a[i]<<" "; cout<<endl; for (int i=1;i<=n;i++) if (d[i]!=1) cout<<a[i]<<" "; cout<<endl; } dịch sang pascal giúp mik vs ạ

Lời giải 1 :

\begin{array}{c} \color{#db1616}{\texttt{#Khoadang09}} \end{array}

*Một số điểm đặc biệt bạn cần lưu ý :

- Ở câu lệnh t=t/2 khi dịch thay vì dùng phép chia, mình dùng phép div (chia lấy nguyên), vì ở C++, khi chia số nguyên cho số nguyên, kết quả là số nguyên tương tự phép div

- Phép and trong C++ là && dịch sang Pascal thành and

- INT_MAX dịch sang Pascal là Maxint, có tác dụng trả về giá trị lớn nhất của kiểu dữ liệu

- Toán tử giảm t-- trong C++ dịch sang Pascal là hàm dec(t)

- Toán tử khác != trong C++ dịch sang Pascal là <>

- Câu lệnh cout << endl ; có tác dụng đưa con trỏ xuống dòng, dịch sang Pascal là writeln();

*Code sau dịch :

// không biết nó có tác dụng, nhưng mà chạy thử thì chạy ổn

var f, d, a :array [0..10001] of longint;
    n, i, j, t : longint;
begin

    readln(n);
    t := 0 ;
    for i := 1 to n do 
         begin
        read(a[i]);
        t := t + a[i];
         end ;
    t := t div 2 ;
    // QHD
    for i := 1 to t do 
         begin
        f[i] := Maxint;
        for j := 1 to t do 
            if (i>=a[j]) and (j>f[i-a[j]]) then
                 begin
                f[i] := j ; break;
                 end ;
         end ;
    // truyvet
    while (f[t]>n) do dec(t);
    while t > 0 do 
         begin
        d[f[t]] := 1 ;
        t := t-a[f[t]];
         end ;
    for i := 1 to n do 
        if d[i] = 1 then write(a[i],' ');
    writeln;
    for i := 1 to n do 
        if d[i] <> 1 then write(a[i],' ');
    writeln;

end.

Bạn có biết?

Tin học là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng. Tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin. Hãy tận dụng sức mạnh của tin học để giải quyết các vấn đề và sáng tạo ra những giải pháp mới!

Nguồn :

Wikipedia - Bách khoa toàn thư

Tâm sự lớp 8

Lớp 8 - Năm thứ ba ở cấp trung học cơ sở, học tập bắt đầu nặng dần và sang năm lại là năm cuối cấp, áp lực lớn dần. Hãy chú ý đến sức khỏe, cân bằng giữa học và nghỉ ngơi để đạt hiệu quả tốt nhất!

Nguồn :

sưu tập

Copyright © 2024 Giai BT SGK