Câu hỏi:
Giúp em bài tập về nhà Tổng hợp lớp 9 câu hỏi như sau: Viết chương trình để nén và giải nén một xâu ký tự . (3đ)
Ví dụ: Xâu ‘4A2B2C’ sau khi giải nén sẽ trở thành ‘AAAABBCc’.
C++
ai giúp tui với đg cần gấp
Trả lời 2:
Gia Sư Hoàng Khang gữi câu trả lời dành cho bạn:
#include <bits/stdc++.h>
using namespace std;
int x;
string t,s;
int xau_to_so(string t)
{
int res = 0;
for (int i=0;i<=t.length()-1;i++)
{
int x = int(t[i])-48;
res = res*10+x;
}
return res;
}
void xuat(int x, char c)
{
for (int i=1;i<=x;i++)
cout<<c;
}
void giai()
{
t = “”;
for (int i=0;i<=s.length()-1;i++)
{
if ((‘0′<=s[i])&&(s[i]<=’9’))
t = t+s[i];
else
{
if (t!=””)
{
x = xau_to_so(t);
xuat(x,s[i]);
t = “”;
}
else cout<<s[i];
}
}
}
int main()
{
getline(cin,s);
giai();
}
Trả lời 1:
Gia Sư Hoàng Khang gữi câu trả lời dành cho bạn:
#include <bits/stdc++.h>
using namespace std;
int x;
string t,s;
int xau_to_so(string t)
{
int res = 0;
for (int i=0;i<=t.length()-1;i++)
{
int x = int(t[i])-48;
res = res*10+x;
}
return res;
}
void xuat(int x, char c)
{
for (int i=1;i<=x;i++)
cout<<c;
}
void giai()
{
t = “”;
for (int i=0;i<=s.length()-1;i++)
{
if ((‘0′<=s[i])&&(s[i]<=’9’))
t = t+s[i];
else
{
if (t!=””)
{
x = xau_to_so(t);
xuat(x,s[i]);
t = “”;
}
else cout<<s[i];
}
}
}
int main()
{
//freopen(“gnen.inp”,”r”,stdin);
//freopen(“gnen.out”,”w”,stdout);
getline(cin,s);
giai();
}