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.