数値を分割して数字を int 配列に格納する方法はありますか?
数字からいくつかの数字を削除する方法を探しています(割り切れるアルゴリズムの証明のため)。
たとえば、番号が 12345 の場合、次の操作を実行する必要があります。
1234 - 5 = 1229
これを行う方法はありますか?
数値を分割して数字を int 配列に格納する方法はありますか?
数字からいくつかの数字を削除する方法を探しています(割り切れるアルゴリズムの証明のため)。
たとえば、番号が 12345 の場合、次の操作を実行する必要があります。
1234 - 5 = 1229
これを行う方法はありますか?
n % 10
最後の桁の取得とその他の桁の取得に使用しn / 10
ます。たとえば、5=12345%10、1234=12345/10 です。
int array[6];
int n = 123456;
for (int i = 5; i >= 0; i--) {
array[i] = n % 10;
n /= 10;
}
一般に、vector
C++ では s が好まれます。特にこの場合は、桁数が事前にわからない可能性があるためです。
int n = 123456;
vector<int> v;
for(; n; n/=10)
v.push_back( n%10 );
v
が含まれ{6,5,4,3,2,1}
ます。必要に応じてstd::reverse
、逆にすることもできます。
sudo コードで回答します。
int [] makeArrayFromInt (int input){
arr = new int [floor(log(input)/log(10)) + 1]
int index = 0
while(input>0){
arr[index]=input%10
input=input/10
index++
}
return arr
}
基本的な考え方は、mod 10 を使用して特定の桁の値を取得し、10 で割って次の桁を取得することです。10 で割るとゼロになるまでこのプロセスを繰り返します。Floor(log(input)/log(10)) + 1 は、数値の桁数を調べるトリックです。