Bài toán cộng số lớn

P

p_trk

[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

mình cho một số = xâu S1
số còn lại = xâu S2
sau đó cộng kí tự ( trước đó phải đổi ord(s)-48 )
cộng vào em lưu vào mảng A
rồi sau đó đọc mảng A là ra kq;
theo các bạn việc mình lưu mảng A có nhược điểm gì không ?
 
O

ochuotqb

Lưu mảng A làm hao bộ nhớ, tốn thời gian, chương trình giài thêm.
Nên lưu vào 1 xâu mới thôi :)
 
P

p_trk

cho hai xâu nhập từ file ( xâu có cả chữ và số )
yêu cầu đảo xâu --> bỏ kí tự không phải số ---> bỏ số 0 không có nghĩa --> cộng hai số tìm được từ hai xâu
VD:
SUM.INP
0et12iu3423iu153535u153090
0u94iuf93jfi39rf93rjf02090
 
Q

quanghero100

Có phải bài toán tính tổng hai số lớn mà hai số đó là hai chuỗi kí tự số không nếu đúng thì bài làm của mình đây mọi người chạy thử:D:D
Mã:
program phep_cong_so_lon;
uses crt;
var s1,s2,s3,s4:string;
    i,j,d,n1,k1,n2,k2,t:integer;
begin
 clrscr;
 writeln('moi nhap hai so hang: ');
 writeln('so hang thu nhat:'); readln(s1);
 writeln('so hang thu hai:'); readln(s2);
 d:=0;   s4:='';
 if length(s1)>=length(s2) then
  begin
  i:=length(s1); j:=length(s2);
   repeat
     val(s1[i],n1,k1);
     val(s2[j],n2,k2);
     t:=n1+n2+d;
     d:=t div 10;
     t:=t mod 10;
     str(t,s3);
     s4:=s4+s3;
   i:=i-1; j:=j-1;
   until j<0;
   for i:=length(s1)-length(s2)-1 downto 1 do
   s4:=s4+s1[i];
  end
  else
  begin
   i:=length(s1); j:=length(s2);
   repeat
     val(s1[i],n1,k1);
     val(s2[j],n2,k2);
     t:=n1+n2+d;
     d:=t div 10;
     t:=t mod 10;
     str(t,s3);
     s4:=s4+s3;
   dec(i); dec(j);
   until i<0;
   for i:=length(s2)-length(s1)-1 downto 1 do
    s4:=s4+s2[i];
  end;
  for i:=length(s4) downto 1 do
   write(s4[i]);
  readln;
  end.
 
P

p_trk

Starlove : Bạn kiểm tra lại giúp mình !
có thể bạn hiểu nhầm đề bài
bộ test sai :
123fdg
321
=> kq: 155100 (sai) kết quả đúng là : 321+123=444
 
O

ochuotqb

Mã:
var st,stn,sth,ch:string; du,i,s,key,a,b:byte; code:integer;
     function Posnum(st:string):byte;
              var i:byte; check:boolean;
                 begin
                        check:=false;
                        i:=1;
                             while (i<=length(st)) and (not check) do
                                   if st[i] in ['0'..'9'] then i:=i+1
                                      else
                                          check:=true;
                                   if check then Posnum:=i else
                                            posnum:=0;
                             end;

        begin
                write('Nhap stn: ');
                readln(stn);
                            while posnum(stn)<>0 do
                                  delete(stn,posnum(stn),1);
                write('Nhap sth: ');
                readln(sth);
                            while posnum(sth)<>0 do
                                  delete(sth,posnum(sth),1);
        while length(stn)<length(sth) do
              stn:='0'+stn;
        while length(sth)<length(stn) do
              sth:='0'+sth;
        writeln(stn,' ',sth);
        du:=0;
for i:=length(stn) downto 1 do
                   begin
                        val(stn[i],a,code);
                        val(sth[i],b,code);
                        du:=(a+b+du) div 10;
                        key:=(a+b+du) mod 10;
                    str(key,ch);
                    st:=ch+st;
                   end;
                    if du >0 then
                       begin
                            str(du,ch);
                            st:=ch+st;
                       end;
         write(st);
                    readln
end.
Send mấy chú
Giải thuật: Xoá tất cả các chữ có trong xâu stn và sth rồi sau đó cộng hai xâu đó vào .
 
Top Bottom