呼び出しルーチンでパラメーターとして渡された量のサイズのダイヤモンドを印刷しようとしています。その数値がゼロから始まる次に高い奇数に変更された場合でも。金額または文字タイプが渡されない場合、関数にはデフォルトのパラメーターがあります。シンボルを奇数行で出力するひし形を印刷できますが、渡されたものの最大行数まで渡されたシンボルの奇数行を印刷したいと考えています。私の問題は、渡された数に等しい行数を出力し、渡された数までの奇数の行だけではなく、各行に奇数のシンボルのみを与えることです。つまり、5 を渡すと、1 つの記号、3 つの記号、5 つの記号、7 つの記号、9 つの記号で始まる 5 つの個別の行が出力されます。できます' ラインの量とシンボルの量を区別する方法を脳に理解させているようです。どんな助けでも大歓迎です。それは宿題のためなので、私が間違っていることの背後にあるロジックが必要なので、それを理解することができます. ありがとうございました。これが今の私のコードです。それが重要な場合は、Eclipse をコンパイラーとして使用します。
#include <iostream>
#include <cstdlib>
#include <cctype>
#include <iomanip>
using namespace std;
// prototype for printDiamond
void printDiamond ( int = 1, char = '*' );
int main()
{
printDiamond();
cout << endl;
printDiamond(1);
cout << endl;
printDiamond(2);
cout << endl;
printDiamond(3);
cout << endl;
printDiamond(4);
cout << endl;
printDiamond(5);
cout << endl;
printDiamond(1, '$');
cout << endl;
printDiamond(2, '$');
cout << endl;
printDiamond(3, '$');
cout << endl;
printDiamond(4, '$');
cout << endl;
printDiamond(5, '$');
cout << endl;
int someSize = 10;
char someSymbol = ' ';
printDiamond(someSize, someSymbol);
cout << endl;
return EXIT_SUCCESS;
}
void printDiamond ( int max, char symbol)
{
if ( symbol == ' ')
symbol = '*';
if ( max % 2 == 0 )
++max;
int shape,line;
if ( max >= 0 )
{
if ( max % 2 )
{
for (shape=1;shape <= max ;shape++)
{
for (line = shape; line < max; line++)
{
cout << " " ;
}
for (line=1; line <= shape+shape-1; line++)
{
cout << symbol ;
}
cout << endl;
}
}
}
else
{
cout << "Input error. This function not defined for a negative integer.";
}
if ( max % 2 )
{
for (shape=max-1;shape >= 0 ;shape--)
{
for (line=shape;line<max;line++)
{
cout << " " ;
}
for (line=1;line <= shape+shape-1; line++)
{
cout << symbol ;
}
cout << endl;
}
}
}