• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:入力に出現する数字文字をカウントするプログラム)

プログラム中の数字文字カウントとは?

このQ&Aのポイント
  • プログラム中で数字文字をカウントする方法を教えてください。
  • プログラムの中で数字文字を識別し、その出現回数をカウントする方法を教えてください。
  • 数字文字のカウントを行うためのプログラムの理解ができません。

質問者が選んだベストアンサー

  • ベストアンサー
  • f272
  • ベストアンサー率46% (7996/17094)
回答No.2

#1です。 どんな文字にも文字コードが割り振られています。 0という文字には文字コード48 1という文字には文字コード49 (途中省略) 9という文字には文字コード57 となっていて連番になっています。これを前提として 0という文字の出現回数をcnt[0] 1という文字の出現回数をcnt[1] (途中省略) 9という文字の出現回数をcnt[9] に保存したいのであって,一般的に言えば文字コードがcの文字の出現回数はcnt[c-48]に保存することになります。つまりcnt[c - '0']ですね。

aiueo6391
質問者

お礼

回答ありがとうございます、 所で気になったのですがなぜそのような事が解るのですか? プログラムとは全く関係のない質問ですが・・・、 やっぱり数学的要素が関係しているからそこから理屈を学ぶって事ですかね・・・。

aiueo6391
質問者

補足

自分であれこれ試行錯誤した結果多分解りました。 つまり、['0']48を、入力した数値、['2']例えば50から引けばいいんですね、 2が三回だと150になるのでそこで48を三回引くと3回入力したことになる、違いますかね。 数学はあんまり得意ではないのでこのようなやり方なんですが、あってますかね。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • f272
  • ベストアンサー率46% (7996/17094)
回答No.1

