コンソール出力は私の大きな関心事です。これはプログラム全体です。私はコンソール出力を一番下に掲示します。出力は私がプログラムに入力したものを示しています。数字が奇妙に変わったのをすぐに見ることができます。それらは負の数または多分ハイフンを得る。奇数は、底部付近の「+」記号の上下にあります。私は2つの入力を追加し、それらが正しく表示されるようにしたいと思います。できるだけ手助けをしてください。たとえそれが私の新しい投稿方法を批判しているとしても。100桁までの数値加算プログラム。奇数コンソール出力
#include <iostream>
#include <string>
using namespace std;
void readBig(int[]);
void printBig(int[]);
void addBig(int[], int[], int[]);
const int MAX_DIGITS = 100;
int main()
{
int number1[MAX_DIGITS]={}, number2[MAX_DIGITS]={}, sum[MAX_DIGITS]={};
bool finished = false;
char response;
while (! finished)
{
cout << "Please enter a number up to " << MAX_DIGITS << " digits: ";
readBig(number1);
cout << "Please enter a number up to " << MAX_DIGITS << " digits: ";
readBig(number2);
addBig(number1, number2, sum);
printBig(number1);
cout << "\n+\n";
printBig(number2);
cout << "\n=\n";
printBig(sum);
cout << "\n";
cout << "test again?";
cin >> response;
cin.ignore(900,'\n');
finished = toupper(response) != 'Y';
}
return 0;
}
void readBig(int number[MAX_DIGITS]) // This function below will read an input number //as a string then input that into an array.
{
string read;
cin >> read;
for (int i = 0; i < MAX_DIGITS && i <= read.length() + 1; i++) {
number[i] = int (read[i] - '0');
}
}
// This function below will display the number.
void printBig(int number[MAX_DIGITS])
{
int digit = 0; // first val counter
for (int i=0; i<=MAX_DIGITS; i++)
if (number[i] == 0 && digit >= 1) cout << ""; // clears leading zeros
// and checks for placeholder zeros
else cout << number[i]; digit++; // else print val and check
// for beginning of number.
}
void addBig(int number1[MAX_DIGITS], int number2[MAX_DIGITS], int sum[MAX_DIGITS])
// The code below sums the arrays.
{
for (int i = 0; i < MAX_DIGITS; i++) {
sum[i] = number1[i] + number2[i];
}
for (int j = 0; j < MAX_DIGITS; j++){
if (sum[j]/10 > 0) { sum[j + 1] += 1; }
if (sum[j]/10 > 0) { sum[j] = sum[j]/10; } // EDIT:I would like both to happen
}
}
コンソール出力
Please enter a number up to 100 digits: 987654321
Please enter a number up to 100 digits: 987654321
987654321-48-483
+
987654321-48-489
=
11111-9-99
test again?
Please enter a number up to 100 digits: 444444444
Please enter a number up to 100 digits: 444666644
444444444-48-483
+
444666644-48-484
=
01111-9-94
test again?
私は実際に出力を考え出すといくつかの助けをしたいと思いますが、任意の提案は素晴らしい:)だろう!
あなたは出力を把握するために何を望んでいますか?あなたの質問をより明確にして、膨大なコードブロックを読む前に、どんな問題が起きているかを誰かが知ることができるようにしてください。 – PolyMesh
下部の出力。プログラムの実行には2つの試みがありますが、このように見える奇数のコンボを持つ4行があります。 03-48-486532彼らは十数が持ち越された標準的な数字であると考えられています。 – Joeybreh
このコードを見ると、私は助けが必要な多くの書式を見ています。コードを適切に書式設定すると、目がより簡単になり、解決策が提示される可能性があります。また、if文を使用するときに、1つのライナーであっても中括弧 '{} 'を追加することをお勧めします。その最後の関数でelse文を意図していたかもしれないが、代わりにセミコロンを入れて、すべてを1行にまとめておくと、混乱するように思えます。スペーシングに一貫性がない領域もたくさんあります。それについては – PolyMesh