[C++] Trójkąt z liczb
-
- Użytkownik
- Posty: 111
- Rejestracja: 3 lip 2015, o 21:07
- Płeć: Kobieta
- Lokalizacja: Polska
- Podziękował: 28 razy
- Pomógł: 1 raz
[C++] Trójkąt z liczb
Mam do napisania program wyświetlający na ekranie trójkąt równoramienny złożony z cyfr. Wysokość trójkąta (ilość wierszy) jest daną wejściową. Podstawa trójkąta powinna stykać się z lewym brzegiem ekranu - próbowałam to stworzyć trochę analogicznie do choinek z gwiazdek, ale coś mi to nie do końca wygląda tak jak powinno...
Dodam, że powinnam użyć pętli while
Dodam, że powinnam użyć pętli while
-
- Użytkownik
- Posty: 1931
- Rejestracja: 29 maja 2009, o 11:58
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
- Podziękował: 145 razy
- Pomógł: 320 razy
[C++] Trójkąt z liczb
Kod: Zaznacz cały
#include <iostream>
using namespace std;
int main(void)
{
int height;
cout << "Podaj wysokosc trojkata: ";
cin >> height;
if(height < 1)
cout << "Bledne dane wejsciowe!" << endl;
else if(height == 1)
cout << "*";
else
{
int spaces_out = height - 2;
int spaces_in = 1;
for(int i = 0; i < spaces_out + 1; ++i)
cout << " ";
cout << "*" << endl;
while(height > 2)
{
for(int i = 0; i < spaces_out; ++i)
cout << " ";
cout << "*";
for(int i = 0; i < spaces_in; ++i)
cout << " ";
cout << "*" << endl;
spaces_in += 2;
spaces_out -= 1;
height--;
}
for(int i = 0; i < spaces_in / 2 + 2; ++i)
cout << "* ";
}
return 0;
}
-
- Użytkownik
- Posty: 111
- Rejestracja: 3 lip 2015, o 21:07
- Płeć: Kobieta
- Lokalizacja: Polska
- Podziękował: 28 razy
- Pomógł: 1 raz
[C++] Trójkąt z liczb
Znalazłam też taki kod na jakimś forum:
I tutaj szybkie pytanie - co oznaczają cin.ignore() i getchar()?
Ale o coś innego mi chodzi - chciałam przekształcić to z pętli for na while i spróbowałam, ale niestety nie wygląda to tak, jak powinno a nie potrafię znaleźć błędu :/
Kod: Zaznacz cały
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int a,i,k,l;
cout << "Podaj dlugosc podstawy trojkata: ";
cin >> a;
char b;
cout << "Podaj znak: ";
cin >> b;
for (k=1; k<a+1; k=k+2)
{
for (l=1; l<a-k; l=l+2) // nowa pętla
{
cout << " ";
}
for (i=1; i<k+1; i++)
{
cout << b;
}
cout << endl;
}
cin.ignore();
getchar ();
return 0;
}
Ale o coś innego mi chodzi - chciałam przekształcić to z pętli for na while i spróbowałam, ale niestety nie wygląda to tak, jak powinno a nie potrafię znaleźć błędu :/
Kod: Zaznacz cały
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int a,i=1,k=1,l=1;
cout << "Podaj dlugosc podstawy trojkata: ";
cin >> a;
char b;
b='*';
while (k<a+1)
{
while (l<a-k) // nowa pętla
{
cout << " ";
l=l+2;
}
while (i<k+1)
{
cout << b;
i++;
}
k=k+2;
cout << endl;
}
cin.ignore();
getchar ();
return 0;
}
-
- Użytkownik
- Posty: 1931
- Rejestracja: 29 maja 2009, o 11:58
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
- Podziękował: 145 razy
- Pomógł: 320 razy
[C++] Trójkąt z liczb
cin.ignore() czyści bufor
getchar() pobiera jeden znak ze standardowego wejścia
A błąd jest taki, że nie resetujesz wartości
getchar() pobiera jeden znak ze standardowego wejścia
A błąd jest taki, że nie resetujesz wartości
i
oraz l
co iterację głównej pętli-
- Użytkownik
- Posty: 111
- Rejestracja: 3 lip 2015, o 21:07
- Płeć: Kobieta
- Lokalizacja: Polska
- Podziękował: 28 razy
- Pomógł: 1 raz
[C++] Trójkąt z liczb
Liczby powinno być coś takiego:
0
111
22222
3333333
tyle że jako równoramienny trójkąt - by zrozumieć samą zasadę postanowiłam zacząć od wyświetlania piramidy gwiazdek.
W jaki sposób resetować je co pętlę? Tzn. co w tym for z pierwszego kodu je resetuje a w moich while'ach tego brakuje?
0
111
22222
3333333
tyle że jako równoramienny trójkąt - by zrozumieć samą zasadę postanowiłam zacząć od wyświetlania piramidy gwiazdek.
W jaki sposób resetować je co pętlę? Tzn. co w tym for z pierwszego kodu je resetuje a w moich while'ach tego brakuje?
-
- Użytkownik
- Posty: 1931
- Rejestracja: 29 maja 2009, o 11:58
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
- Podziękował: 145 razy
- Pomógł: 320 razy
[C++] Trójkąt z liczb
Kod: Zaznacz cały
while (i<k+1)
{
cout << b;
i++;
}
i
na wejściu co iterację głównej pętli, a jaka być powinnaKod: Zaznacz cały
for (i=1; i<k+1; i++)