Создайте фигуру в Переполнение стека

Я хочу создать такую ​​форму:

ccccccc
cccccc
ccccc
cccc
ccc
cc
c

Мой код:

#include <iostream>

using namespace std;

int main(){
int i, j;
for(i = 0; i < 7; i++){
for(j = 7; j > 7; j--){
cout << 'c';
}
cout << endl;
}
return 0;
}

Но в терминале вывод я получаю несколько пустых строк.

Что я делаю неправильно?

введите описание изображения здесь

5

Решение

for(j = 7; j > 7; j--){ Это выражение всегда ложно.

Вам нужно написать for(j = 7; j > i; j--){

18

Другие решения

Вы хотите это:

#include <iostream>

using namespace std;

int main(){
int i, j;
for(i = 7; i > 0; --i){
for(j = i; j > 0 ; j--){
cout << 'c';
}
cout << endl;
}
return 0;
}

живой пример

Ваш исходный код имел логическую ошибку во внутреннем цикле

for(j = 7; j > 7; j--){

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

for(j = 7; j > 0; j--){

Это будет просто cout 7 ‘c‘7 раз, поэтому я изменил начальное значение ваших внутренних циклов, чтобы оно затем корректно уменьшалось.

for(i = 7; i > 0; --i){
for(j = i; j > 0 ; j--){
^ now initialised by outer loop

Итак, что произойдет, это то, что внутренний цикл никогда не выполняется, но вы выполнили cout << endl; 7 раз отсюда пустые строки

4

Состояние цикла

for(j = 7; j > 7; j--){

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

Я думаю, что вы имеете в виду что-то вроде

for(j = 7 - i; j > 0; j--){

Программа может быть написана проще.

#include <iostream>
#include <iomanip>

int main()
{
while ( true )
{
std::cout << "Enter a non-negative number (0-exit): ";

size_t n = 0;
std::cin >> n;

if ( !n ) break;

const char c = 'c';

std::cout << std::setfill( c );

while ( n ) std::cout << std::setw( n-- ) << c << std::endl;
}

return 0;
}

Выход программы

Enter a non-negative number (0-exit): 7
ccccccc
cccccc
ccccc
cccc
ccc
cc
c
Enter a non-negative number (0-exit): 0
0
По вопросам рекламы [email protected]