Member 12733997 Ответов: 2

Начинающий проект на C++. Нужна помощь. Печать параллелограмма .


Привет, ребята . Начинающий кодер C++ здесь . У меня есть проект, чтобы принять определенное количество строк и напечатать параллелограмм с помощью петель . Кто-нибудь может помочь ??

Что я уже пробовал:

#include <iostream.h>

int GetNRows(int &);
int NumSpaces( int, int);
int NumStars( int, int);
void PrintChars( int, char);
void DrawShape(int);

int main()
{
	int nRows, maxC, space, ast, n, row;
	char ch = ' ';


	for(int row = 1;row <= nRows;row++) //rows
	{
		if(row <= 1)
		{
			GetNRows( nRows );
		}
		n = NumSpaces(nRows, row );
		nRows = NumStars( nRows, row );
		PrintChars( n, ch );
		DrawShape( nRows );
	}
	return 0;
}

int GetNRows( int &nRows )
{
	int maxC;
	cout << "Enter number of rows(3-23): " << flush;
	cin >> nRows;

	while(nRows < 3)
	{
		cout << "That is too few rows for me to make a parallelogram."
		<< endl;
		cout << "Enter number of rows(3-23): " << flush;
		cin >> nRows;
	}
	while(nRows > 23)
	{
		cout << "That is too many rows for me to make a parallelogram."
		<< endl;
		cout << "Enter number of rows(3-23): " << flush;
		cin >> nRows;
	}
	if(nRows % 2 == 0)
	{
		nRows++;
	}
}

int NumSpaces( int nRows, int row )
{
	int maxC = (nRows / 2), space;
	if(row <= maxC)
	{
		space = maxC - row;
	}
	else
	{
		space = 0;
	}
	return space;
}

int NumStars( int nRows, int row )
{
	int ast, maxC = (nRows / 2);
	if(row <= maxC)
	{
		ast = row;
	}
	else
	{
		ast = nRows - row;
	}
	cout << ast;
	return ast;
}

void PrintChars( int n, char ch )
{
	for(int s = 0; s < n; s++)
	{
		cout << ch;
	}
}

void DrawShape( int nRows )
{
	int ast;
	for(int a = 0; a < nRows; a++)
	{
		cout << '*';
	}
	cout << '\n';
}


Не работает .
выход равен 1 *

Patrice T

"Не работает" не информативно.
Также покажите, что вы получаете и чего хотите.

2 Ответов

Рейтинг:
1

Patrice T

Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
0

CPallini

Цитата:
int параметр nrows, maxC, пробел, ast, n, строка;
char ch = ' ';


for (int row = 1; row <= параметр nrows;row++) / / строки
Вы используете неинициализированную переменную, а именно nRows.