私はプログラミングにはとても慣れていますので、この質問が不合理に単純であると思われる場合はお詫びします。私はC++の本の現在の章でいくつか余分な質問に取り組んでいます。私は実際問題の正解を見つけましたが、そうしているうちに特定のソリューションがうまくいくのは分かりませんし、別のソリューションがうまくいかないことが分かりません。C++はループの行を表示します
この問題は32行から127行までのASCII値を1行に16文字の数行で出力するように求められます。私が(正確に動作する)解決策はこれです:
#include <iostream>
using namespace std;
int main()
{
char letter;
int count = 0;
for (letter = 32; letter < 127; letter++, count++)
{
if (count == 16)
{
cout << endl;
count = 0;
}
cout << letter << " ";
}
cout << endl;
return 0;
}
また、上記のコードはうまく動作し、私が望むことをします。この難しさは私がこれまでに試したことにあります。
#include <iostream>
using namespace std;
int main()
{
char letter = 32;
int count;
while (letter < 127)
{
count = 0;
while (count < 16)
{
cout << letter << " ";
letter++;
count++;
}
cout << endl;
}
cout << endl;
return 0;
}
このwhileループだけで無限に実行され、また、私が欲しいのASCII文字の後にいくつかのゴミを出してくれる、と私は理由を把握することはできません:そうは次のように私は、whileループネストされたと同じ問題を行うことを試みました。さらに奇妙なのは、whileループを使ってコード内の変数 'letter'をcharの代わりにintに変更した場合、それは必要なときに正確に実行され、終了するときに終了し、ASCIIの代わりに実際の数値を表示するだけです値。
「文字」が無限ループになる文字の場合のみです。私はそれが本当にシンプルなものだと確信しています、そして、私はちょうど今それを見るために疲れているかもしれませんが、どんな助け/ヒントも大いに感謝されるでしょう!私は技術的に答えを得ていますが、それは私が2番目の答えがひどく恐ろしく失敗する理由がわからないことを私に夢中にしています。
ありがとうございます。
ああを。ありがとうございました! – nik