pusty trojkat

0

Narysowalem trojkat pusty w srodku. Da się to jakoś uprościć? Wykonac to w lepszy sposob? Bardziej zaawansowany?

 #include <stdlib.h>

int main()
{
    int i=0;
    int j=0;

    for(i=0; i<20; i++){
        for(j=0; j<20; j++)
    if(j<=i && j>i-1 || j==0 || i==19)
        printf("1");
    else
        printf(" ");
    printf("\n");
    }
    return 0;
}
0

jedyne co widzę z outputu to to, że dla takiego trójkąta wystarczy if(j == i || j == 0 || i == 19)

edit: pewnie też da się to zrobić na 1 pętli, ponieważ wiersze zmieniają się jednostajnie

0

A jak to zrobić w jednej petli bo nie mam pojecia. Chodzi mi tylko o warunki

1

mogę Ci jedynie pokazać w c++ (z opisem), jaki algorytm zastosowałem, przerzuć sobie to na c

#include <iostream>
#include <string>

void printTriangle(int rows);

int main()
{
	printTriangle(55);

	return 0;
}

void printTriangle(int rows)
{
	std::cout << "1\n";						// wyprintuj czubek
	std::string middles = "11\n";			// zmienna do zarządzania środkiem
	auto max = rows - 2;					// liczba iteracji bez czubka i maxa
	for(auto i = 0 ; i < max ; ++i) {
		std::cout << middles;
		middles.insert(1, 1, ' ');			// dodaj spację na 2 miejsce w stringu
	}
	std::cout << std::string(rows, '1');	// wyprintuj max
}

http://melpon.org/wandbox/permlink/U7vecYZHmDVJJR5v

1 użytkowników online, w tym zalogowanych: 0, gości: 1