ページ 1 / 1
桁数の数え方
Posted: 2016年2月29日(月) 12:04
by チタン合金
コード:
#include<iostream>
int main(void){
using std::cout;
using std::cin;
int a;
int keta = 0;
cout << "整数値を入力せよ:";
cin >> a;
do {
a = a / 10;
keta++;
} while (a);
cout << "その数は"<< keta << "桁です。\n";
cin.ignore();
getchar();
return(0);
この通りやれば、ビルドはできるのですが、この問題に関して、
桁数の数え方というのがあるのですが、どういう事なのか、意味が解りません。
a の場合 123 → 12 → 1 → 0 //10で割っていく
ketaの場合 0→ 1 → 2 →3 //1ずつ増やしていく
意味が解らないので教えて下さい。
Re: 桁数の数え方
Posted: 2016年2月29日(月) 13:16
by チタン合金、
ketaが解らなかったのですが、なんとなく解りました^^;
後よければ、doの部分の式が、0になった時終了とありますが、どこで終了しているのか教えて頂ければ、幸いですorz
Re: 桁数の数え方
Posted: 2016年2月29日(月) 16:27
by チタン合金
とりあえず、解決にしときますー。
Re: 桁数の数え方
Posted: 2016年2月29日(月) 16:46
by Hiragi(GKUTH)
インデントがぐちゃぐちゃ(というか最後のカッコが抜けてる?)ですので揃えることを意識してください。
コード:
#include <iostream>
int main(void) {
using std::cout;
using std::cin;
int a;
int keta = 0;
cout << "整数値を入力せよ:";
cin >> a;
do {
a = a / 10;
keta++;
} while (a);
cout << "その数は" << keta << "桁です。\n";
cin.ignore();
getchar();
return(0);
}
一行一行何をしているか書き出してみましょう。
例えば465(適当な数値)を入力します。
↓
doよりループに入ります。
↓
10で割ると 46.5 です、int型ですので小数点は切り捨てられ、aの内容は46になります。
↓
ketaに1加算されます。 この時ketaの内容は1です。
↓
whileよりカッコ内が0で有ればループを抜けるので、現在aの内容は46ですのでdoに戻ります。
↓
同様にaは46 から 4(4.6) , ketaは1から2
whileはaが4ですのでまたdoに戻る
↓
またまた同様にaは4 から 0(0.4) , ketaは2から3
whileはaが0ですのでdoに戻らず次の行に進みます。
この時ketaは3です。
465は3ケタ... 分かったでしょうか?
Re: 桁数の数え方
Posted: 2016年2月29日(月) 18:04
by チタン合金
なるほど、解りましたー、解りやすい説明ありがとうございます。m(__)m
これからは、自分の力でも理解できるように頑張ります。
Re: 桁数の数え方
Posted: 2016年2月29日(月) 23:15
by 超初級者
こんなのでもよかったりして…。
コード:
#include <iostream>
#include <cmath>
using namespace std;
int main(void)
{
int n;
cout << "Input an integer:";
cin >> n;
cout << (int) (log10((double) n) + 1) << "\n";
return 0;
}
Re: 桁数の数え方
Posted: 2016年3月01日(火) 04:55
by チタン合金
>>超初級者さん
今は、まだ理解ができていませんが、参考にさせて頂きます。
ありがとうございます。