Viết chương trình tính phép tính cộng trong xâu nhập vào bằng ngôn ngữ c++ (ví dụ:”1+2+345″ thì xuất ra kết quả là 348)
Đầu vào, đầu ra:
– [Thời gian chạy] 0.5s với c++, 4s với python, 3s với java
– [Đầu vào] String cal
– [Đầu ra] int
Viết chương trình tính phép tính cộng trong xâu nhập vào bằng ngôn ngữ c++ (ví dụ:”1+2+345″ thì xuất ra kết quả là 348)
Đầu vào, đầu ra:
– [Thời gian chạy] 0.5s với c++, 4s với python, 3s với java
– [Đầu vào] String cal
– [Đầu ra] int
#include<bits/stdc++.h>
using namespace std;
int num(char x){ return x – ‘0’;}
int intValue(string s){
int res = 0;
for(int i=0;i<s.size();i++) res = res*10 + num(s[i]);
return res;
}
int strtto(string s)
{
string t;
int i,n,a,e,tong;
n=s.size()-1;
for (int i=0;i<=n+1;i++)
{
if(s[i]!=’+’&&i!=n+1)
{
t=t+s[i];
}
else
{
a=intValue(t);
tong+=a;
t=””;
}
}
return tong;
}
int main()
{
string cal=”1+2+345″;
cout<<strtto(cal);
}
// tham khảo
uses crt;
var s,t:string; i,n,a,e,tong:longint;
begin
clrscr;
write(‘S=’);readln(s);
n:=length(s);
for i:=1 to n+1 do
if (s[i]<>’+’)and(i<>n+1) then t:=t+s[i] else
begin
val(t,a,e);
inc(tong,a);
t:=”;
end;
writeln(tong);
readln
end.
////////////////
Giải thích:
Chạy từ 1 tới n+1(độ dài của s+1):
Nếu mà s[i] là số và nó ko phải là dấu + và i ko là n+1 (trường hợp đặc biệt)thì thêm vào xâu t
Không thì đổi t thành số rồi thêm vào tổng