Я пытаюсь напечатать ромб с nRows. Первая программа работала, но потом, когда я разбиваю ее на функции, следуя этой инструкции: GetNRows (void); DrawShape (int nRows); numberSpaces (int nRows, int row); numberStars (int nRows, int row); PrintChars (int n, char ch); Я не знаю, как передавать по значению в функцию и обновлять значение каждый раз при входе. Взгляните на мой код.
#include <iostream>
using namespace std;
int getNRows(int &);
int calcNumSpace( int nRows, int row );
int calcNumStars( int nRows, int row );
void printChars( int n, char ch );
void drawShape( int nRows );
int main()
{
int nRows;
getNRows( nRows );
drawShape( nRows );
return 0;
}
int getNRows(int &nRows)
{
do
{
cout << "Enter number of rows (3-23) :";
cin >> nRows;
}while ( nRows > 23 || nRows < 3);
if ( nRows % 2 == 0)
{
nRows += 1;
}
return nRows;
}
void drawShape( int nRows )
{
int n, row;
for( row = 0; row < nRows; row++ )
{
n = calcNumSpace( nRows, row );
printChars( n, ' ' );
n = calcNumStars(nRows, row );
printChars( n, '*' );
cout << endl;
}
}
int calcNumSpace( int nRows, int row )
{
int space;
!!! What shoud I do here to update space every time row increase 1 ???
return space;
}
int calcNumStars( int nRows, int row )
{
int stars;
same for space above!!!
return stars;
}
void printChars( int n, char ch )
{
int i;
for(i = 0; i < n; i++)
{
cout << ch;
}
}
Например:
Enter number of rows (3-23) :5
*
***
*****
***
*
Program ended with exit code: 0
Вот моя первая программа:
#include <iostream>
using namespace std;
int main()
{
int n, i=0 , j=0, k=0, space, stars;
do
{
cout << "Enter number of rows (3-23) :";
cin >> n;
}while ( n > 23 || n < 3);
if ( n % 2 == 0)
{
n += 1;
}
// print top half
space = n / 2;
stars = 1;
for( i = 0; i < n / 2 + 1; i++ )
{
for( j = 0; j < space; j++ )
{
cout << " ";
}
for( k = 0; k < stars; k++)
{
cout << "*";
}
cout << endl;
stars = stars + 2;
space = space - 1;
}
// print bottom half
space = 1;
stars = n - 2;
for( i = 0; i < n / 2; i++)
{
for( j = 0; j < space; j++)
{
cout << " ";
}
for( k = 0; k < stars; k++)
{
cout << "*";
}
cout << endl;
space = space + 1;
stars = stars - 2;
}
return 0;
}