Sử dụng ngôn ngữ lập trình Pascal (Pree Pascal) để lập trình giải các bài toán sau: Cho hai số nguyên dương M và N, M có p chữ số và N có q chữ số. Yê

Sử dụng ngôn ngữ lập trình Pascal (Pree Pascal) để lập trình giải các bài toán sau:
Cho hai số nguyên dương M và N, M có p chữ số và N có q chữ số.
Yêu cầu: Tính tổng của hai số M và N.
Dữ liệu vào: Cho trong file văn bản TONG.INP có cấu trúc như sau:
– Dòng 1: Ghi số nguyên dương p là số lượng chữ số của M (1 ≤ p ≤ 30000).
– Dòng 2: Ghi p chữ số của M theo thứ tự từ trái sang phải, các chữ số được ghi cách nhau ít nhất một dấu cách.
– Dòng 3: Ghi số nguyên dương q là số lượng chữ số của N (1 ≤ q ≤ 30000).
– Dòng 4: Ghi q chữ số của N theo thứ tự từ trái sang phải, các chữ số được ghi cách nhau ít nhất một dấu cách.
Dữ liệu ra: Ghi ra file văn bản TONG.OUT theo cấu trúc như sau:
– Dòng 1: Ghi số nguyên dương k là số lượng chữ số của tổng tìm được.
– Dòng 2: Ghi k chữ số của tổng tìm được theo thứ tự từ trái sang phải, các chữ số được ghi cách nhau ít nhất một dấu cách.
Ví dụ:
TONG.INP TONG.OUT
6
2 2 3 2 3 9
3
2 4 7 6
2 2 3 4 8 6
mong mn lm giúp

0 bình luận về “Sử dụng ngôn ngữ lập trình Pascal (Pree Pascal) để lập trình giải các bài toán sau: Cho hai số nguyên dương M và N, M có p chữ số và N có q chữ số. Yê”

  1. program ct;

    uses crt;

    var i,j,c:longint;

          m,n,k:word;

          p,q,S,S1,S2,S3,St:string;

          v,r:text;

    begin clrscr;

       readln(v,p);

       readln(r,S);

         S1:=’ ‘; S2:=’ ‘;

       for i:=1 to length(S) do

         if S[i]<>#32 then S1:=S1+S[i];

         val(S1,m,c);

       readln(v,q);

       readln(r,St);

       for j:=1 to length(St) do

         if St[j]<>#32 then S2:=S2+St[j];

         val(S2,n);

         k:=n+m;

         str(k,S3);

       writeln(r,length(S3));

       for i:=1 to length(S3) do write(r,S3[i],’ ‘);

       close(v);

       close(r);

    end;

    begin

       assign(v,’TONG.INP’); reset(v);

       assign(r,’TONG.OUT’); rewriter);

    end;

    readln;

    end.

    Học tốt!

    Bình luận
  2. uses crt;
    var d:text; i,p,q,t,nho,a1,b1,e:longint; a,b,k:string; c:char;
    kq:array[1..30000]of longint;
    begin
    clrscr;
       assign(d,’input.pas’);reset(D);
          readln(d,p);
          while not(eoln(d)) do begin read(d,c); if c<>’ ‘ then a:=c+a; end;
          readln(d);
          readln(d,q);
          while not(eoln(d)) do begin read(d,c); if c<>’ ‘ then b:=c+b; end;
       close(D);
       assign(d,’output.pas’);rewrite(D);
       if p<q then
       begin k:=a; a:=b;
       b:=k;
       for i:=1 to 30000 do b:=b+’0′;
       t:=p; p:=q; q:=t; end;
       for i:=1 to p do
          begin
             a1:=0; b1:=0;
             val(a[i],a1,e);
             val(b[i],b1,e);
             kq[i]:=a1+b1+nho;
             if kq[i]>=10 then begin nho:=1; kq[i]:=kq[i] mod 10; end else nho:=0;
          end;
       if nho=1 then begin inc(p); kq[p]:=1; end;
       writeln(d,p);
       for i:=p downto 1 do write(d,kq[i],’ ‘);
       close(d);
    end.

    //////////////////////////////////

    Giải thích:

    Áp dụng qui tắc cộng hồi lớp 3 là:

    Vd 1+13 thì sẽ là

         13

    +

            1

    Số 1 lui về sau vì đó nên chỗ đọc mình đã đảo ngược số đó

    Rồi đạt a là số dài nhất

    Rồi đạt b là số ngắn nhất

    thành

    31

    +

    1

    Tới chỗ tính:

    Cộng thì phai có nhớ nên mình tạo biến nhớ 

    mình cộng hai số thẳng cột.

    Nếu tổng lớn hơn 10 thì lấy số sau rồi nhớ = 1 ko thì bằng 0

    Khi đọ th

    Một số text để bạn tham khảo nè:

    su-dung-ngon-ngu-lap-trinh-pascal-pree-pascal-de-lap-trinh-giai-cac-bai-toan-sau-cho-hai-so-nguy

    Bình luận

Viết một bình luận