Trang chủ Tin Học Lớp 8 Sử dụng ngôn ngữ lập trình Pascal (Pree Pascal) để...

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í

Câu hỏi :

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

Lời giải 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!

Thảo luận

-- m cũng ko chắc bài này đúng 100% nha, nếu có j sai thì nói m để m sửa lại nha
-- Quên khai báo biến code bạn ơi
-- khi chạy thì exit code 103
-- ukm, để mình sửa lại nha

Lời giải 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è:

image
image
image
image

Bạn có biết?

Tin học, tiếng Anh: informatics, tiếng Pháp: informatique, 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 (ảo). Với cách hiểu hiện nay, 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.

Nguồn : Wikipedia - Bách khoa toàn thư

Tâm sự 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, sang năm lại là năm cuối cấp áp lực lớn dần nhưng các em vẫn phải chú ý sức khỏe nhé!

Nguồn : ADMIN :))

Copyright © 2021 HOCTAP247