Momencik, trwa przetwarzanie danych   loading-animation

Mistrzowie.org

Pokaż menu
Szukaj

Jajka i parówki

by pietros132
Dodaj nowy komentarz
avatar romek95a
2 2

a cudzysłów gdzie

Odpowiedz
avatar mexorsu
1 1

@romek95a: Wszystko w porządku, linijkę nad tym było: #define kup "kup" #define parowki <<"parowki";

Odpowiedz
avatar romek95a
0 0

@mexorsu: nieprawda

Odpowiedz
avatar wurm
0 2

Bez sensu, bo jak nie będzie jajek to będzie error, bo nie będzie wiedział ile parówek kupić.

Odpowiedz
avatar Frogy0
2 2

Jak jajka same w sobie mogą być booleanem? Powinno być isJajkaExist() czy jakoś tak. No i skoro już są tym booleanem to po co jeszcze przyrównanie do true? A po trzecie bezpieczniej byłoby napisać if (true == jajka) w razie jakby mu się liczba "=" poebala i zrobił przypisanie

Odpowiedz

Zmodyfikowano 1 raz. Ostatnia modyfikacja: 20 grudnia 2017 o 14:24

avatar czepialski
0 0

@Frogy0: raczej doJajkaExist() Żeby było logicznie i bez definiowania metod (choć do samego zakupu parówek pewnie będzie trzeba), możemy potraktować jajka jako tablicę o ilości elementów równej ilości jajek, które sklep może pomieścić maksymalnie. Wtedy można napisać if (jajka[0] != null).

Odpowiedz
avatar Frogy0
1 1

@czepialski: Jak to "do"? Przecież nie tworzych jajek tylko sprawdzasz czy istnieją. Liczba jajek może się zmieniać więc tablica to słabe rozwiazanie. Chyba, że potraktujemy jako opakowanie tylko ale wtedy w pierwszym może nie być akurat jajka bo ktoś buchnął :D Już prędzej jako listę i wtedy if(!jajka.isEmpty())

Odpowiedz
avatar konto usunięte
0 0

@czepialski: powinno być exist() jako metoda obiektu jajka klasy Jajka. Jak w nazwie metody masz "do" to znaczy, że chcesz by ta metoda coś robiła. Metodę doJajkaExist() można zrozumieć jako jakiś pseudo konstruktor czy inną metodę tworzącą. Najlogiczniej powinno być: if(!jajka.empty()) zakładając, że jajka są kontenerem przechowującym n obiektów jajko, albo troszkę bardziej obiektowo: if(sklep.getTowary()[jajko]) Tak jak @Frogy0 napisał też jest dobrze, ale troszkę przydługa nazwa, zwłaszcza gdyby miała ona być metodą klasy jajko. EDIT @Frogy0 uprzedziłeś mnie ;)

Odpowiedz

Zmodyfikowano 2 razy. Ostatnia modyfikacja: 20 grudnia 2017 o 16:37

avatar Marhibur
0 0

@LPHusarz: no i sie milosnik javy pojawil. Z wami to jak z weganami i prawnikami. Odzywacie sie niepytani :)

Odpowiedz
avatar konto usunięte
3 3

@Marhibur: od 7 lat piszę w C++, w Javie napisałem jedynie kilka modów do MC, wiesz, że w C++ też możesz stosować OOP? Ty natomiast NA PEWNO dopiero zaczynasz przygodę z programowaniem i jesteś na etapie gdzie uważasz, że już wszystko wiesz. Spokojnie, to mija jak się zorientujesz ile jeszcze nauki przed tobą ;)

Odpowiedz

Zmodyfikowano 1 raz. Ostatnia modyfikacja: 20 grudnia 2017 o 17:13

avatar czepialski
0 0

@Frogy0,LPHusarz: Z 'do' zamiast 'is' chodziło tylko i wyłącznie o semantykę języka angielskiego (patrz nick ;)), nie o sam sens takiej konstrukcji - nie mówi się 'is jajka exist', tylko 'do jajka exist'. Gdyby było 'jajko', byłoby 'doesJajkoExist()'. "Liczba jajek może się zmieniać" - dlatego tablica ma rozmiar stały, równy maksymalnej ilości jajek, którą sklep może/chce zamówić. Zakładając, że układamy je po kolei od pozycji 0, jeśli obiektu 'jajko' nie ma na pozycji 0, to znaczy, że jajek nie ma. Oczywiście nie jest to optymalne rozwiązanie, ale na potrzeby napisania zwięzłego komentarza jak w screenie, bez definiowania metod. Czyli if (!jajka.isEmpty()), albo if(sklep.getTowary()[jajko]) wymagają definicji isEmpty() (jeśli dobrze pamiętam ta metoda jako predefiniowana jest dla Stringów) i .getTowary(). Jajka[] jedynie tego, że obiekt jest poprawnie stworzony/zainicjowany. A w żarcie chodzi o to, żeby było jak najbardziej zwięźle i podstawowo, żeby jak największa grupa żart załapała :) Z Waszych if(!jajka.empty()) jest najfajniejsze, bo używa funkcji wbudowanej w pakiet (nie tworzonej samemu, czego czepiam się wyżej) i niejako implikuje, że obiekt do którego się odnosi jest tablicą; ale nie jest jednoznaczne, bo mimo wszystko nie mamy pewności czym jest jajka, ani skąd i czym jest empty(). Oczywiście to wszystko bzdury, no i i tak o kant tyłka potłuc cały żart, bo nie kupisz parówek bez zdefiniowania metody, przynajmniej ja nie widzę takiego sposobu (może tutaj coś zaproponujecie ;P), może rzeczywiście poza coutem "Poproszę 10 parówek". Pozdrawiam :)

