wypisanie trójkąta złożonego z liter o

0

Witam, zaczynam swoją przygodę z c++, napotkałem kolejny już problem w tejże przygodzie ;/ . Mam problem z programem rysującym trójkąt prostokątny o podanych wymiarach, trójkąt ma być złozony z 'o'. Udało mi sie stworzyć program rysujący trójkąt, którego pierwsza linia jest największa z każda kolejna mniejsza, teraz chciałem zrobić na odwrót i tu własnie pojawia się problem. Proszę was o pomoc z tym prostym programem ;p.
załączam kod tego programu, który wyszedł mi poprawnie.

int n,i;
   char znak  = 'o';
   cout<<"podaj wymiar: ";
   cin>> n ;
   if(n < 1 or n >30)
   cout<<"nieprawidlowy wymiar.";
    else
    {
while(n)
{

         for(int i=1;i<=n;i++)
        cout<<znak;
        cout<<endl;
n--;

}
    }
1

Kod wydaje się być poprawny, ale: jest F.A.T.A.L.N.I.E sformatowany i przez to całkowicie nieczytelny.

Powinien on wyglądać mniej więcej tak:

    #include <iostream>
    using namespace std;
     
    int main()
    {
    	int n, i;
    	char znak = 'o';
    	cout << "podaj wymiar: ";
    	cin >> n;
    	if (n < 1 or n > 30)
    	    cout << "nieprawidlowy wymiar.";
    	else {
    	    while (n) {
    	        for (int i = 1; i <= n; i++)
    	            cout << znak;
    	        cout << endl;
    	        n--;
    	    }
    	}
    }

Drobnostka: Zamiast:

while(n) {
   //...
   n--;
}

Możesz dać:

for(;n;n--) {
   //...
}
1

Coś takiego:

#include <iostream>

int main() {
int n, start= 0;

std::cout<<"podaj wymiar: ";
std::cin>> n ;
if(n < 1 or n >30)
std::cout<<"nieprawidlowy wymiar.";
else
{
while(start < n) {
  for(int i=0; i<=start; ++i) {
    std::cout<<"o";
  }
  ++start;
  std::cout<<"\n";
}
}
}
0

@kmph: wiem, nad tym tez pracuję. @Serechiel dzięki ;)

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