• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Poprawa kodu programu wyświetlającego dany kształt (wzorek ze znaków).

Aruba Cloud - Virtual Private Server VPS
0 głosów
256 wizyt
pytanie zadane 21 października 2015 w C i C++ przez arglo Nowicjusz (140 p.)

Cześć. Miałem zadanie, żeby napisać program w C++, który wyświetla kształt (poniżej) o rozmiarach podanych z konsoli.
./\.
/..\
\../
.\/.

Poniżej mój kod:

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
   int y, x;


   cout << "Podaj wysokosc wzorka, potem szerokosc " << endl;
   cin >> y>> x;


   for(int i = 0; i < y; i++){
   for (int j = 0; j < x; j++){
            if (((i%4 == 0 || i%4 == 3) && (j%4 == 3 || j%4 == 0)) || ((i%4 == 1 || i%4 == 2) &&( j%4 == 1 || j%4 == 2)) )
            {
                cout << ".";

            }

        else     if (((i%4 == 0) && (j%4 == 1)) || ((i%4 == 1) &&( j%4 == 0)) || ((i%4 == 2) && (j%4 == 3)) || ((i%4 == 3) && (j%4 == 2)) )
            {

                cout << "/";
            }
           else  if (((i%4 == 0) && (j%4 == 2)) || ((i%4 == 1) &&( j%4 == 3)) || ((i%4 == 2) && (j%4 == 0)) || ((i%4 == 3) && (j%4 == 1)) )
                cout << "\\";

           }
    cout << endl;
}
system ("pause");
   return 0;
}



Jakieś pomysły jak można to lepiej zrobić? Co myślicie?
Pozdrawiam


 

1 odpowiedź

0 głosów
odpowiedź 21 października 2015 przez niezalogowany
Wnioskując z tego co zrobiłeś, to nie tyle powiększa się sam wzór, ale to są części z jaką się powtarza, a więc najmniejszy rozmiar dla pierwszej linii w poziomie to 4: "./\.", przy 5 otrzymamy "./\..", ... .

Przy takim zrozumieniu polecenia to myślę, że jest nienajgorzej, jedyna optymalizacja o jaką można się pokusić to wyliczenie na początku drugiej pętli wszystkich wartości dzielenia modulo
komentarz 21 października 2015 przez arglo Nowicjusz (140 p.)
przywrócone 21 października 2015 przez arglo
Nie rozumiem, w jakim celu wyliczyć te wartości dzielenia modulo?
komentarz 21 października 2015 przez niezalogowany
Przyśpieszysz minimalnie* prędkość działania, dzielenie modulo jest dość ciężke do obliczeń, więc zazwyczaj jeżeli można to stara się nie używać dzielenia modulo.

Weźmy za przykład (i%4), w najlepszym razie ty wykonujesz to działanie 4 razy i 4 razy porównujesz tą wartość do jakichś liczb. W najgorszym razie to liczysz tą samą rzecz od zera 12 razy w pojedynczym obiegu pętli.

Zapisując tą wartość do zmiennej zaoszczędziłbyś masę obliczeń.
komentarz 21 października 2015 przez furas Maniak (53,800 p.)
edycja 21 października 2015 przez furas
Pewne rzeczy liczy się raz po to aby w razie potrzeby modyfikacji mieć to w jednym miejscu a nie szukać wszystkich wystąpień w tysiącu linii kodu.

Do tego można wyliczenie przypisać do czytelnej nazwy zmiennej i wtedy resztę kodu łatwiej się czyta.

---

EDIT: odnośnie pytania "Jakieś pomysły jak można to lepiej zrobić?"

Pierwszy, podstawowy pomysł to porządnie sformatować kod i czytelnie ponazywać zmienne aby chciało się to oglądać. Dla ciebie to może być tylko kilka pierwszych linii ale dla innych to może być kolejne kilka po przejrzeniu tysiąca innych i zamiast się męczyć w zrozumieniem nieczytelnego kodu, może lepiej poszukać inne pytanie ;)
komentarz 21 października 2015 przez arglo Nowicjusz (140 p.)
edycja 21 października 2015 przez arglo
Szymon Siarkiewicz: chodzi po prostu o
int reszta = i%4; ? i w warunkach pozamieniać wszystko na 'reszta'?

furas:
Chyba nie wiem jeszcze co to są wyliczenia, ale dzięki, nadrobię i ogarnę.
Hm, nie wiem (poza zmianą nazw zmiennych), jak porządnie sformatować kod, to poniekąd było właśnie moje pytanie :P. Wygoogluje, poczytam.
Dzięki za odpowiedzi
komentarz 21 października 2015 przez niezalogowany
Dokładnie o to.

Podobne pytania

0 głosów
1 odpowiedź 383 wizyt
0 głosów
2 odpowiedzi 365 wizyt
pytanie zadane 14 stycznia 2016 w JavaScript przez 0rb_12 Bywalec (2,440 p.)
0 głosów
1 odpowiedź 303 wizyt
pytanie zadane 19 lipca 2015 w Offtop przez Pan Kulomb Pasjonat (18,630 p.)

93,331 zapytań

142,323 odpowiedzi

322,400 komentarzy

62,667 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...