• 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).

VPS Starter Arubacloud
0 głosów
215 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ź 359 wizyt
0 głosów
2 odpowiedzi 292 wizyt
pytanie zadane 14 stycznia 2016 w JavaScript przez 0rb_12 Bywalec (2,440 p.)
0 głosów
1 odpowiedź 235 wizyt
pytanie zadane 19 lipca 2015 w Offtop przez Pan Kulomb Pasjonat (18,630 p.)

92,832 zapytań

141,777 odpowiedzi

320,822 komentarzy

62,162 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.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...