Hãy cho mình ý tưởng để tách các chữ số trong mảng

2 câu trả lời

Ý tưởng:

Bạn cần một chương trình thủ tục con để tách số (hoặc thực hiện chung luôn nhưng hơi phức tạp)

Sau đó duyệt hết mảng và gọi thủ tục

Chương trình:

program tach_so;

uses crt;

var A:array[1..1000] of integer;

     n,i:integer;

{---Chuong-trinh-con---}

procedure tach(k:integer);

begin

       while k>0 do

              begin

                     write(k mod 10,' ');

                     k:=k div 10;

              end;

       writeln;

end.

{---Chuong-trinh-chinh---}

BEGIN

       clrscr;

       write('Nhap so luong phan tu: ');  readln(n);

       for i:=1 to n do

              begin

                     write('Nhap so thu ',i,': ');   readln(A[i]);

              end;

       writeln('Ket qua tach so theo thu tu la:');

       for i:=1 to n do

              tach(A[i]);

       readln;

end.

Ý tưởng:

Có 2 cách:

    -Sử dung cấu mod/ div 10;

    - Đổi thành xâu rồi tách;

Cách làm:

Dùng Procedure để gọ thì sẽ tiện, ngắn gọn hơn.

C1.Sử dung cấu mod/ div 10:

uses crt;
var I,N:LONGINT; A:array[1..100000]of longint;
procedure tach(a:longint);
var s,c:string; t:byte;
begin
   s:='';
   while a<>0 do
      begin
         t:=a mod 10;
         str(t,c);
         s:=c+' '+s;
         a:=a div 10;
         t:=t div 10;
      end;
   writeln(s);
end;
begin
clrscr;
   write('n=');readln(n);
   for i:=1 to n do
      begin
         write('a[',i,']=');readln(a[i]);
      end;
   for i:=1 to n do begin write(a[i],': '); tach(A[i]); end;
readln
end.

C2. Đổi thành xâu rồi tách:

uses crt;
var I,N:LONGINT; A:array[1..100000]of longint;
procedure tach(a:longint);
var s:string; i:longint;
begin
   str(a,s);
   for i:=1 to length(S) do write(s[i],' ');
end;
begin
clrscr;
   write('n=');readln(n);
   for i:=1 to n do
      begin
         write('a[',i,']=');readln(a[i]);
      end;
   for i:=1 to n do begin write(a[i],': '); tach(A[i]); writeln;end;
readln
end.

Câu hỏi trong lớp Xem thêm