Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Rysowanie trójkąta

Ostatnio zmodyfikowano 2017-06-19 16:58
Autor Wiadomość
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ć.
P-162672
Anim
» 2017-06-19 13:37:19
Hm... po pierwsze main powinien zwracać int, czyli:

C/C++
int main()
{
   
    return 0;
}

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 :

C/C++
#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?
P-162674
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ę.
P-162677
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.
P-162678
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.
P-162679
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?

C/C++
#include <iostream>

using namespace std;

bool sprawdzanie( int wartosc );
void rysuj( int wartosc );

int main()
{
    //podawanie z klawiatury wysokosci;
   
    if( sprawdzanie( wartosc ) )
    {
        rysuj( wartosc );
    }
    else
    {
        // wartosc <= 0
    }
   
    return 0;
}

bool sprawdzanie( int wartosc )
{
    //czy wartosc >= 0
    return 1;
    //else
    return 0;
}


void rysuj( int wartosc )
{
    //rysowanie
   
    //jesli > 80, to dodatkowy komunikat o tym, że przekroczony rozmiar, i narysowano 80 :)
}

Bardziej szczegółowo nie napiszę, bo bardziej szczegółowo to będzie rozwiązane zadanie :) przynajmniej ja bym tak zrobił :)
P-162680
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 ?
P-162681
« 1 »
  Strona 1 z 1