- Amazon Fire TV stick/box
- Monitor hiba topik
- Mini-ITX
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- iPad topik
- Fejhallgató erősítő és DAC topik
- Dobozos verziót kapnak az IGP nélküli AMD Ryzenek
- Telekom TV SmartBox: szolgáltatói set-top box alacsony korlátokkal
- E-book olvasók
- Hisense LCD és LED TV-k
Hirdetés
-
Retro Kocka Kuckó 2024
lo Megint eltelt egy esztendő, ezért mögyünk retrokockulni Vásárhelyre! Gyere velünk gyereknapon!
-
Az ASRock kicsit megnyirbálta az egyik R-DIMM-es alaplapját
ph Az inteles deszka egyebek mellett szakít a Thunderbolt 4-gyel, a Wi-Fi 6E-vel, az egyik übergyors LAN-nal és a fixált I/O pajzzsal.
-
Kipróbáltuk a Xiaomi 14 Ultra fotós szettjét
ma A markolat akkumulátort és hasznos gombokat kínál, a tok szűrőket fogad be.
Új hozzászólás Aktív témák
-
Zsolt1
tag
Sziasztok!
Egy könyvben talált példa értelmezésében kérnék segítséget:
#include <stdio.h>
#include <stdlib.h>
#define KULCS 0xE7
int main()
{
char s[80], *p;
int i;
printf("Kerek egy szoveget:");
fgets(s,80,stdin);
for(i=0;s[i];i++)
{
s[i]^=KULCS; /*Titkosítás*/
}
printf("A titkositott szoveg:\n %s\n",s);
p=s;
while(*p)
{
*p++^=KULCS; /*Visszaállítás*/
}
printf("Az eredeti szoveg:\n%s\n",s);
return 0;
}A példából csak azt a részt nem értem, amikor kizáró vagy segítségével titkosítva lesz a szöveg. Azt tudom, hogy mit jelent a kizáró vagy(csak az egyik feltétel teljesülésénél lesz igaz), viszont nem értem, hogy hogyan lehet titkosítani egy hexadecimális szám + kizáró vagy segítségével. (A feladat a pointereket és sztringeket akarja magyarázni, azért van két különböző ciklus használva.)
-
Zsolt1
tag
válasz gygabor88 #4005 üzenetére
1. szám: 101101, 2. szám: 110110. A művelet végrehajtása után 011011-et kapok. Ha megcsinálom ezt a műveletet az eredménnyel + az 1. számmal, akkor visszakapom a 2. számot.
Akkor ezek szerint, a feladatban az 1. szám a begépelt szöveg, a 2. szám a hexadecimális szám, az eredmény pedig a titkosított szöveg, vagyis a mivel a memóriában a szöveget és a hexadecimális számot(mindent) is 2-es számrendszerben tárolja, ezért amikor végigmegyünk a XOR-al, akkor a két értéket a 2-es számrendszerben hasonlítjuk össze és a visszakapott eredményt(2-es számrendszerbeli számot) újból szövegként írjuk ki?[ Szerkesztve ]
-
Zsolt1
tag
Sziasztok!
Egy feladathoz muszáj lenne használnom a magyar ékezetes betűket. Sajnos fordításkor már jelzi is a CodeBlocks, hogy a karakterkódolással baj van és utána futtatáskor is rosszul jelennek meg a betűk. Többféle módszerrel próbálkoztam már:
1. #include <local.h> + setlocal(LC_ALL,""); - Ez egy darabig működött is, de amikor következőre megnyitottam CodeBlocks-al akkor már nem volt jó.
2. Olvastam, hogy át kell állítani a kódlapot 852-re - system("CHCP 852") - de ez sem jó, mivel ez rendesen kiírja, hogy "Az aktív kódlap: 852", de utána ugyan úgy rosszul kezeli az ékezetes karaktereket.
CodeBlocks-ban Windows-1250 van beállítva karakterkódolásnak, de próbáltam már UTF-8-al is(Nem tudom miért hittem benne, hogy segítene, de gondoltam megpróbálom ). A kérdés lényege az lenne tehát, hogy milyen módszer van arra, hogy fordításkor és futtatáskor is rendesen kezelje a CodeBlocks az ékezetes karaktereket? -
Zsolt1
tag
Sziasztok!
Egy kis segítséget szeretnék kérni kétdimenziós tömb átadása függvénynek témakörben. Gyakorlaton sajnos csak 1 dimenziós tömbbel csináltuk és sajnos úgy nem működik.Az egydimenziósnál:
void beolv(int*); //main() fv. előtt
beolv(tomb); //main() fv.-ben: tömb átadása a beolv fv.-nek
void beolv(int *t) {... //main() fv. utáni kifejtésA kétdimenziósnál (ami nem működik):
void ujadat(int*,char*,char*); //három tömböt adok majd át neki, 1 db egydimenziósat és 2 db kétdimenziósat
ujadat(azontomb,tipus,rendszam);
void ujadat(int *tomb, char *chartomb1, char *chartomb2) {...A codeblocks eltérő típusú pointerekre panaszkodik és gondolom is, hogy miért, mert kétdim. tömbnél a tomb és a tomb[] nem ugyan arra a címre mutat csak nem tudom, hogy hogy kéne megoldani azt, hogy az összesnél jó legyen az átadás.
Találtam egy ilyet: [link] és egy ilyet is:[link] ezek alapján így néz ki a kétdimenziósnál a 3. sor:
void ujadat(int *tomb, char chartomb1[][HOSSZ], char chartomb2[][HOSSZ2]) {...
Ezzel már sokkal kevesebb hibát dob a CB, de még így is eltérő típusú pointereket ír.Ha valaki tudna benne segíteni azt nagyon megköszönném, mert elég sok helyen megnéztem már és szinte sehol sem írnak ezzel kapcsolatban semmit, illetve ha írnak is, akkor sem működik.
-
Zsolt1
tag
Sziasztok!
Egy olyan kérdésem lenne, hogy egy rekurzív függvény hívásnál, ahol a függvény paramétere egy tömb, ott miért módosul az eredeti tömb a rekurzióból visszatérés után? Elvileg úgy lenne logikus, hogy mivel azt a tömböt csak paraméterként átadom a függvénynek rekurzív hívásnál és az ott abban a fv-ben az újonnan létrehozok egy tömböt, akkor csak odafelé adom át az értékeket, visszafele nincs módosítás, és miután lefutott a rekurzív fv., akkor a felső szinten nem változik meg a tömb tartalma. Azért nem értem a dolgot, mert pont e-miatt kell ugye változó helyett pointert használnom, ha meg akarom tartani az értéket a rekurzióból visszatérés után is.
Ez most szerintem kicsit össze-vissza lett ezért írok inkább egy példát, hogy mire gondoltam:
void rekurzivfv(int tomb[][M]) { //definiálom a fv-t és megadom paraméternek a tömböt
...függvényen belüli műveletek amik módosítják a tömb tartalmát....
rekurzivfv(tomb); //meghívom a fv-t, ami megkapja a tömböt
...itt már a tömb elemeinek értéke módosult, ahhoz képest, ami a függvény elején volt, arra
amire a rekurzió alatt változott pedig elvileg nem szabadna, mert a rekurzív fv-nél a fv újra
létrehozza a tömböt és miután a végigfutott, az innen már nem lehetne elérhető, mert
semmilyen formában nem adtam vissza...
}
Az jutott az eszembe még, hogy a teljes tömb átadásakor ott igazából tömb elejére mutató címet adom csak át (ha jól tudom), szóval olyan mintha az egy pointer lenne elvileg. Lehet, hogy az miatt módosul?
Meg lehet valahogy azt oldani, hogy ne módosuljon a rekurzív meghívás alatt az alap függvényben a tömb? Előre is köszönöm a segítséget![ Szerkesztve ]
-
Zsolt1
tag
válasz EQMontoya #5310 üzenetére
Igen a végén írtam ezt én is, hogy ez az egyik tippem, hogy miért módosul, de akkor van valami egyszerűbb módszer, amivel ki lehet azt küszöbölni, hogy megváltozzon (esetleg másféle átadás, stb...)? Szerintem az lenne a megoldás, ha az egész tömböt eltárolnám egy másolatban, csak ugye nagyon sokszor kéne a rekurzió miatt másolgatni a tömböt ide-oda és nem hiszem hogy túl optimális lenne. (szerk.: na most jól leírtam még egyszer, ami a válaszban volt) Gondolkodtam azon is, hogy csak azokat az elemeket másolgatom, amik a rekurzió alatt megváltoznak, de az valamiért nem működött.
(#5312) EQMontoya
Labirintusban útkeresés backtrack algoritmussal. Azért módosítom, mert ahogy halad befele, úgy mindig beleírom a már bejárt utat és a rekurzióból visszafele meg további lehetséges utakat keresek, mert az összes lehetségeset meg kell találnia. És itt kéne, hogy a backtrack miatti visszaugrásnál eltünjön a módosítás és visszakapjam a rekurzió előtti tömböt. Az nem okoz gondot, hogy ott nincs megjelölve, hogy jártam (sőt a másik irányból érkező utak miatt pont ezért kéne ez), mert az if szerkezet miatt ugyan azt az útvonalat többet már nem vizsgálja meg.[ Szerkesztve ]
-
Zsolt1
tag
válasz EQMontoya #5314 üzenetére
Igen ezt már próbáltam, hogy minden lépésnél ugye 1 elemet módosítok (jelölöm a bejárt utat) és azt elmentem egy tmp-be még a fv hívása előtt és a fv hívás után visszaírom azt az egyet, viszont nálam valamiért nem volt jó így, mert ez után a visszaírás helyett csak feltöltötte 2-esekkel (azzal jelölöm a bejárt utat) az egész labirintust.
Azért még próbálkozok Köszönöm az eddigi segítséget![ Szerkesztve ]
-
Zsolt1
tag
Köszönöm a segítséget! Igen közben rájöttem, hogy én igazából nem is backtrackel csinálom, hanem szimplán rekurzióval, amire valamiért azt hittem, hogy backtrack, de közben utánaolvastam és abban ugye teljesen máshogy van a visszalépés (nem rekurzióval), nekem meg ez idáig nem tűnt fel és nálam minden visszalépéses dolgot a rekurzió csinál meg, szóval köze sincs a backtrackhez az én megoldásomnak. Ez mondjuk elég nagy gond, mert a feladatot konkrétan backtrackel kéne megoldanom, de valószínűleg most már maradok a rekurziónál, azt legalább értem mit csinál
-
Zsolt1
tag
Igen közben megkérdeztem más embereket is, és ők is ezt mondták, hogy a rekurzívan való megoldás is backtrack, és alap helyzetben én is erre gondoltam (hiszen itt is visszább lépkedek, csak itt a rekurzió old meg mindent majdnem).
Azért hittem azt, hogy a rekurzív nem az, mert ez egy feladat volt és az előadó kihangsúlyozta, hogy az ötöshöz backtrackel kell megoldani, viszont ha valaki rekurzívan csinálja meg, azt is elfogadja (csak az gondolom nem 5-ös, de ez lényegtelen), és ez miatt alakult ki teljes káosz bennem
A vicc az, hogy még ma is ezt mondta, szóval úgy lehetett érteni, mintha csak a ciklusos megoldás lenne backtrack, viszont ebből és az itteni kommentekből rájöttem, hogy mind a kettő az, csak az egyik így a másik úgy működik. Tanulság: amit mond az oktató, azt azért 3 helyen legalább le kell ellenőrizni, hogy tényleg úgy van-e Szerencsére már minden működik, köszönöm a segítséget.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
Állásajánlatok
Cég: Alpha Laptopszerviz Kft.
Város: Pécs
Cég: Ozeki Kft.
Város: Debrecen