BARNI132 Temat założony przez niniejszego użytkownika |
Rysowanie trójkąta » 2017-06-19 13:15:53 Teraz mam trochę większy problem z drugim zadaniem. TEMAT: Napisz program „rysujący” na ekranie figurę * ** *** **** ***** „Wysokość” trójkąta powinna być wczytywana z klawiatury. Program ma kończyć rysowanie, jeśli wysokość będzie większa niż 80 niezależnie od wprowadzonej wysokości. Jeśli wprowadzona wysokość jest większa niż 80, po zakończeniu rysowania program ma wyświetlić ostrzeżenie o tym fakcie. Ogólnie projekt oddawałem na 2 różne sposoby:
#include <iostream>
using namespace std; void sprawdzanie(int a,int b,int wartosc); main() { int a; int b; int wartosc; cout<<"Podaj wysokosc:"<<endl; cin>>wartosc; if(wartosc<0) cout<<"Wartosc ponizej 0"; sprawdzanie(a,b,wartosc); } void sprawdzanie(int a,int b,int wartosc) { if(wartosc>80) cout<<"OSTRZEZENIE!Wysokosc za duza"; else
for(a=0; a<wartosc; a++) { for(b=0; b<=a; b++) { cout << "*"; } cout << endl;
} } Wszystko ładnie działa i znowu dostałem uwagę"pierwsza funkcja wczytywanie i zwracanie wysokosci (sprawdzanie) i zwracanie druga funkcja wysokosc rysuje trojkat" Jest ktoś w stanie nakierować ,bądz poprawić błędy żeby to jakoś wyglądało w miarę poprawnie ? Wiem o co chodzi ,ale nie wiem jak to mam napisać. |
|
Anim |
» 2017-06-19 13:37:19 Hm... po pierwsze main powinien zwracać int, czyli: Po drugie przekazywanie zmiennych a, b w funkcji jest bez sensu. Powołaj je w funkcji sprawdzanie, czyli Twój program niech wygląda tak : #include <iostream>
using namespace std; void sprawdzanie( int wartosc );
int main() { int wartosc; cout << "Podaj wysokosc:" << endl; cin >> wartosc; if( wartosc <= 0 ) cout << "Wartosc musi być większa od 0"; else sprawdzanie( wartosc ); return 0; } void sprawdzanie( int wartosc ) { if( wartosc > 80 ) cout << "OSTRZEZENIE!Wysokosc za duza"; else { for( int a = 0; a < wartosc; a++ ) { for( int b = 0; b <= a; b++ ) { cout << "*"; } cout << endl; } } }
Po trzecie wstawiaj kod w znaczniki, aby wyglądał tak ładnie, jak powyżej. Po czwarte - nie rozumiem Twojego problemu :) Mi program wywołuje się raz ;p Jak podam mu liczbę gwiazdek mniejszą niż 80 to wygląda "ładnie" i kończy działanie programu. W innym przypadku program wywala ostrzeżenie i kończy działanie. A Ty co chcesz osiągnąć? Skąd masz ten komunikat, który wstawiasz na końcu swojego posta w cudzysłowie? |
|
BARNI132 Temat założony przez niniejszego użytkownika |
» 2017-06-19 14:15:15 To są uwagi od prowadzącego i według tego musi być napisany program. Gdyby program miał tylko działać bym sobie bez problemów poradził ,a tak musi być według instrukcji i nic z tym nie zrobię. |
|
hit |
» 2017-06-19 14:19:09 @Anim - "Program ma kończyć rysowanie, jeśli wysokość będzie większa niż 80 niezależnie od wprowadzonej wysokości."
Po pierwsze do rysowania stworzyłbym osobną funkcję (lub zmienił jej nazwę) bo nazwa "sprawdzanie" nie odpowiada w pełni faktycznemu działaniu. Po drugie powinien rysować nawet jeśli podasz 100, tylko że przerwać w odpowiednim momencie i wtedy wyświetlić komunikat. |
|
BARNI132 Temat założony przez niniejszego użytkownika |
» 2017-06-19 14:27:59 Sam bym tak zrobił ,ale za to oceny nie dostanę.=, musi być tak jak on chce ,a ja nie wiem jak to wszystko połączyć ,żeby to działało w miarę poprawnie. |
|
Anim |
» 2017-06-19 14:41:44 @hit Dopiero teraz zrozumiałem :) Czyli @BARNI132 masz wszystko podane w tej uwadze: - program powinien posiadać funkcjonalność: wpisywanie danych i sprawdzanie czy dane są poprawne (jako jedna funkcja), wypisywanie trójkąta (jako druga funkcja) -> czyli to co sugeruje @hit - druga rzecz to także to o czym pisze @hit (jak poda ktoś więcej niż 80 to rysujesz drzewko, wypisujesz komunikat, że ktoś podał za duże drzewko i wyrysowałeś drzewko z 80 gwiazdek i robisz return 0) Czego jeszcze nie rozumiesz? #include <iostream>
using namespace std;
bool sprawdzanie( int wartosc ); void rysuj( int wartosc );
int main() { if( sprawdzanie( wartosc ) ) { rysuj( wartosc ); } else { } return 0; }
bool sprawdzanie( int wartosc ) { return 1; return 0; }
void rysuj( int wartosc ) { }
Bardziej szczegółowo nie napiszę, bo bardziej szczegółowo to będzie rozwiązane zadanie :) przynajmniej ja bym tak zrobił :) |
|
BARNI132 Temat założony przez niniejszego użytkownika |
» 2017-06-19 16:58:15 #include <iostream>
using namespace std; bool sprawdzanie( int wartosc ); - funkcja która zwraca true lub false, pobiera wartość void rysuj( int wartosc ) -funkcja ,która wyświetla rysowanie
int main() { int wartosc; cout << "Podaj wysokosc:" << endl; cin >> wartosc; if(sprawdzanie(wartosc)) rysuj(wartosc); else cout << "Wartosc musi byc wieksza od 0"; }
bool sprawdzanie( int wartosc ) { if(wartosc>0) return true; else return false; }
void rysuj( int wartosc ) { int ostrzezenie; if(wartosc>80) { wartosc = 80; ostrzezenie = true; } else ostrzezenie = false;
for(int a=0; a<wartosc; a++) { for(int b=0; b<=a; b++) { cout << "*"; } cout << endl; } if(ostrzezenie) cout<<"Wysokosc wieksza niz 80, zatrzymano rysowanie"; Dobrze to wygląda czy jeszcze coś poprawić ? Może o czymś zapomniałem ? |
|
« 1 » |