while(cin.get(c)){//標準入力から1文字読みこみ if(c >= '0' && c <= '9')//その文字が'0'から'9'の間であれば数字と解釈できるので cnt[c - '0']++;//その数字の出現回数を1だけ増やす }

aiueo6391
質問者

お礼

回答ありがとうございます。 ちょっと疑問が残るので質問ですが、 cnt[c - '0']++;は配列の中で計算をしているのですかね、 [c - '0']の部分が何をしているのか解りません。 実をいうと柴田望洋という方の新装版のプログラミング講義という書籍で勉強しているのですが あいにく問題はのっているのですが、プログラム自体に関しては詳しく載っていません。 解答集が載っているわけでもないので、 申し訳ございません、

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 改行文字について

    #include<iostream> using namespace std; int main(void) { char c; while (cin.get(c)) if (c == '\n') cout << "[RET]\n"; else cout << c; return(0); } これのif (c == '\n')の改行文字と等しいとは何のことを指すのでしょうか? よろしくお願いします。

  • プログラムの動作

    10文字をスキップするプログラムなのですが、どのようにスキップしているのかわからないので教えてください。 下にソースコードを書きます。 #include <iostream> using namespace std; //10文字をスキップする istream &skipchar(istream &stream) { int i; char c; for(i=0; i<10; i++)stream >> c; return stream; } int main() { char str[80]; cout << "いくつかの文字を入力する:"; cin >> skipchar >> str; cout << str << endl; return 0; } よろしくおねがいします。

  • C++で二分法のプログラム

    C++で二分法のプログラムを作るんですが x1-x2が十分小さくなれば(10^-5)終了する 例 cos(x/2)の解を出す これどうやればいいんですか?whileを使うらしいですが。 文法というのは、 if系、while、switch、continue、for、break文くらいしかやってないんですが #include <iostream> #include <cmath> using namespace std; int main() { までは行きますが… 出力はcout 入力はcinでお願いできないでしょうか

  • 配列の練習問題

    #include<iostream> using namespace std; //count関数の宣言 int count(char str[], char ch); int main() { char str[100]; char ch; cout << "文字列を入力して下さい。\n"; cin >> str; cout << "文字列から探す文字を入力して下さい。\n"; cin >> ch; int c = count(str, ch); cout << str << "の中に" << ch << "は" << c << "個あります。\n"; return 0; } //count関数の定義 int count(char str[], char ch) { int i = 0; int c = 0; while (str[i]) { if (str[i] == ch) c++; i++; } return c; } こんにちは。 この問題の解答のプログラムの意味がイマイチ解らないので良かったら教えて下さい。 確認がてらに質問します。 よろしくお願いします。

  • 配列のプログラムですが

    #include <iostream> using namespace std; int main() { int a[100],b=-9999; int i=0,j; do { cout << "整数値を入力してください\n"; cin >> a[i]; b += a[i]; i++; }while( a[i-1] != 9999); cout << b << '\n'; for(j=0;j<i-1;j=j+1) cout << a[j] * 3 << '\n'; return 0; } このプログラムってどんな計算をしてるんですか?誰か分かる人いますか 整数値を入れてくださいって出るだけなんですが

  • c++ 整数値の各桁を足し合わせるプログラム

    上記の通りの質問です #include <iostream> using namespace std; int main () { int x; int sum = 0; cout << "正の整数値の各桁を足す。\n " ; do{ cout << "正の整数値:"; cin >> x; }while (x <= 0); cout << "足すと"; while (x > 0){ cout << sum += x % 10; x /= 10; return sum; } cout << "です。\n " ; } とまでは書けましたがうまくいきません。 初心者なので簡単かもしれませんがお願いします。

  • 入力文字数がでません。

    C++です。以下を実行したのですが、実行結果に改行数は出るが文字数がでません。お願いします。 #include <iostream.h> int main(void) { char c; int ccount = 0; int ncount = 0; while (cin.get(c)) { ccount++; if (c == '\n') ncount++; } cout << "文字数=" << ccount << '\n'; cout << "改行数=" << ncount << '\n'; return (0); }

  • c++ 各桁の整数値を足すプログラム

    上記の通りの質問です #include <iostream> using namespace std; int main () { int x; int sum = 0; cout << "正の整数値の各桁を足す。\n " ; do{ cout << "正の整数値:"; cin >> x; }while (x <= 0); cout << "足すと"; while (x > 0){ cout << sum += x % 10; x /= 10; } return sum; cout << "です。\n " ; } とまでは書けましたがうまくいきません。 初心者なので簡単かもしれませんがお願いします。 また、sum += x% 10 と書いたときにオペラントと一致する演算子がないとでます。

  • 二分法のC++プログラム

    #include<iostream> #include<cmath> using namespace std; int main(){ double x1, x2, c; cout <<"x1:"; cin >> x1; cout <<"x2:"; cin >> x2; while(fabs(x2-x1) > 0.00001){ c=(x1+x2)/2; if(cos(x1/2.0)*cos(c/2)>=0) x1 = c; else x2 = c; } cout << "x=" << x1 <<endl; return 0; } cos(x/2)=0の解となるxを挟んでいないx1,x2を与えると、結果は保証できないですが、それは別にいいんですか?それはダメだとするとどこを訂正すればいいんですか

  • プログラムの動作の仕方

    この下のプログラムは、WRITE <ファイル名>をコマンド行で入力すると、動作するプログラムなのですが、この通りにWRITE <test>としてもできません。 やり方を教えてください. #include <iostream> #include <fstream> using namespace std; int main(int argc,char *argv[]) { if(argc!=2){ cout << "使い方:WRITE<ファイル名>" << endl; return 1; } ofstream out(argv[1]); //出力ファイル if(!out){ cout << "出力ファイルが開けません" << endl; return 1; } char str[80]; cout << "文字列をディスクに書き込み、$で停止します" << endl; do{ cout << ": "; cin >> str; out << str << endl; }while(*str!='$'); out.close(); return 0; } お願いします。

このQ&Aのポイント
  • EP-704Aの電源を押すと「プリンターエラーが発生しました。電源を入れ直してください。詳しくは、マニュアルをご覧ください。」と表示され、マニュアルが見つからないため困っています。
  • 電源を何度も入れ直してもエラーメッセージが表示され、マニュアルも見つからない状況です。
  • EP-704Aの電源トラブルについて、教えていただけると助かります。
回答を見る

専門家に質問してみよう