Я читал несколько предыдущих вопросов об использовании фигурных скобок, насколько я понимаю, не стоит использовать фигурные скобки, если у вас есть только одна строка, но если вы должны использовать много строк кода, вам нужно будет использовать квадратные скобки.
У меня есть задание, и инструктор требует от нас использовать скобки для каждой ситуации для хорошей привычки. Он также позволяет нам исследовать и использовать пример кода.
Теперь мой вопрос: я нашел пример кода, который не использует скобки. Когда я пытаюсь добавить скобки в код, это делает мой вывод неправильным.
Может кто-нибудь объяснить мне, как правильно использовать фигурные скобки в нескольких строках кода, и предложить рекомендацию о том, как я могу достичь результатов, которые я ищу.
Вот код, когда вывод правильный:
void printStars(int i, int n)
// The calling program invokes this function as follows: printStars(1, n);
// n >= 1
{
if(i == n)
{
for(int j = 1; j <= n; j++) cout << '*'; cout << endl;
for(int j = 1; j <= n; j++) cout << '*'; cout << endl;
}
else
{
for(int j = 1; j <= i; j++) cout << '*'; cout << endl;
printStars(i+1, n); // recursive invocation
for(int j = 1; j <= i; j++) cout << '*'; cout << endl;
}
} // printStars
int main() {
int n;
int i=0;
cout << "Enter the number of lines in the grid: ";
cin>> n;
cout << endl;
printStars(i,n);
return 0;
}
и когда я пытаюсь «очистить это», выглядя так:
void printStars(int i, int n)
// The calling program invokes this function as follows: printStars(1, n);
{
if(i == n)
{
for(int j = 1; j <= n; j++)
{
cout << '*';
cout << endl;
}
for(int j = 1; j <= n; j++)
{
cout << '*';
cout << endl;
}
}
else
{
for(int j = 1; j <= i; j++)
{
cout << '*';
cout << endl;
}
printStars(i+1, n); // recursive invocation
for(int j = 1; j <= i; j++)
{
cout << '*';
cout << endl;
}
}
} // printStars
int main() {
int n;
int i=0;
cout << "Enter the number of lines in the grid: ";
cin>> n;
cout << endl;
printStars(i,n);
return 0;
}
Проблема в том, что вы слишком много вкладываете в циклы печати:
for(int j = 1; j <= i; j++)
{
cout << '*';
cout << endl;
}
Должно быть:
for(int j = 1; j <= i; j++)
{
cout << '*';
}
cout << endl;
Петли без фигурных скобок могут содержать только не замужем заявление. Это означает, что конец строки печати с использованием cout
вызывается только когда заканчивается цикл
Это полный код с использованием фигурных скобок:
void printStars(int i, int n)
// The calling program invokes this function as follows: printStars(1, n);
// n >= 1
{
if(i == n)
{
for(int j = 1; j <= n; j++){
cout << '*';
}
cout << endl;
for(int j = 1; j <= n; j++){
cout << '*';
}
cout << endl;
}
else
{
for(int j = 1; j <= i; j++){
cout << '*';
}
cout << endl;
printStars(i+1, n); // recursive invocation
for(int j = 1; j <= i; j++){
cout << '*';
}
cout << endl;
}
} // printStars
int main() {
int n;
int i=0;
cout << "Enter the number of lines in the grid: ";
cin>> n;
cout << endl;
printStars(i,n);
return 0;
}