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

Object Storage Arubacloud
0 głosów
195 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ź 346 wizyt
0 głosów
2 odpowiedzi 262 wizyt
pytanie zadane 14 stycznia 2016 w JavaScript przez 0rb_12 Bywalec (2,440 p.)
0 głosów
1 odpowiedź 202 wizyt
pytanie zadane 19 lipca 2015 w Offtop przez Pan Kulomb Pasjonat (18,630 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...