- Az NVIDIA szerint a partnereik prémium AI PC-ket kínálnak
- Két Zen 5-ös dizájnjának mintáit is szállítja már az AMD
- A Colorful "fagyosan kompakt" alkatrészekkel megy elébe a nyárnak
- A Keychron ismét egy űr betöltését vállalta magára az egerek szegmensében
- Az átlagnál vaskosabb ventilátorok kandikáltak ki a Corsair vitorlája mögül
Hirdetés
-
A Colorful "fagyosan kompakt" alkatrészekkel megy elébe a nyárnak
ph A vállalat többek között egy slim profilos léghűtővel, egy helytakarékos táppal és egy ITX-es házzal adott magáról életjelet.
-
Kapnak egy rakás reklámot a Roblox játékosai
it Videohirdetésekre készülhetnek ezentúl a virtuális világokban a Roblox játékosai.
-
Premier előzetest kapott a V Rising
gp Napokon belül befut a teljes PC-s kiadás, az év során pedig megkapjuk a PlayStation 5 változatot.
Új hozzászólás Aktív témák
-
ToMmY_hun
senior tag
válasz bandi0000 #3399 üzenetére
A BSc elvégzése nagyon ajánlott. Nélküle nem, vagy nagyon kis eséllyel fogsz bejutni komolyabb cégekhez. Persze lehetsz kivételesen nagy tehetség, de egy diploma akkor sem árt.
#3402 - bandi0000 Pedig nagyon is hasznos. Nem az átadott konkrét tudás miatt, hanem a gondolkodásmód miatt, amire késztet/rávezet ha arra alkalmas vagy.
[ Szerkesztve ]
C programmers never die, they are just cast into void.
-
bandi0000
nagyúr
válasz dabadab #3400 üzenetére
Kösz majd akkor én is megpróbálom, sokat am se várok a diplomátol csak a papírt
ToMmY_hun: szeretnék mindenképp menni,amúgy nehéz lenne elindulni
Hát sok jót nem hallok a felsőoktatásról, de mand kiderül, csak a sok töltelék tárgytól tartok..
[ Szerkesztve ]
Xbox One: bandymnc
-
dobragab
addikt
válasz bandi0000 #3402 üzenetére
Hát sok jót nem hallok a felsőoktatásról, de majd kiderül, csak a sok töltelék tárgytól tartok..
Nálunk (BME-VIK, mérnök informatika) egyelőre alig van tölteléktárgy, annyi a szakmai anyag, hogy van mivel kitölteni a 3,5 / 5,5 évet.
[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
dobragab
addikt
válasz Ereshkigal #3405 üzenetére
A C++98 mára egy elég jól dokumentált és fefedezett nyelv, azt szerintem tényleg 9/10-re ismeri.
Viszont folyamatosan kerülnek bele új feature-ök. C++11 még egészen jól követhető. C++14 nem hozott annyi gyökeres újdonságot, mint a C++11, de azért volt bőven. A C++17 tervezete és az eddig elfogadott módosítások alapján már most elég vad (operator. például), ezt érdemes végigcsemegézni. Fogadni mernék, hogy ebben is találnak majd olyan hidden feature-öket, mint anno a template metaprogramming volt.
Úgyhogy szerintem nem ismeri jobban a C++-t, mint 7/10, max. 5/7
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
pvt.peter
őstag
válasz bandi0000 #3399 üzenetére
Munkahelyen fogja az ember leginkább elsajátítani, illetve sztem fontos, hogy a munkatársakban is meglegyen a fejlődni akarás, ne legyen visszahúzó erő ... hosszútávon nagyon romboló lehet az ilyen.
Az sem árt ha van a csapatban több expert ...Ez egy .50-es rombolópuska, elég szép visszarúgással.
-
dobragab
addikt
válasz EQMontoya #3417 üzenetére
Kár. Valahogy tiszta szívemből gyűlölöm a típustalan nyelveket. Amiben még pontosvessző, kapcsos zárójel sincs, de interpreter van hozzá, csak rontja az összképet.
Tomcat + XSQL szervlet + XSL kombónak van létjogosultsága?
[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
ToMmY_hun
senior tag
válasz dobragab #3418 üzenetére
Tényleg sok helyen használják. BigData elemzéshez rengeteg Python-ban íródott eszköz van, szóval az is sokat segít a felhasználóbázis növelésében. A szintaktikáját én sem szeretem, de még mindig sokkal barátságosabb, mint a Perl. Van egy olyan vicc, hogy mi lesz ha leültetsz egy millió majmot kódolni? Egy majom C++ kódot ír, a többi Perl-t.
[ Szerkesztve ]
C programmers never die, they are just cast into void.
-
dobragab
addikt
válasz dabadab #3419 üzenetére
Jogos, ott a pont.
Én a dinamikusan típusos nyelvekre gondoltam, tényleg rosszul fogalmaztam
if a > 5:
b = "hello"
else:
b = False
print(b)Szóval a változódeklaráció hiánya, egy változó típusának mágikus megváltozása, a változók élettartamának ilyen értelmezésével... leginkább káosz
(#3420) ToMmY_hun
Igen, ismerem a viccet, szerintem is zseniális
Na mindegy, befejezem a Python hate factory-t, túlzottan off.
[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
EQMontoya
veterán
válasz dobragab #3418 üzenetére
Anno én is így voltam ezzel, amikor még fiatal voltam, és balga. Ugyanakkor rengeteg olyan probléma van, amire a manapság használt, erősen típusos és fordított nyelvek (c++, java, c#) egyszerűen túl komplikáltak, nehézkesek sok esetben. Szóval jött a shell sript, majd a Python.
Pl. ki akarok szedni A mappából minden olyan filet, aminek a neve illeszekedik egy regexre, a héten volt módosítva és nem tartalmazza az "aszpartam" szót.
Vagy pl. egy logfilet kellett bányásznom, abból kiszedni bizonyos sorokat, azokból bizonyos adatokat, ebből gyártani egy html táblázatot és azt elküldeni mailben. Ezt meg lehet oldani persze javaban is, de Pythonban "kicsit" kényelmesebb.Same rules apply!
-
ToMmY_hun
senior tag
válasz EQMontoya #3422 üzenetére
Pontosan ilyen egyszerű feladatokra lettek kitalálva és ezekben nagyon is jók. A probléma ott kezdődik, ha kicsit komolyabb, nagyobb projektet is ezek segítségével akarnak létrehozni. Sajnos láttam már ilyeneket nagy multinál és egyáltalán nem tetszett. Egyébként a Java is nagyon kényelmesen használható. Én ahhoz szoktam nyúlni, ha valami triviális dolgot gyorsan kell megoldani. Múltkor például apámnak készítettem benne GUI-s képátméretező szoftvert. Nagyjából 1,5 óra volt megírni nem túl szolid, körülbelül fél éves Java tapasztalattal.
Egyéb: Úgy néz ki sikerült C++ fejlesztői munkát megnyernem, ezúton is köszönöm a segítséget a fórum lakóinak! Lehet, hogy nektek nem tűnt úgy, de iszonyat sokat segítettek az ügyben.
[ Szerkesztve ]
C programmers never die, they are just cast into void.
-
ToMmY_hun
senior tag
Sziasztok!
Eléggé elvetemült dolgot szeretnék csinálni, és előtte kikérném a profik véleményét arról, hogy érdemes-e ezt a megközelítési módot választani. Mátrixban kellene tárolnom trigonometrikus függvényeket, úgy, hogy ezek a függvényeket tartalmazó mátrixok egymással szorozhatóak legyenek. Arra gondoltam, hogy készítek a trigonometrikus függvényeknek egy-egy osztályt, amelyekben megadható a függvény típusa és a annak paraméterei. A függvények a következő alakot ölthetik: x * sin(y). Ezeket tárolnám az osztályban, és az osztály egy tagfüggvényének hívására történne meg a számolás, majd egy másikkal visszakérhető lenne az eredmény. Természetesen a szorzás és összeadás operátorokat overloadol-nám, hogy az eredmény értékével végezzék a műveletet. Szerintetek ez mennyire ocsmány és esetleg tudtok javasolni szebb megoldást? A performace egyelőre nem számít, megelégszem azzal is ha működik és viszonylag elviselhető a koncepció. Az elvégezendő műveletek száma nagyjából 60 * 60, azaz 3600 másodpercenként, szóval tényleg nem érdemes szöszölni a teljesítménnyel, legalábbis még nem.
Előre is köszönöm a tippeket!
C programmers never die, they are just cast into void.
-
dobragab
addikt
válasz ToMmY_hun #3424 üzenetére
A feladat első ránézésre nem tűnik elvetemültnek, de valahogy nem értem minden részletét.
Mátrixban kellene tárolnom trigonometrikus függvényeket, úgy, hogy ezek a függvényeket tartalmazó mátrixok egymással szorozhatóak legyenek.
Mit értesz két ilyen mátrix szorzatán? Ugyanúgy számolnád, ahogy rendes számokkal? Akkor mit jelent két ilyen függvény összege ill szorzata?
A függvények a következő alakot ölthetik: x * sin(y)
Itt x és y változók, vagy paraméterek?
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
ToMmY_hun
senior tag
válasz dobragab #3425 üzenetére
A feladat nem, a megoldás viszont lehet hogy az.
A két mátrix szorzatán egyelőre elegendő lenne az aktuális paraméterekre a függvény által visszaadott számértékek egyszerű számként való szorzatát érteni. Azért emeltem ki a szorzatot és összeget, mert úgy szeretném megcsinálni, hogy a függvény eredményeként adott számot adja, illetve szorozza össze a program akkor, ha én a függvényre mint objektumra hivatkozok.
Az x és y matematikai értelemben paraméterek, tehát a függvény hívásakor értékük ismert.
[ Szerkesztve ]
C programmers never die, they are just cast into void.
-
bandi0000
nagyúr
arra van esetleg ötletetek hogy elméletbe hogy lehetne megcsinálni azt, hogy:
adott egy IPV6 címz, pl: 2001:0e00:41a0:006b:00de:03c0:0e00:60bc ezt én 1db változóba vettem fel, de feladat az hogy rövidítsem, ahol az első X szám 0 oda csak 1 db 0-át kell rakni, pl 006b->06b
de mivel az egész cucc kettőspontokkal mindenestül 1 változóba van, így nem tudom hogy hogyan álljak nekiXbox One: bandymnc
-
jattila48
aktív tag
válasz bandi0000 #3429 üzenetére
Egy hatékony megoldás:
const char *ipv6_addr="2001:0e00:41a0:006b:00de:03c0:0e00:60bc";
char trimmed_ipv6_addr[40];
int trim=1,j=0;
for(int i=0;i<strlen(ipv6_addr);++i){
char c=ipv6_addr[i];
if(c==':')trim=1;
switch(trim){
case 0:
trimmed_ipv6_addr[j++]=c;
break;
case 1:
trimmed_ipv6_addr[j++]=c;
if(c=='0')trim=2;
else if(c!=':')trim=0;
break;
case 2:
if(c!='0'){
trimmed_ipv6_addr[j++]=c;
trim=0;
}
break;
default:
//ilyen nem lehet
;
}
}
trimmed_ipv6_addr[j]=0;Akár "helyben" is elvégezhető (ha az átalakítandó karaktertömb már eleve a trimmed_ipv6_addr változóban van).
„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár
-
dobragab
addikt
válasz EQMontoya #3431 üzenetére
+1. A megoldás ránézésre jó, én csiszolnék rajta.
1. a trim nagyon enum-szagú
2. char* a 21. században?
3. Igen, szerintem helyben kéne végezni, egy std::string-en. Aztán betenni egy függvénybe, ami std::string&-et vár.Vagy std::ostringstream-be pusholni a karaktereket.
(#3432) jattila48
Szabványos C99. Sőt, egyetlen nem-C89 elemet használ, a for(int...
Szebb megoldás: írsz IPv6 osztályt, ahol uint16_t-tömböt tárolsz belül. Megírod a beolvasást, ami tetszőleges formátumú IPv6 címet be tud olvasni, és a kanonikus alakba visszaírást, és mindjárt egyszerre több feladatot oldottál meg.
Ha tényleg "csak" a rövidítés a feladat, ahhoz tényleg OP egy ilyen osztály, de ha használni kell az IPv6 címeket, nem igazán illik sztringben tárolni.
[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
jattila48
aktív tag
válasz dobragab #3433 üzenetére
Valóban a trim-nek enum-nak kéne lenni. Ha több állapot lenne, vagy esetleg bővülhetne, akkor biztos úgy csinálnám. Persze osztályt is lehetne csinálni belőle, meg string-gel dolgozni. Csak az algoritmust akartam bemutatni, hogy mennyire egyszerű, és nem kellet hozzá sem boost, sem regexp, sem vector<string>, amiknél feltehetőleg jóval hatékonyabb így (futásidőben, és memória használatban is (főleg ha helyben történik a feldolgozás)).
„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár
-
jattila48
aktív tag
válasz Jester01 #3434 üzenetére
Már miért lenne fölösleges az strlen? Abban biztos lehetsz, hogy nem fog minden kiértékeléskor lefutni, ezt kioptimalizálják. Rengeteg hasonló ciklust láthatsz példa kódokban. Egyébként hirtelen nem jutna eszembe ennél hatékonyabb megoldás (esetleg neked?), úgyhogy engedd meg, hogy annak mondjam.
„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár
-
-
dobragab
addikt
válasz jattila48 #3441 üzenetére
Feltéve, hogy függvénybe rakod, csak akkor, ha így deklarálod:
restrict const char *ipv6_addr
És azt sem egyszerű megoldani, hogy juttatod ki az eredmény-tömböt a függvényből. Out paraméterrel persze lehet, de valahogy szebbnek tűnik rendes visszatérési értékként, std::string-ben.
[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
jattila48
aktív tag
válasz dobragab #3442 üzenetére
Ezt a restrict-et nem tudom mi, sose használtam, de azt hiszem eltértünk a lényegtől. Szerintem akár strlen, akár nem, attól az algoritmusom még hatékonynak mondható. Maradjunk annyiban, hogy a for így módosul:
for(int i=0;ipv6_addr[i]!=0;++i)
És most már próbáljatok nem kötekedni, hanem érdemben segíteni a kérdezőnek. Köszi!„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár
-
jattila48
aktív tag
válasz dobragab #3442 üzenetére
Az eredmény tömböt úgy juttatom ki, hogy előbb bejuttatom. Vagy helyben történik a feldolgozás, és akkor az input egybe output is, vagy kívül foglalok az output tömbnek helyet, a rámutató char * pointert és a puffer méretét pedig paraméterként kapja a fv. De ezt szerintem neked nem kell magyarázni.
„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár
-
dobragab
addikt
válasz jattila48 #3435 üzenetére
Csak az algoritmust akartam bemutatni, hogy mennyire egyszerű, és nem kellett hozzá sem boost, sem regexp, sem vector<string>, amiknél feltehetőleg jóval hatékonyabb így (futásidőben, és memória használatban is (főleg ha helyben történik a feldolgozás)).
Van még egy dolog, amit nem vettél számításba, vagy csak tojtál rá. A kolléga, aki segítséget kért, tanul. Ez fontos következményekkel jár.
1. Nem kéne mindent a hatékonyságra fogni. Az lenne a lényeg, hogy egyszerű, világos megoldást mutass neki, amit könnyen felfog, megért, és reprodukálni is tudna.
2. Neked sok-sok év tapasztalatod van abban, hogy hogyan hatékonyabb, és mindent ennek alávetve írsz meg. Ő most ismerkedik a nyelv lehetőségeivel, és pont lesz*rja, mennyire hatékony, ha érti. Gőze sincs arról, hogy hogyan kéne hatékony kódot írni, és ne is próbáld erre nevelni, mert ahhoz tárgyi ismeretek hiányoznak. Ráadásul ha megpróbálja, annál rosszabb. Nem fog neki menni, de legalább érthetetlen kódot ír.
3. A kolléga tanul, és te példakóddal segítesz. Ilyenkor te - akarva, akaratlanul - oktatóként lépsz fel. Mivel hozzánk képest meglehetősen kevés kódot látott, zömmel a sajátját, baromi nagy hatással van rá, milyen kódot lát követendő mintaként. Olyan kódot, ami saját bevallásod szerint is több ponton rossz, nem nagyon kéne neki mutatni.
4. A kolléga további életében valószínűleg az ilyen szintű optimalizálás soha nem lesz fontos. Manapság sem illik C kódot írni az STL használata helyett, mert feleslegesen bonyolítja a kódot. Optimalizálni ráadásul csak akkor kéne, ha lassú a kód (a nyilvánvaló f*szságokat kivéve). Inkább arra kéne nevelni, hogy használjon STL tárolókat, azért vannak.
Így elsőre ennyi, ami az érdemi segítséget illeti.
[ Szerkesztve ]
Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.
-
jattila48
aktív tag
válasz dobragab #3445 üzenetére
Nem egészen értünk egyet.
1. Attól, hogy valami hatékony, még lehet egyszerű és világos. Sőt! Ez az algoritmus is világos, de ha nem, akkor nagyon szívesen elmagyarázom. Hagyjuk meg a kérdezőnek, hogy eldöntse számára világos-e vagy sem. Egyelőre még nem szólt hozzá.
2. A kódom nem rossz (legalábbis remélem), hanem lehetett volna szebben is írni, ez igaz. Ettől a lényeg (maga az algoritmus) még jól látszik rajta. Hirtelen felindulásból 5 perc alatt ennyire futotta. Nem a kódolást akartam követendőként állítani, hanem hogy, lehet a saját józan eszünket is használni ahelyett, hogy rögön mindenféle túlfejlett apparátust (boost, regext,...) kezdenénk mozgatni apró problémákra. Erről már többször írtam, a véleményem továbbra is fenntartom. Ha megérti ezt az algoritmust, akkor talán tanult is valamit (remélem), és már megérte.
3. Azt, hogy illik-e manapság C kódot írni STL helyett,... hát a fene tudja. Én sokszor szoktam ilyen kisebb feladatoknál, ugyanakkor az STL-t is használom. Szerintem jól megférnek egymás mellett. Itt a példában az algoritmus szerintem jobban látszik STL tárolók használata nélkül. Nem vonja el fölöslegesen a figyelmet. Továbbá azt is érdemes megjegyezni, hogy az STL tárolók használatának ára van. Fölösleges ide-oda másolások (túl sok ilyen kódot láttam), ha nem pont alkalmas a tároló amire a használni akarja, akkor egész elborzasztó "patkolásra" is képesek,...
4. Egyébként ha nagyon akarja valaki, akkor könnyen ki lehet cserélni STL tárolókra a tömböket, és akkor mindenki boldog lesz.
Én remélem tudtam segíteni, ellenben tőletek semmilyen konkrét segítséget nem kapott.
„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár
-
bandi0000
nagyúr
köszönöm a segítségeket, igazából direkt nem akarom hogy dolgozzatok a kóddal mert sajnos semmi értelme, ami nektek egyértelmű az nekem teljesen új...
szóval ha kérdezek akkor inkább az elméleti megoldásra vagyok kíváncsi, a többit megírom én a saját "nyelvemen" amit tudok, majd később ha tanulom valszeg nem így fogom írni a programot, ez az amit tudok most később majd meglátjuk mi lesz
de közbe még 1 dologba ütköztem nem nagy de kérdezem, karakterként tároltam el számot, na már most ezeket össze kellene adnom, arra rájöttem hogy karakterként hiába adom össze viszont emlékszek hogy régebben tudtam árírni karaktert számmá, asszem az sscanf-el, de most valamiért nem akar működni
csak részlet hogy lássátok hogy hogy írom, tisztában vagyok vele hogy nagyon szar... meg vannak egyszerűbb megoldások, de jelenleg ezt tudom
int main()
{
printf("1. Feladat: Beolvasas\n");
FILE *f=fopen("veetel.txt","r"); if(f==0) return 1;
FILE *o=fopen("adaas.txt","w");
qw adat[500],csere;
int i,j,m=0,k,l;
char farkas[7]={'f','a','r','k','a','s'},uzzi[11][91];
while(fscanf(f,"%d %d\n%[^\n]\n",&adat[m].ns,&adat[m].ras,&adat[m].uzi)==3) m++;
printf("2. Fealdat: \n");
printf("Az elsot rogzitette: %d, az utolsot rogzitette: %d radioamator\n",adat[0].ras,adat[m-1].ras);
printf("3.Feladat:\n");
for(i=0;i<m;i++)
{
k=0;
for(j=0;j<strlen(adat[i].uzi);j++)
{
if(adat[i].uzi[j]==farkas[k]){ k++;} else k=0;
if(k==6) printf("%d nap %d radioamator\n",adat[i].ns,adat[i].ras);
}
}
printf("4.Feladat:\n");
int db=0;
for(j=1;j<12;j++)
{
db=0;
for(i=0;i<m;i++)
{
if(adat[i].ns==j) db++;
}
printf("%d nap %d feljegyzes\n",j,db);
}
printf("\n\n5.Feladat:\n\n");[ Szerkesztve ]
Xbox One: bandymnc
-
dabadab
titán
válasz bandi0000 #3447 üzenetére
Ez is C-ben van Tényleg nem oktatnak C++-t?
C++-ban így lehet stringet intté konvertálni:
std::string hex="0abc";
int i=std::stoi (hex,nullptr,16);(Nézd meg az stoi dokumentációját, a második paraméterének a segítségével végig lehet menni az egész IPv6 stringen)
[ Szerkesztve ]
DRM is theft
-
dabadab
titán
válasz jattila48 #3446 üzenetére
"A kódom nem rossz (legalábbis remélem)"
Hát ez
char trimmed_ipv6_addr[40];
meg ez
for(int i=0;i<strlen(ipv6_addr);++i){
kiad egy potenciális buffer overflowt.Egyébként kb. ugyanez az algoritmus úgy nézne ki C++-ban, hogy (most nincs nálam fordító, így csak IQ-ból):
string src="2001:0e00:41a0:006b:00de:03c0:0e00:60bc";
string dst;
char prev=0;
bool trimming=true;
for ( char c in src )
{
if ( trimming && c == '0' && prev == '0' )
{
// skip char
continue;
}
if ( c == ':' )
{
trimming = true;
}
else if ( c != '0' )
{
trimming = false
}
dst +=c;
prev=c;
}[ Szerkesztve ]
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!
- Telekom mobilszolgáltatások
- Energiaital topic
- Autós kamerák
- Luck Dragon: Asszociációs játék. :)
- Mibe tegyem a megtakarításaimat?
- Renault, Dacia topik
- sziku69: Szólánc.
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- Termékoldal buktatta le a Huawei Watch Fit 3-at
- Háztartási gépek
- További aktív témák...