Odpowiedz
avatar konto usunięte
0 0

@czepialski: jeśli używasz STL'a i jajka trzymasz w dowolnym kontenerze to if(!jajka.empty()) działa bezproblemowo ;) chociażby dla vectora: cplusplus.com/reference/vector/vector/empty/ samemu nie trzeba definiować żadnej metody, a co do żartu no to cóż istnieje spora szansa, że programista bardzo rzadko ma "zwykłe" poczucie humoru, dlatego się "czepiamy" kodu (chociaż większość doświadczonych programistów zapewne by zignorowała to, bo i po co rozpoczynać shitstorm).

Odpowiedz
avatar karakar
-1 3

Zapytanie z błędami i niepotrzebnymi zapisami. Po co if(jajka==true) jak można if(jajka), przy kup parówki brakuje cudzysłowu i średnika. Prawdziwie profesjonalnie zapisał bym to tak: std::cout<<jajka?"Kup parówki":"";

Odpowiedz
avatar konto usunięte
2 2

@karakar: profesjonalnie bo z użyciem operatora porównania gdzie jako argument false masz pusty ciąg znaków? czyli do strumienia przesuwasz nic w przypadku false i wykonujesz 2 operacje zamiast jednej, no nieźle...

Odpowiedz

Zmodyfikowano 1 raz. Ostatnia modyfikacja: 20 grudnia 2017 o 16:40

avatar karakar
-1 1

@LPHusarz: nie przesadzajmy z optymalizacją. Efekt jest zachowany, a wszystko mam w 1 linii.

Odpowiedz
avatar konto usunięte
0 0

@karakar: i podczas debugowania (albo nawet kompilacji) masz przeskok kilku instrukcji. myślisz, że dlaczego programiści w EA piszą przeważnie if(condition) expression; albo nawet if(condition) { expression; } Chodzi o to by podczas refaktoryzacji kodu albo ewentualnego debugowania nie było kilometrowych linijek i by jedna linijka była odpowiedzialna za jedną rzecz.

Odpowiedz
avatar Marhibur
-1 1

@karakar: prawdziwie profesjonalnie to powinienes uzyc namespace zeby nie bylo std::

Odpowiedz
avatar konto usunięte
-1 3

@Marhibur: napiszę tylko: "XD". using namespace std; to jeden z największych grzechów jakie możesz popełnić. Pisze się to tylko pod warunkiem, że wie się co się robi.

Odpowiedz
avatar mexorsu
1 3

@LPHusarz: Gdy widzę "using namespace std" myślę sobię "o, nowy student-stażysta" ^^

Odpowiedz
avatar mikmas
0 0

@karakar: "Ch*j, że wywołuję funkcję, która nic nie robi. Ważne, że mam w jednej linijce"

Odpowiedz
avatar karakar
1 1

@mikmas: Purysci C++ się znaleźli. To tylko głupie parówki, a nie rozbudowana aplikacja. Chodzi tylko o popisanie się.

Odpowiedz
avatar Dralor
0 0

@karakar: I piszesz to w odpowiedzi na własny komentarz, w którym się popisujesz. Tym bardziej, że LPHusarz ma racje (poza tą częścią z `using namespace std;`).

Odpowiedz
avatar eleutheria
0 0

A nie trzeba by było pójść jeszcze w kierunku "else"? Bo jak nie ma jajek, to miał kupić parówki i tak, tylko nie wiadomo, ile.

Odpowiedz
avatar icywind
0 0

if(jajka != boost::none) { kup(parowka*10); }

Odpowiedz
avatar Jarosaki
1 1

Wszystko źle :D Class jajka { public void kup_parówki(int ilość) { //Jakaś czynność MessageBox.Show("Kupiono " + Convert.ToString(ilość) + " parówek. ) } public boolean parówkacheck() { return true; } class Main() { if(Jajka.parówkacheck() == true) { Jajka.Kup_parówki(10); } else { MessageBox.Show("Nie ma jajek nie ma parówek" } } }

Odpowiedz
avatar romek95a
0 0

@Jarosaki: źle zamknąłeś nawias i nie ma return 0;, nie wiem kto tu ma wszystko źle

Odpowiedz
avatar Dralor
0 0

@Jarosaki: parowkacheck i kup_parówki nie mogą być metodami klasy jajka - są poza jej kompetencjami.

Odpowiedz
Udostępnij