- Alacsony profilú, madzagmentes klaviatúrák jöttek a Razer színeiben
- ASUS ROG csúcslap érkezett, ezúttal a "lopakodó" fajtából
- Átvette a DRAM-piac trónját az SK Hynix a Samsungtól
- Pénztárcabarát, ugyanakkor trendi mikrotorony jött a Jonsbótól
- A Linux támogatását vágja meg leginkább az Intel leépítése
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Calibre, az elektronikus könyvtár
- VR topik (Oculus Rift, stb.)
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Egérpad topik
- Először égett le egy újságnál a GeForce RTX 5090
- Milyen belső merevlemezt vegyek?
- Kezdő fotósok digitális fényképei
- Nikon DSLR topik
-
PROHARDVER!
Új hozzászólás Aktív témák
-
ArchElf
addikt
Írd a szakdolgozatod a bot-networkökről. Elég naprakész téma, sokat lehet rizsázni az elosztott számításról, a szuperszámítógépek fejlődéséről, meg lehet említeni az elosztott rendszerek feljődését, seti@home, folder...
E mellett meg lehet említeni a sebezhetőségeket, típusokat, felderítés fejlődését, jelenlegi felderítőeszközöket, és végül áttérni az automatikus sebezhetőség kihasználásra.
Harmadrészt lehet beszélni a titkosításról (kód és kommunikációs titkosítás), annak fejlődéséről, a múltbéli problémákról és a titkosítás jelen helyzetéről, jövőjéről.
Utána az egészet be lehet mutatni egy sample bot segítségével. Alapvetően három komponens (trójai - lehet akár manuális tepeítésű is; proxy; webszerver)
Ez (akár mind a hármat) meg tudod csinálni C-ben, Delphi-en, C#-ban (de még akár valami szkriptnyelven is).
Ha akarod még cifrázni a befejezésben a sample bot működésének elemzéséből lehet megfigyelési, detektálási és védekezési megállapításokat tenni.BTW: nekem majdnem ez volt a szakdolgozat témám, de egyrészt igen munkás volt, másrészta konzulensemnek nem nagyon tetszett, így végül egy netbankos probléma javasolt megoldása köré csináltam a dolgozatot...
AE
-
amargo
addikt
Itt jelen esetben egy négyzetes mátrixról van szó, dom a mátrix mérete.
Tehát, ha a dom 4, akkor 4X4-es mátrixról van szó.
De ezt könyeddén átírhatód:
struct matrix + int hogy más dimenziót is betudjál állítani,
GetMatrix, lényegiben az ellenörzéseken kívűl nem változik (bár érdemes itt is 2 ciklust csinálni, hogy ne csak az egyik irányba tudjál mozogni)
ClearMatrix függvénybe +1 ciklus kerül bele a lebontáshozMemória kezelés
A malloc, realloc és free függvények helyett használjuk a new és a delete operátorokat.
A C nyelvű memóriakezelő függvények és a C++ nyelv memória operátorai másképpen kezelik a memóriát, keverésük konfliktust okozhat. A malloc nincs felkészítve a konstruktorok kezelésére, a new-val lefogalt területet a free nem tudja rendesen felszabadítani, ezért a C nyelv memóriakezelő függvényeit ne használjuk.
Tömbök felszabadításakor a delete operátor után mindig használjuk az üres szögletes zárójelpárt ('[]').
Ezáltal a tömb minden elemére lefut a destruktor, felszabadítva a dinamikusan lefoglalt memóriaterületeket is. A szögletes zárójelpár nélkül csak az objektumhoz statikusan tartozó memóriaterület szabadul fel. Ha a zárójelbe a tömb méretétől eltérő szám kerül, akkor vagy nem szabadul fel az összes memória, vagy a destruktor olyan objektumra is meghívódik, ami nem is létezett. Az üres zárójelpár használatával ezek elkerülhetőek. -
amargo
addikt
Most C-el vagy c++?
Mert ha már c++ (osztályok) akkor a calloc, malloc és társait felejtsük elstruct matrix
{
int** pData;
int dom;
};
int main(void)
{
matrix t;
bool tBool = GetMatrix(t); // mátix létrehozása
(...)
}
bool GetMatrix(matrix &pMatrix)
{
if( pMatrix.dom == 0 && pMatrix.dom == INT_MAX) //hiba a mátrix létrehozásánál
{
return false;
}
pMatrix.pData = new int*[ pMatrix.dom ];
for(int i = 0; i < pMatrix.dom; i++)
{
pMatrix.pData[ i ] = new int[ pMatrix.dom ];
}
return true;
}//bool GetMatrix(matrix &pMatrix)
//---------------------------------------------------------------------
void ClearMatrix(matrix &pMatrix)
{
for(int i = 0; i < pMatrix.dom; i++)
{
delete[] pMatrix.pData[ i ];
}
delete[] pMatrix.pData;
pMatrix.dom = 0;
}//void ClearMatrix(matrix &pMatrix) -
amargo
addikt
Az ostream-et csak friend két kezelhetet és csak const ként adhatod át, mint itt is írtad, viszont tudod template-ni
Így talán jobban megérted, nameg ha kipróbálod
struct WordCount
{
WordCount() : count(0) {};
std::string word;
int count;
friend std::ifstream& operator >> (std::ifstream& f, WordCount&
df);
friend std::ofstream& operator << (std::ofstream& f, const
WordCount& df);
};
std::ofstream& operator << (std::ofstream& f, const WordCount& df)
{
f << df.word <<
": " << df.count << std::endl;
return f;
}
std::ifstream& operator >> (std::ifstream& f, WordCount& df)
{
f >> df.word;
return f;
} -
ALI_G
veterán
Átírtam
ostream& operator<< (ostream& os, const Graf& mtx);
-ra, mert csak olyan példákat láttam, hogy a 2. paraméter egy object, vagy struct, de így se működik, de egyébként is így kéne legyen nekem, mert lényegében egy gráfot írnék majd ki (pontosabban az abban tárolt mátrixot, ezért is mtx)
szóval most se működik, ugyanaz az error.
mod: na lefordult. A graf.h-ban megadtam a fejléc elé, hogy friend (bár nem értem miért kell oda, mivel a graf.cpp-ben include-olva van a .h és ott volt felírva)
plussz a graf.cpp-ben ostream& Graf:perator<< volt írva, a Graf::-ot kivettem, de nem értem az miért volt baj ott.
azt még nemtom, hogy jó-e -
ALI_G
veterán
már értem
bár hasznát csak nagyobb rendszerekben látom, amikor egy projekten már több ember dolgozik.
next:
Az operator<< overloadingjába beletört a bicsakom...már kezdek belegabajodni.ostream & Graf::operator<< (ostream & os, const int & mtx)
szóval ő lenne az, too many argument-et kapok. A << egy bináris operátor, nekem ott pedig két paraméterem van.
Az mtx egy két dimenziós mátrix, így deklaráltam:int *matrix;
matrix = (int *) malloc (meret * meret * sizeof(int) );miért nem fordul?
-
amargo
addikt
Namost c++ alatt az intellisense től ne várj nagy bravurt, bár VS8 alatt még nem teszteltem igazán, de 6.0tól 2005-ig rengeteget használtam és egy bizonyos szintig működnek, aztán megfeneklenek..
-
PazsitZ
addikt
-
PazsitZ
addikt
Egy apróbb hibád volt.
Kiiratás esetén te a ++i és ++j értékadást használtad, amiben a ciklusváltozónak új értéket adtál.
Ehelyett a (i+1) és (j+1) érték kiiratása a megoldás.A másik változtatás, hogy érdemes kinullázni a tömböt, ami jelen esetben 1-esekkel való feltöltést takart, mivel te a nullát használtad a csapda jelölésére.
cpp
a tábla kiirva -
doc
nagyúr
egy kis javítás: a második ciklus nem m-szer hanem n-szer fut le, de gondolom ez csak melléütés
azt mondod hogy leellenőrizted, hogy a tomb egyik mezoje sem 1?
akkor nyilvan a beolvasasban van a hiba
erre mondtam, hogy irasd ki menet kozben a fontos infokat
pl. a beolvaso ciklusban mindig ird ki az aktualis koordinatakat meg a beolvasott erteket
a fo hiba meg az, hogy nem ellenorzod a filemuveletek sikeresseget, igy lehet hogy meg sem nyitja az infile-t, csak nem veszed eszre... -
ALI_G
veterán
Azt mondjátok meg, hogy ebben a részben:
for(i=0; i<n; i++) {
for(j=0;j<m; j++) {
if(jatek_tabla[i][j]==1)
{fprintf(outfile, "csapda mezo van itt:\n---------\n%d %d\n", i, j);}
}
}az első for ciklus csak 1x fut let, a második pedig annyiszor, amennyi az m-ben van és a jatek_tabla egy mezője sem egyenlő 1-gyel, pedig azt is megnéztem, hogy 1-et rak bele mindig, n, m, csapdak_szama, csapda_n és csapda_m is mind helyes eredményt kap (kiirattam beolvasas utan a for ciklusban). Szóval miért?
-
-
Robaj
addikt
Hát, 1x változó létrehozás + 3x értékadás folyamatosan
VAGY
1x változó létrehozás +értékadás folyamatosanEz a kérdés most
Optimalizáláshoz nem nagyon értek, nem tudom melyik eszik kevesebbet (most 832 KB-nál járok, 8 megáról indultam
)
Ha valaki tudna adni valami ilyesmiről szóló linket, annak is örülnék.
-
peterszky
őstag
Most lehet, hogy lincshangulat fog kialakulni
, de itt is van egy szép kis backtrack:
[Backtrack]
Nem mondanám, hogy könnyen emészthető (nekem sem sikerült tökéletesen)
-
amargo
addikt
Esetleg egy algoritmusok és adatszerkezetek könyvet nem árt fellapozni.. a backtrack olyan, mint a hanoi torony, azért nem találtál könyvekben (c, c++, c#, java) róla, mert nem nyelv függő. Namost a dinamikus programozás is ide soroljuk. Sőt!
-
Jester01
veterán
Nem, a little-endian esetén éppenhogy a byte[0] a legkisebb helyiérték.
Simán egy int* pointer hivatkozás és kész. Portabilis kód esetén pl. a kernel mintájára egy ''le32_to_cpu'' makrót vagy inline függvényt lehet használni ami az architektúrának megfelõen konvertál ha szükséges. -
sghc_toma
senior tag
mért akarod mindenképp elkerülni a konverziót?
strtol-lal konvertálsz int-té, itoa-val meg vissza.. én vhogy így csinálnám, aztán lehet, hogy tényleg van jobb megoldás.. (az is lehet. hogy ez az egyik legrosszabb)
char* HexNumber = ''CDAB'';
char* FirstTwoBytes;
memcpy(FirstTwoBytes, HexNumber, 2);
int a = strtol(HexNumber + 2, NULL, 16) * 128 + (int)(strtol(FirstTwoBytes, NULL, 16) / 2);
char buf[4];
HexNumber = itoa(a, buf, 16);
memcpy(FirstTwoBytes, HexNumber + 2, 2);
memcpy(HexNumber + 2, HexNumber, 2);
memcpy(HexNumber, FirstTwoBytes, 2); -
Jester01
veterán
Ugye a kettővel osztás az egy bit léptetés. Hexa ábrázolás esetén a szomszédos jegy legalsó bitje kell még a működéshez.
Számolgatással pl. így lehet:
inline char to_hex(int v)
{
return v > 9 ? (v + 'A' - 10) : (v + '0');
}
inline int from_hex(char c)
{
return c > '9' ? (c - 'A' + 10) : (c - '0');
}
void shift(char* buffer)
{
int i;
int carry = 0;
for(i = 3; i >= 0; i--)
{
int v = from_hex(buffer[ i ]);
buffer[ i ] = to_hex((v >> 1) | carry);
carry = (v << 3) & 8;
}
}
Ha a számolgatás nem tetszik, akkor lookup táblát is lehet csinálni, pl így:
void shift(char* buffer)
{
static struct { char out[2], f; } map['G'] = {
['0'] = {''08'', 0},
['1'] = {''08'', 1},
['2'] = {''19'', 0},
['3'] = {''19'', 1},
['4'] = {''2A'', 0},
['5'] = {''2A'', 1},
['6'] = {''3B'', 0},
['7'] = {''3B'', 1},
['8'] = {''4C'', 0},
['9'] = {''4C'', 1},
['A'] = {''5D'', 0},
['B'] = {''5D'', 1},
['C'] = {''6E'', 0},
['D'] = {''6E'', 1},
['E'] = {''7F'', 0},
['F'] = {''7F'', 1}
};
int i;
int flag = 0;
for(i = 3; i >= 0; i--)
{
char c = buffer[ i ];
buffer[ i ] = map[c].out[flag];
flag = map[c].f;
}
}
Hibakezelés ezekben nyilván nincs.
Más ötlet momentán nem jut eszembe.
[Szerkesztve] -
Forest_roby
őstag
jól hangzik! már hallottam vhol ezt a szót!
Na, komolyabban - lehet opengl-ben programozni?! Ezek szerint igen! Mit érdemes tudnom róla, mielött nekiállnék?
(persze én is utánna nézek a dolognak!!)
köszi a tippet, elsőre nem rossz!
mod: nagyon is jól hangzik a dolog!!
[Szerkesztve] -
cucka
addikt
pascalban is van ponter - igen, de a c sokkal jobban rákényszerít, hogy használd, pl. már a stringek normális kezeléséhez is elengedhetetlen.
Bár unokatesóm mondta pár éve, hogy van olyan dolog amit pascalban megírnak először (pl egy függvény), aztán átírják más nyelvre. - k*rva profik lehetnek akkor. miért nem írják meg egyenesen a másik nyelven?. az államnak dolgozni jó lehet..
-
Jester01
veterán
azon y1...yk fiú felsorolva, amelyek az x-edik alatt helyezkednek el?
Igen. De nem úgy ahogy te gondolod, nem lefelé a hierarchiában. Az yi az x közvetlen gyereke.
3. minden pontnak legfeljebb egy apja lehet
Talán azért lett így leírva, mert így nem kell bele kivétel. De amúgy szerintem ekvivalens a kettõ. (A 4. tulajdonság miatt) -
-
Jester01
veterán
Akkor a szóköz nem is kell ide: fscanf...''%d %d''...?
Nem, de így olvashatóbb. Egyébként nyugodtan próbáld ám ki magadtól.
Ez itt miben különbözne C++ ban ha ez nem az?
Bár a C++ kompatibilis a C-vel de C++-ban igazából streameket illik használni, valahogy így:
ifstream f(''be.txt'');
f >> MaxTeher;
f >> csomiszam;
for (i=0;i<csomiszam;i++) f >> s[ i ]; -
Jester01
veterán
Igen, ha a 3. sorba is %d-t írsz, és a ciklusba nem <= összehasonlítás kell, mert úgy eggyel többet fog olvasni mint amennyi van.
MOD #2228-ra: ez C kód, nem C++. Biztos le van írva a könyvben is hogy mûködik a scanf. A szóközt nem kell explicit kihagyni mert a scanf átlépi magától. Ha pontosan egy karaktert akarsz beolvasni akkor egyébként az fgetc függvény a barátod.
[Szerkesztve] -
Jester01
veterán
A %d az 54-et fogja belerakni, mert whitespace (szóköz, soremelés) határig olvas.
#include <stdio.h>
int main(int argc, char* argv[])
{
int x;
FILE* f = fopen(argv[1], ''r'');
while(fscanf(f, ''%d'', &x) == 1) printf(''%d\n'', x);
fclose(f);
return 0;
}
be.txt:
1.54..2
123.....45
A szókózöket ponttal jelöltem, mert a fórummotor különben kitörli õket.
Futtatás eredménye:
1
54
2
123
45
[Szerkesztve] -
emitter
őstag
hát én ebből azt szűrtem le, hogy van a ''data'' string a 40-es offsettől, majd 4 bájt SubChunkSize (nemtom miez), majd így a 48.ik offset-től kezdődik az igazi stream
következőképpen:
mintánként 2 bájt bal-, majd 2 bájt jobb csatorna (egy hexa-kód (szám, betű) 4bit - tehát ha egy minta 3c f2 24 f2, akkor ebből 2 bájt (3c f2) a bal csati, és 2 bájt ( 24 f2) a jobb csati)
nem műxik így? azt nem tudom, h ez a szabványos wav, de elvileg annak kell lenni, mert nem írták, h nem így lenne
[Szerkesztve] -
Jester01
veterán
Emitter kollega fentebb pont wav fájlokat töltöget be, igaz c-ben.
Mindenesetre a wav file elején egy header van amibõl ki lehet olvasni a paramétereket.
Utána az adatok jönnek, minden mintavételi idõponthoz az összes csatorna egymás után.
Tehát pl. 16 bites 2 csatornás wav adatrészébõl úgy csinálsz 1 csatornát, hogy 2 byteot megtartasz és a következõ kettõt eldobod, sít. Értelemszerûen a fejlécben pedig átírod a csatornák számát 1-re. (Hozzáteszem, hogy a wavban nem csak tömörítetlen adatfolyam lehet, de gondolom a feladatban ezt feltételezheted.)
Aztán hogy ezt hogyan lehet beletuszkolni egy OO programnyelvbe azt sajnos nem tudom.
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- XPEnology
- Milyen légkondit a lakásba?
- E-roller topik
- Elektromos autók - motorok
- Samsung Galaxy A34 - plus size modell
- Samsung Galaxy S21 Ultra - vákuumcsomagolás
- Calibre, az elektronikus könyvtár
- Elemlámpa, zseblámpa
- VR topik (Oculus Rift, stb.)
- További aktív témák...
- Új Dell 14 Inspiron 5415 FHD IPS Ryzen5 5500U 4.0Ghz 8GB 256GB SSD Radeon RX Vega7 Win11 Garancia
- Dell 14 Latitude 5440 FHD IPS i5-1245U vPro 4.4Ghz 10mag 16GB 256GB Intel Iris XE Win11 Pro Garancia
- HP 14 Elitebook 640 G9 FHD IPS i5-1235U 4.4Ghz 10mag 16GB 256GB Intel Iris XE Win11 Pro Garancia
- HP 14 Pavilion FHD IPS i5-1135G7 4.2Ghz 16GB RAM 512GB SSD Intel Iris XE Graphics Win11 Garancia
- Aoc 1080p 75hz 27" GRÁTISZ ALZAERGO MONITORKAR!
- GYÖNYÖRŰ iPhone 13 256GB Pink -1 ÉV GARANCIA - Kártyafüggetlen, MS3056, 94% Akkumulátor
- Eladó ÚJ White Shark Commandos mechanikus gamer billentyűzet / 12 hó jótállással
- Telefon felvásárlás!! iPhone 11/iPhone 11 Pro/iPhone 11 Pro Max
- GYÖNYÖRŰ iPhone 13 mini 128GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3136, 95% Akkumulátor
- Xbox Ultimate előfizetések
Állásajánlatok
Cég: FOTC
Város: Budapest