私がしたいことは、無期限に長い番号を取得し、文字列に格納し、次に文字列を配列に格納することです。次に、配列内のすべての数字について、配列内のすべての数字が表示された回数をカウントし、最後にそのカウントを(各桁ごとに)表示する必要があります。スイッチがすべてのケースを読み取っていない
#include <iostream>
#include<cstring>
using namespace std;
int main()
{
string re;
int r;
cin>>re;
r=re.length();
int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;
char arr[200];
for (int i=0;i<r;i++)
{
arr[i]=re[i];
}
for (int i=0;i<r;i++)
{
switch(arr[i]){
case '0':
a++;
break;
case '1':
b++;
break;
case '2':
c++;
break;
case '3':
d++;
break;
case '4':
e++;
break;
case '5':
f++;
break;
case '6':
g++;
break;
case '7':
h++;
break;
case '8':
i++;
break;
case '9':
j++;
break;
}
}
cout<<0<<' '<<a<<endl;
cout<<1<<' '<<b<<endl;
cout<<2<<' '<<c<<endl;
cout<<3<<' '<<d<<endl;
cout<<4<<' '<<e<<endl;
cout<<5<<' '<<f<<endl;
cout<<6<<' '<<g<<endl;
cout<<7<<' '<<h<<endl;
cout<<8<<' '<<i<<endl;
cout<<9<<' '<<j<<endl;
}
例えば、私が入力95000991418267990215
を与え、場合、私は次のような出力が得られます。
// <digit> <count>
0 4
1 3
2 1
3 0
4 1
5 2
6 1
7 1
8 0
9 5
それは、例えば、出力は2 2
(桁2回登場)と8 1
を与えている必要があります(数字8が一度登場)。私はエラーを見つけることができません。誰でも助けてくれますか?
@πάνταῥεῖそれは正しくありません。彼は文字列として数値を入力するので、 'arr [i]'は整数ではなく文字です。 – Barmar
@πάνταῥεῖ 'arr'は、入力文字列の文字配列です。 OPがなぜ中間配列を使うのか分かりません。 –
10変数のスペースを使用する場合は、意味のない名前で10を使用するだけではありません。 'digits [10]'という明確な名前の配列を使用してください。また、厄介なスイッチやコピー・ペースト印刷は、すべて単純な索引付け+ループに置き換えることができます。 – StoryTeller