- Karácsonyfaként világíthat a Thermaltake új CPU-hűtője
- Az USA vizsgálja a RISC-V kínai terjedésének kockázatát
- Kicsit extrémre sikerült a Hyte belépője a készre szerelt vízhűtések világába
- Egészen nagy teljesítményspektrumon fedné le a mobil piacot az AMD
- Kihívás a középkategóriában: teszten a Radeon RX 7600 XT
Hirdetés
-
Új Beats fej- és fülhallgatók jelentek meg
ma Frissítette a Solo termékcsaládot az Apple házi audiomárkája.
-
Már tudjuk, hogy mikor jön az idei Xbox Games Showcase
gp A showt egy külön Direct előadás követi, ami szinte biztosan az idei Call of Duty lelepelzése lesz.
-
Spyra: akkus, nagynyomású, automata vízipuska
lo Type-C port, egy töltéssel 2200 lövés, több, mint 2 kg-os súly, automata víz felszívás... Start the epic! :)
Új hozzászólás Aktív témák
-
dabadab
titán
válasz WonderCSabo #1638 üzenetére
Mondjuk - mint a nevebol latszik - a GUI designer resze qt-re van kitalalva, de amugy sima C++ projekteket is kezel, van mindenre (Linux, Windows, OSX alapbol, meg talan Symbianra is le lehetne forditani ), ingyenes, gyors es nagyon kis light weightnek erzodik - es ezzel egyutt a Visual Assist X-szel tuningolt VS2010-hez kepest sem tunik kevestudasunak, sot, egy csomo dolgot jobban tud (pl autoindent meg a zarojelek, idezojelek automata lezarasa rettenetes nagy kiralysag benne) - persze vannak hianyossaga, de nem tul zavaroak, most igy hirtelen csak az jut eszembe, hogy search'n'replace nem megy selectionre.
Ja, es olyan IDE-t meg nem lattam, ami erdemi programozoi hibakat javitott volna.
[ Szerkesztve ]
DRM is theft
-
dabadab
titán
válasz proci985 #1645 üzenetére
"nálunk itt a kezdők VS2010el kezdenek"
Mondjuk pont kezdoknek szerintem nem annyira jo, egyreszt az ujonnan generalt projektekbe alapbol rak egy csomo vudut, masreszt meg gyakorlatilag teljesen hianyzik belole mindenfele refactoring tool, marpedig az kezdoknek (is) nagyon jol jon.
DRM is theft
-
dabadab
titán
válasz WonderCSabo #1647 üzenetére
Ezek kezdoknel se erdemi hibak, csak sima benazasok - nem azert kovetik el, mert azt hiszik, hogy ez igy jo, hanem annak ellenere, hogy tudjak, hogy nem jo. Azon nincs mit megtanulni, hogy nem irunk elerhetetlen kodreszleteket, ezt mindenki tudja magatol is.
Ami erdemi hiba, az pl. az, ha rosszul tervezi meg az osztalyait, ha tul sok kopipesztet hasznal a kodban (ahelyett, hogy generalizalna es kirakna egy methodba), ha spagettikodot ir, meg ilyenek. Ezeket viszont eszre se veszi az IDE.
DRM is theft
-
dabadab
titán
válasz proci985 #1663 üzenetére
Most hirtelen elgondolkodtam, hogy a c++ fejlesztoi palyafutasom elmult kb. tiz evben lattam-e ceges kodban dynamic castot. Szerintem nem
Ellenben gotot viszont igen (mondjuk szerintem szegeny goto indokolatlanul sok utalatot kap, egy fel evszazaddal ezelott, amikor Dijkstra megirta, hogy "considered harmful" meg mas programnyelvek voltak, tok maskepp hasznalt gotokkal).[ Szerkesztve ]
DRM is theft
-
dabadab
titán
válasz Sk8erPeter #1667 üzenetére
Ugyanaz, mint barmi mas mellett: hatekonysag meg atlathatobb kod. Alapjaban veve akkor szokott jol jonni, ha tobbszorosen egymasba agyazott ciklusbol kell kilepni vagy tobb helyen is visszaterhet a method, viszont a return elott mindenhol ugyanazt a szertartast el kell vegezni, ilyenkor egyszerubb azt csak egyszer megirni a method vegen, aztan return helyett odagotozni.
DRM is theft
-
dabadab
titán
válasz Sk8erPeter #1679 üzenetére
A fuggvenyhivasnak sajnos nagyon durva overheadje van (meg a visszateresnek is), szetcsapja a regisztervaltozokat, ha sebessegkritikus a kod, akkor az ember nem erolteti, foleg nem ciklusbelsoben, amirol eredetileg szo volt.
Raadasul - hogy visszaterjek egy kicsit az elejere - egy par soros ciklusbelsobol egy ezerparameteres fuggvenyt csinalni egyreszt latvanyosan rontja a kod olvashatosagat masreszt meg strukturalis szempontbol is valoszinuleg abszolut ellenjavallt dolog, mert az a resz egesz jo esellyel nem olyan, aminek kulon fuggvenyben lenne a helye.
DRM is theft
-
dabadab
titán
válasz WonderCSabo #1687 üzenetére
Meg pl. nem hatarozzak meg, hogy mi tortenjen, ha tobb szomszedos elem is van a tombben (foleg, hogy az az eset nem is lehetseges, hogy csak egy elemnek van szomszedja a tombben).
Meg magyarul a methodot nem metodusnak hivjak?
DRM is theft
-
dabadab
titán
válasz WonderCSabo #1689 üzenetére
"ha van, akkor az elsőt add vissza. Csak nincs értelmesen leírva."
Ez ertelmetlenul sincs leirva (mondjuk az "elso" szinten nem egy egzakt fogalom, a "legkisebb" vagy "az elso, amit megtalal a keresoalgoritmus" mar stimmel ).
[ Szerkesztve ]
DRM is theft
-
dabadab
titán
válasz WonderCSabo #1691 üzenetére
Nem, dehogy kotozkodok, csak arra akarok ramutatni, hogy a pontos, egyertelmu specifikacio baromi fontos dolog. Fontos a szamitastudomanyi vetulete is (hogy a fenebe csinal az ember egzakt programhelyesseg-bizonyitast olyan specifikaciora, hogy "hogyakkor ize, tudod, erted, na!"?) na meg persze a gyakorlati is, lattam eleg sok erofeszitest meg penzt karba veszni csak azert, mert a ket felnek nem sikerult ugyanazt ertenie a homalyosan megfogalmazott reszekbol.
DRM is theft
-
dabadab
titán
válasz Sk8erPeter #1701 üzenetére
En annak idejen kockas papiron szamoltam a biteket, aztan az ertekeket kozvetlenul a memoriaba irtam, szoval tudom, hogy lehet igy is, de ezzel egyutt szerintem marhasag nem hasznalni az IDE-k automatizmusait.
DRM is theft
-
dabadab
titán
A qtcreator is a .h-kbol meg a tobbibol szedi ossze a szukseges infot, szoval mukodik a kodkiegeszites mindennel (es a QT-t is csak onnan ismeri, szoval ha pl. nem includolod a QHash-t, akkor nem fogja tudni, hogy milyen metodusai vannak).
Egyebkent tudtatok, hogy QT-ben van foreach? Szoval a kovetkzo tok jol mukodik:
QHash<int, QString> stringHash;
.
.
foreach (const QString &s, stringHash)
qDebug() << s;[ Szerkesztve ]
DRM is theft
-
dabadab
titán
válasz Sk8erPeter #1716 üzenetére
"mi a gond vele akkor, ha mégis VS alatt fejlesztesz más környezetre?"
Nekem ugy tunt, hogy a "visual" resze csak MS dolgokat ismer.
"Vagy platformfüggetlenül lefordíthatóvá szeretnéd tenni a kódodat?"
Ez viszonylag problemas, mert nem tud makefile-t exportalni. Ha a VS-ben fejlesztett cuccot szeretned mashol is leforditani, akkor kenytelen vagy kulon, kezzel irni hozza makefile-okat.
Egyebkent meg tovabbra is qtcreator rajongo vagyok, mert annak rengetegsok elonye van, az egyik pl. az, hogy a shortcutok meglehetosen VS-kompatibilisek (es ha mar dolgozoban ugyis azt kell hasznalnom napi nyolc oraban, akkor ne kelljen az otthoni projektekhez valami tok masra atszokni).
[ Szerkesztve ]
DRM is theft
-
dabadab
titán
válasz proci985 #1724 üzenetére
Altalanos kodban - foleg desktopra szantban (de igazabol egyre inkabb mobilfronton is igaz) - nincs ertelme igazan a sebessegen meg a memorian gorcsolni, ha az ember nem csinal direkt okorsegeket, akkor nem lesz baj. Ha meg megis valahol feltunoen lassunak bizonyul, akkor meg az ember elokapja a profilert es optimalizalja azt az egy helyet, ami lelassitja.
En hajlamos vagyok maskepp latni a dolgokat, mert munkaidoban mondjuk a viruskereso engine CPU emulatorat pofozom es ha elvaras, hogy minden megtalalt .exe-t futtassa az elso par millio utasitasig, akkor ott tenyleg figyelni kell a sebessegre - ugyanakkor ha nem ilyen kod van, akkor sima C stilusu tomb helyett en is inkabb std::vectort hasznalok es magasrol teszek arra, hogy valamivel tobb processzorido meg memoria kell hozza, a gyakorlatban ezt siman behozza ott, hogy kenyelmesebb a hasznalata meg nincs buffer overflow.
DRM is theft
-
dabadab
titán
Nezed forditas kozben a CPU terhelest, ha alacsony, akkor az IO lassitja.
Mivel ugyis van 8GB-d, viccbol csinalhatsz egy RAM drive-ot is es kiprobalhatod, hogy hogyan hat a sebessegre, ha ott van a forras meg a QT-s headerek.szerk: meg lehet, hogy nincs bekapcsolva a parallel make, ha qtcreatort hasznalsz, akkor menj a Projects fulre, ott a Build beallitasok, a Make-nel nyomj a Detailsre es a Make argumentshez ird be hogy pl -j4 - enne hatasara egyszerre negy szalon fog futni a forditas.
[ Szerkesztve ]
DRM is theft
-
dabadab
titán
Igazabol a -j parameterere olyan nagyon egzakt formula nincs, az altalanos elkepzeles az, hogy legyen tobb, mint a magok szama, hogy ha az egyik IO-ra var, akkor elo lehessen huzni egy masikat, de ne legyen tul sok, mert az mar egy ido utan rontja a teljesitmenyt. A dologba a HT meg pluszba bekavar, szoval ha erdekel a dolog, akkor a legegyszerubb ha csinalsz par rebuildet kulonbozo -j-vel.
A qtcreatorban igy elsore nem latom, hogy honnan veszi a qt patheket, Linux alatt legegyszerubben egy bindes mounttal lehet megoldani a dolgot, valahogy igy:
mount -B /ramdrive/include/qt4/ /usr/include/qt4/Igazabol eleg a headereket atmasolni, igazabol azoknak az atnyalazasa telik idobe, meg ugy is dinamikusan linkel, szoval a /lib eleresi ideje nem oszt, nem szoroz.
DRM is theft
-
dabadab
titán
"A main függvénynek lehet visszatérési értéke"
A main()-nek kötelezően intet kell visszaadnia, se a void, se más visszaadott típus nem engedélyezett a C++ szabványban.
A main() által visszaadott érték lesz a végrehajtott program exit statusa.Dave-11: a "nem ad vissza semmit" pontosan ezt jelenti. Ha egy void függvénybe returnt írsz, akkor hibát dob a fordító. Mondjuk egy sin() függvénynél, vagy hasonlónál, nincs sok értelme a void-nak, mert ott vissza kell adni valamit, de van egy csomó olyan függvény, ami nem kiszámol valamit, hanem csak pl. egyszerűen kiír egy üzenetet, akármi, ahol nincs semmi, amit vissza lehetne adni, azok lesznek a void függvények.
[ Szerkesztve ]
DRM is theft
-
dabadab
titán
-
dabadab
titán
válasz Dave-11 #1830 üzenetére
Az srand() inicializalja a randomgeneratort, ezt csak egyszer kell megcsinalni, praktikusan a program elejen. Ez altalaban nem tul bonyolult kod es elmondhato rola, hogy ha ugyanazzal a szammal inicializalod, akkor utana pontosan ugyanazokat a "veletlen" szamokat fogod kapni, ezert nepszeru megoldas, hogy a jelenlegi idovel inicializaljak, valahogy igy: srand( time() );
A rand() meg ezek utan egyszeruen visszaad egy veletlenszamot (ami a 0 - RAND_MAX intervallumba esik).
Ha intervallumot akarsz (mondjuk X es X+Y koze), akkor az egyszeru, ertheto es naiv megoldas az, hogy a rand altal visszaadott szamnak az Y-nal valo osztasanak a maradekat veszed es hozzaadod X-et. Konkretan a te peldadban (1-50, ahol X = 1 es Y = 49):
int random_number = rand() % 49 + 1;Es akkor most egy kicsit kenytelen vagyok arrol szolni, hogy valojaban miert istentelen nagy szivas ez az egesz veletlenszam-temakor: a fenti peldaban, ha Y nem ketto valamelyik egesz szamu hatvanya (1, 2, 4, 8, 16 stb), akkor a veletlen szamaid eloszlasat megnezve fel fog tunni, hogy nem azonos esellyel kapod a szamokat, hanem lesz egy hatar es az alattiak valamivel nagyobb valoszinuseggel fordulnak elo. A miert megmagyarazasat az olvasora bizom
A masik problema meg a kiszamithatosag: a Firefoxban (illetve akkor meg Mozillanak hivtak) volt egy olyan biztonsagi hiba, hogy a fenti modon inicializalta a randomgeneratort amikor titkositashoz generalt veletlenszamokat. Csakhogy - a fentiek miatt - a tamadonak eleg volt azt kitalalnia, hogy milyen idot mutatott a gep oraja, amikor legeneralta a titkositashoz szukseges szamokat, marpedig ha egy titkositott kapcsolatot 12:54-kor kezd a bongeszo, akkor jo esellyel a gep oraja is 12:54-et fog mutatni, vagy akornyeken valamit - es mivel a time() felbontasa csak masodperces, ezert nem is kellett olyan tul sok szamot vegigprobalni ahhoz, hogy fel lehessen torni a titkositast.
Szoval a veletlenszamgeneralas nehez problema, ahol komolyan erre van szukseg, ott valami plusz hardverrel generaljak, ami valami kellokeppen veletlenszeru fizikai folyamaton alapszik.
szerk: Latom, en irtam a legtobb ideig, de legalabb latszatja is van
[ Szerkesztve ]
DRM is theft
-
dabadab
titán
válasz beast27 #2022 üzenetére
C# programozás [Olvasd el az #1 hozzászólást!]
Egyebkent a fort arra hasznaljak, hogy utasitasokat tobbszor futtassanak le. Amit te irtal, az tizszer fog lefutni: az elejen beallitja, hogy i erteket 1 legyen (i=1), aztan megnezi, hogy teljesul-e az a feltetel, hogy i ne legyen nagyobb tiznel (i<=10), aztan lefuttatja a ciklusmagot (azokat az utasitasokat, amiket tobbszor kell futtatni, ezt a reszt nem irtad oda) es a vegen megnoveli eggyel i-t (i++).
DRM is theft
-
dabadab
titán
válasz Dave-11 #2243 üzenetére
"Van valami egyszerű mód arra, hogy elérjük a nyomtatót és ki tudjunk vele nyomtatni tetszőleges dolgokat?"
Nincs. Ha nyomtatni akarsz akarsz, ahhoz valami kiegeszito konyvtarra van szukseged, pl. a QT nyomtatni is tud, de azert egyszerunek nem neveznem.
"Akár úgy is jó, hogy előtte kiírom őket egy txt-be, és aztán adom ki a nyomtatási parancsot."
Ezt mondjuk megcsinalhatod gond nelkul, erre van az exec().
[ Szerkesztve ]
DRM is theft
-
dabadab
titán
válasz Dave-11 #2246 üzenetére
Ize, neked nem is az exec() kell, hanem a system(), ami egyszeruen vegrehajt egy parancsot ugy, mintha parancssorbol beirnad. Hogy a Karma altal linkelt leirasbol vegyem a peldat:
int main(void)
{
// kiirod a kiirnivalot a text.txt-be
system("print /d:\\\\pserver\\laser1 c:\\text.txt");
}Persze ez abszolut hordozhatatlan megoldas, de legalabb tenyleg nem bonyolult
DRM is theft
-
dabadab
titán
válasz bandi0000 #2360 üzenetére
"az adatok beolvasását hogy tudnám megcsinálni hogy később kezelhessem külön őket?"
Hat ugy, hogy kenyelmes legyen
Csinalhatod azt is, hogy egyszeruen ugy tarolod le az adatokat, ahogy vannak, ugy egy kicsit macerasabb oket kezelni, viszont hatekony, vagy csinalhatsz egy 48x500-as tombot is, ahova egyszeruen beirod, hogy melyik kilometernel ki ul az egyes szekeken.Egyebkent a feladatok szerintem borzasztoak.
[ Szerkesztve ]
DRM is theft
-
dabadab
titán
válasz bandi0000 #2362 üzenetére
Az ilyen iskolai feladatoknal mindig zavar az, hogy rengeteget vacakolnak viszonylag trivialis beolvasassal/kiolvassal (amit aztan soha nem fog hasznalni senki se ugy a valo vilagban) meg rengeteg az elore meghatarozott konstans meg maximum, meg meg biztos vannak dolgok, amik zavarnak, csak nem tudatosultak bennem.
DRM is theft
-
dabadab
titán
-
dabadab
titán
válasz kemkriszt98 #2536 üzenetére
"Meg lehet ezt hívni 1 paraméterrel?"
Nem, mert le se fordul, default parametereket csak utolsokent lehet megadni.
DRM is theft
-
dabadab
titán
"Ha a fuggveny, amit hivsz, virtualis, akkor igazabol barmi megtortenhet, lenyegeben a leszarmazott osztalyok azonos nevu (virtualis) metodusai mind elerhetoek lesznek a hivo (friend) szamara."
Igen, de csak akkor, ha az adott objektumra base class tipusu pointerrel hivatkozik az ember (mert kulonben latja a fordito, hogy a leszarmazott methodjat kellene hivni)
#include <stdio.h>
class Q
{
protected:
friend class P;
virtual int q()
{
return 9;
}
};
class R : public Q
{
protected:
virtual int q()
{
return 3;
}
};
class P
{
public:
int p()
{
R r;
Q* q=&r;
//return r.q(); // NOT OK
return q->q(); // OK
}
};
int main(void)
{
P p;
printf("%d\r\n",p.p());
}DRM is theft
-
dabadab
titán
válasz HussarF #2617 üzenetére
"Meg a vector-okat, de azok is pointerként működnek, mint a tömbök, nem? vagy legalábbis nem hiszem, hogy az okozná a problémát"
Pedig de. Az std:vector<> az ugy mukodik, hogy amikor lemasolod, akkor a komplett adatstrukturat lemasolja.
(A QT containere pl. nem igy mukodnek, azok copy-on-write-ot csinalnak, de ez most csak mellekszal.)vagyis neked a kovetkezo kell pl:
void PhotoEffect(double *E1, int *sz_E, const vector<double> &E_tarolo)
DRM is theft
-
dabadab
titán
válasz HussarF #2622 üzenetére
"most már csak kb. másfélszer lassabb a függvényekbe szedett kód a spagettinél."
Akkor inline-old a függvényeket. Ahhoz az kell, hogy egy fordítási egységben legyenek, vagyis praktikusan a kis függvények vagy egy c++-ban legyenek azzal, ami meghívja őket (ez esetben inline-ként kell őket deklarálni), vagy benne legyen a függvény törzse is a header file-ban (ilyenkor meg automatikusan inline-olódik).
DRM is theft
-
dabadab
titán
Na, profilozta valaki?
DRM is theft
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!