大学の宿題に助けが必要です。私はまだこれに新しいです。整数と文字列を同じベクトルに追加する方法は?
基本的に私は、ランレングス符号化をやっていると私はカウンターの後に文字を追加する方法がわからない:
#include <iostream>
#include <string>
#include <vector>
#include <stdexcept>
void error(std::string str)
{
throw std::runtime_error(str);
}
int main()
{ int counter = 1;
std::string id;
std::vector<int> v;
std::cout << "Enter the data to be compressed: ";
std::cin >> id;
try
{ for(int i = 0; i < id.size(); i++)
{
if(std::isdigit(id[i]))
error("invalid input");
}
std::cout << "The compressed data is: ";
for(int i = 0; i < id.size(); i++)
{
if(id[i] == id[i+1])
{
counter++;
}
else if(id[i]!= id[i+1])
{
v.push_back(counter);
v.push_back(id[i]);
counter=1;
}
}
for(int j = 0; j < v.size(); j++)
std::cout << v[j];
}
catch(std::runtime_error& str)
{
std::cerr << "error: " << str.what() << std::endl;
return 1;
}
return 0;
}
たとえば私入力AAABBB、probramべき出力3a3b場合。問題は、aとbのASCIIコードである397398 97と98を出力することです。 私は、カウンターの後ろに文字を置く方法と、同じベクトルにする方法を知らない。
サウンズあなたが情報の* 2つの*の部分をカプセル化するために 'class'を必要とするようにエンコードされたデータ(量と文字)のチャンクを構成します。 – crashmstr
私たちはまだクラスを正しく学んでいないし、どうやってそれをどうやってやるのか分かりません。 –
それは平行な "配列"問題のようですね – NathanOliver