ここで特定の文字列で文字やフラグを見つける私が書いたbinary_to_decimalコンバータのv1.0のです。私は仕様を改善し続けながらいくつかの変更を加えたいと思います。クラスとポインタも将来追加されます。私は新鮮でよく練習しています。誤り訂正ループは、悪い入力
さて、エラー修正ループを実装して、0または1以外の文字にフラグを立てて、入力を再度要求したいと考えています。
私は、アレイと協力し、このコードブロックのラインに沿って何かをしようとしています。 途方もないかもしれないが、私はそれを微調整できると思う。
#include <iostream>
#include <cmath>
#include <string>
using namespace std;
const int MAX = 100;
int conv(int z[MAX], int l[MAX], int a);
int main()
{
int zelda[MAX];
int link[MAX];
string strint;
int am;
cout << "Enter a binary number: \n";
(cin >> strint).get(); //add error-correction to only read 0s and 1s.
am = strint.size();
cout << am << " digits entered." << endl;
int i = 0;
int p = 0;
while (i < am)
{
zelda[i] = strint[p] - '0'; //copies the string array elements into the int array; essentially STRING TO INT (the minus FORCES a conversion because it is arithmetic) <---- EXTREMELY CLEVER!
++i;
++p;
}
cout << conv(zelda, link, am);
cin.get();
return 0;
}
int conv(int zelda[MAX], int link[MAX], int length)
{
int sum = 0;
for (int t = 0; t < length; t++)
{
long int h, i;
for (int h = length - 1, i = 0; h >= 0; --h, ++i)
if (zelda[t] == 1)
link[h] = pow(2.0, i);
else
link[h] = 0;
sum += link[t];
}
return sum;
}
みんなありがとう:ここ
while ((cin >> strint).get())
{
cin.clear(); //reset the input
while (cin.get() != '\n') //clear all the way to the newline char
continue; //
cout << "Enter zeroes and/or ones only! \n";
}
は誤り訂正ループせずに最終的なコードです:私はまだ、私はこのような何かを追加したい0_0
を学んでいます。
私は質問が何であるかわからないんだけど、答えはより意味のある識別子を使用することが考えられます。 – Johnsyweb