Я хочу создать такую форму:
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;
}
Но в терминале вывод я получаю несколько пустых строк.
Что я делаю неправильно?
for(j = 7; j > 7; j--){
Это выражение всегда ложно.
Вам нужно написать for(j = 7; j > i; j--){
Вы хотите это:
#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 раз отсюда пустые строки
Состояние цикла
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