- Meggyi001: Anya, tudsz segíteni a matekban?....Nem érek rá kisfiam, majd segít a ChatGPT...
- Luck Dragon: Asszociációs játék. :)
- gban: Ingyen kellene, de tegnapra
- bitpork: Phautós tali a Balcsinál 2025 Augusztus 2 napján (szombat)
- droidic: Időutazás floppyval: A 486-os visszavág PCem-men
- Mr Dini: Mindent a StreamSharkról!
- Argos: Adjátok vissza a netet! - szeretnék elaludni!
- sziku69: Fűzzük össze a szavakat :)
- sziku69: Szólánc.
- D1Rect: Nagy "hülyétkapokazapróktól" topik
Hirdetés
-
LOGOUT
Ú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
● olvasd el a téma összefoglalót!
- Vicces videók
- Diablo IV
- Képen az iPhone 17 Pro kétféle akkumulátora
- Meggyi001: Anya, tudsz segíteni a matekban?....Nem érek rá kisfiam, majd segít a ChatGPT...
- NVIDIA GeForce RTX 4080 /4080S / 4090 (AD103 / 102)
- Autós topik
- Gyúrósok ide!
- Notebook hibák
- Sony Xperia 1 VII - Látod-e, esteledik
- Programozás topic
- További aktív témák...
- Garanciális Gamer Számítógép, PC (GTX 1070 8GB, I7-7700, 16GB RAM, SDD) Beszámítás Posta ok (32)
- iPhone 11 128GB fekete, gyárilag független, újszerű karcmentes állapot, 87% akku, legjobb ár!
- iPhone 12 128GB FEHÉR, gyárilag független, újszerű karcmentes állapot, 94% akku, doboz, legjobb ár!
- iPhone 12 128GB fekete, gyárilag független, karcmentes kijelző szép állapot, 86% akku, legjobb ár!
- Félkonfig Asus z690, i7-12700k, 4x8gb 4400mhz, 1tb Ssd,
- Bomba ár! Lenovo ThinkPad L13 G1 - i5-10GEN I 16GB I 512SSD I 13,3" FHD I HDMI I Cam I W11 I Gari!
- HP EliteBook x360 830 G7 i5-10210U 16GB 256GB 13" FHD Áthajtós érintős 1 év garancia
- 30+ típus!!! Lenovo ThinkPad, X1 carbon, X1 Yoga 5-12. gen 12,5-15" all-in-one, Workstation, stb.
- Audio-Technica ATH-M20x fejhallgató
- Surface Laptop 4 i7-1185G7 16GB 256GB
Állásajánlatok
Cég: FOTC
Város: Budapest