- Azonnali mobilos kérdések órája
- A Samsung gyártja az első 2 nm-es Qualcomm lapkát?
- Garmin Forerunner 970 - fogd a pénzt, és fuss!
- Apple Watch Ultra - első nekifutás
- Egyszerre legnagyobb és legkisebb is a Garmin Venu X1
- Xiaomi 14T - nem baj, hogy nem Pro
- iPhone topik
- Macrodroid
- Bemutatkozott a Poco X7 és X7 Pro
- Google Pixel 9a - a lapos munka
-
Mobilarena
Új hozzászólás Aktív témák
-
bdav
őstag
válasz
bambano #2154 üzenetére
str2t majd a hívó fél, ha változót adsz paraméterül akkor ciki lenne ha felszabadítaná, ha nem akkor abban nem vagyok biztos
realloccal igazad van, de C-ből a beépített függvényekből elég keveset tudok fejből (amikor tanultam nem kellett, azóta meg nem programozok C-ben) -
bdav
őstag
válasz
Forest_roby #2146 üzenetére
én így csinálnám:
void append(char* str1, char* str2)
{
int len=strlen(str1)+strlen(str2)+1;
char* temp=str1;
str1=malloc(sizeof(char)*len);
//itt valahogy belemásolod az str1be a tempet és mögéírod str2-t, akár beépített
//függvényekkel vagy egy ciklussal, lezárni ne felejtsd el
free(temp);
}
ekkor az első paraméterhez hozzáfűzi a másodikat.
ja és kimenet számára nem kell lefoglalni előre helyet, append foglal magának (ha raksz bele ellenőrzést str1 nullságára, akkor lehet így:
char* str=null;
append(str, ''akarmi'' /*ide jöhet változónév is */ );
[Szerkesztve] -
bdav
őstag
ezzel a legnagyobb baj az h. karaktert akarsz stringgel hasonlítani. u.i. ha jól látom ahogy a motor legyakta az [ i ] -t akkor ez van:
switch(str_in [i ])
{
...
case ''á''
...
namost az str_in[ i] az 1 db char típusú lesz a ''á'' viszont char* ot eredményez. ''á'' helyett 'á' kellene.
másik gáz az lesz hogy az str_outban mindig csak egy karakter kerül majd be. ráadásul ezt megcsinálod hogy str_out = ''á'' akkor az foglal szépen helyet egy egy karakter hosszú stringnek, lezárja \0-al aztán ha mögé akarsz írni akkor az hogy string_out[ 2] az nem túl szép és nem is fog működni (az 1 dolog hogy nem lefoglalt memóriaterületre írsz, de ugyis csak a \0-ig látja stringnek, ha meg azt írod felül akkor a memóriát kilistázza majd az első 0-ig)
a helyedben én írnék egy eljárást ami két char* -ot vár paraméterül és a másodikat hozzáfűzi az elsőhöz (nemtom van e ilyen beépített függvény v. nincs). Vagy használj C++-t és String osztályt
mégvalami: 2 C stringet nem tudsz ==-vel összehasonlítani, arra való az strcmp, pár hszel ezelőtt volt róla szó.
[Szerkesztve] -
bdav
őstag
válasz
Forest_roby #2118 üzenetére
használd csak nyugodtan, ha direkt nem kötötték ki hogy nem lehet, télleg azért rakták bele
ha nagyon nem akarsz akkor kb. 4 sorban lehet írni sajátot, nem bonyolult annyira.
-
bdav
őstag
ha charként olvasod be akkor ha azt látod a fájlban hogy '2' akkor nem 2 fog bekerülni hanem a '2' mint karakter kódja, ezért az eltérés, ezen nem tudsz segíteni. A jobbra igazításhoz pedig vagy megszámolod hogy milyen hosszú a számod, vagy pedig megfordítva írod bele a tömbbe (tomb [0 ] lesz a legkisebb helyiértéked)
gabesz: kicsit konkrétabban miről lenne szó?
[Szerkesztve] -
bdav
őstag
válasz
Pho3bus #2097 üzenetére
ha a helyiértékes felbontás megvan akkor én hármasával szedném a számjegyeket (száz - tíz - egy), u.i ezek közösek, és csak utána kell írni hogy ezer v. millió ha 3mal odébb vannak. a neccesebb résznek én a kötőjelezés eldöntését tartom, de tényleg ott a pontos szabályoknak sztem nézz utána.
-
bdav
őstag
válasz
Pho3bus #2089 üzenetére
arra gondolsz hogy beírod neki azt hogy 3468 és kiírja hogy háromezer-négyszázhatvannyolc?
azt vkönnyű megoldani hogy meglegyenek az egyes helyiértékek: legyen x a bemeneted, ekkor legkisebb helyiérték=x%10; x=(x-x%10)/10; és így tovább amíg 0 nem lesz x. Ezek után most fel kéne lapozni a magyar helyesírási szabályzatot hogy hogy is van pontosan(2000ig mindentegybeírunk utána kötőjelezünk kivéve ha ''kerek'' a szám)
[Szerkesztve] -
-
bdav
őstag
válasz
Yeti910331 #2071 üzenetére
valszeg sokba. egyrészt ha elvileg működne is a dolog, szükséged lenne az eredeti játék forráskódjára, ami nem egy egyszerű menet annyira azért. másrészt én úgy vélem hogy régebben annyira nem különült el a játék grafikus motorja a többitől (minél régebbi annál kevésbé). harmadrészt a programozók drágán dolgoznak
(és pl. nem is biztos hogy egy programozó elég)
[Szerkesztve] -
bdav
őstag
hát sztem .net framework pl. linux alá nincs
(msdnen legalábbis nem láttam nyomát - meg ki csinálna ilyet?) java ebből a szempontból jobb, fájlkezelés ott se annyira gáz, de az ftp valóban nehezebb
egyébként meg mikoljannak ha még sose programozott akkor az alapokkal kéne tisztába jönnie (változó, ciklus, stb...), és csak utána nekiállni ftp klienst írni. .Net -et én most kezdem tanulni egyetemen, aztán azt mondták h. tiszta agymosás (tapasztalom is, 2 betűnél ritkán kell többet beírni...), másban utána már nem tud programozni az ember, úgyh. félek is tőle
-
bdav
őstag
new és delete csak C++-ban van. A legtöbb mai fejlesztőprogi ami erre való az C/C++. A kérdés hogy neked jó-e a C++ vagy szigorúan C kell.
intekkel írom, mert az egyszerűbb most
C megoldás (ebbe lehet hogy van hiba, tök rég nem írtam már Cben dinamikus foglalást):
int tomb**=malloc(8*sizeof(int*)); //ez lefoglal 8 int* nak helyet
for(i=0; i<8; i++) //i -t deklaráld azért előbb
{
tomb[ i]=malloc(n*sizeof(int)); //ez minden tomb[ i]-nek foglal n int helyet
}
A végén egy free(tomb); hívás illik.
ha C++ van:
int tomb**=new int*[8]; //8 int* nak a tömbje
for(int i=0; i<8; i++) //itt már lehet i-t deklarálni menet közben is
{
tomb[ i]=new int[n];
}
végén delete[] tomb;
[Szerkesztve]
[Szerkesztve] -
bdav
őstag
válasz
Forest_roby #2005 üzenetére
de én elképzelhetőnek tartom. c/c++ alatt mondjuk egy példa. létrehozol egy pointert valahova mint változó. oda beírsz valamit. majd átkasztolod a pointered függvénypointerré vagy objektumra mutató pointerré és meghívod a függvénypointert / objektum tagfüggvényét (függvény ptr-t sose használtam de létezik, nem tudom hogy meg lehet e csinálni egy ilyen cast - ot, de az objektumosat biztos). na a hívás után szépen az fog programutasításként értelmeződni amit előzőleg beírtál a memóriába. persze ehhez nagyon kell tudni hogy mit írsz be
(nem tudom hogy a vírusok így csinálják e). ezzel a módszerrel felülírhatod a programod normális utasítás részét is ha eltalálod a memóriacímeket.
-
bdav
őstag
válasz
Forest_roby #1939 üzenetére
az fentebb van. amit most írtam le az a 2D tömb lefoglalása volt C-ben. (c++ban a new használatos). utána már tomb[][] - vel lehet rá hivatkozni; tomb[a][ b] helyettesíthető pointerekkel, ha jól emléxem akkor így: ((tomb+a)*+b)* (bár ezt sztem senki sem használja, nem is biztos hogy így korrekt teljesen, de a [] kikerülhető az fix)
-
bdav
őstag
válasz
Forest_roby #1937 üzenetére
hogyne lenne.
int** tomb=malloc(sizeof(int*), maxsorok);
for(i=0; i<maxsorok; i++)
{
tomb[ i ]=malloc(sizeof(int), maxoszlopok);
}
[Szerkesztve] -
bdav
őstag
válasz
Forest_roby #1935 üzenetére
hát ciklusmagban még eszembe se jutott, ha erre gondolsz: for(...) { int i...} sztem ez így nem lesz jó. Ciklus deklarációban lehet a C++-ban: for(int i=...;...){} de fordítófüggő hogy a változó élettartama mennyi lesz, szóvalezzel óvatosan (ugyis beugat ha nem jó
)
-
bdav
őstag
óbasszus nem [code] a kód tag. ááá na 2. nekifutás:
Legyen egy tömböd:
tomb[sorok][oszlopok]
ezt fel tudod tölteni két ciklussal:
for(oszlopok=0; oszlopok<maxoszlopok; oszlopok++) //ez léptet a köv. oszlopra
for(sorok=0; sorok<maxsorok; sorok++) // ez egy oszlop adatait szedi össze
tomb[sorok][oszlopok]= //ide elvégzed a müveletet
kiíráskor az kell hogy egy sor kiírásakor minden oszlop első eleme szerepeljen
for(sorok=0; sorok<maxsorok; sorok++)
{
for(oszlopok=0; oszlopok<maxoszlopok; oszlopok++)
file<<tomb[sorok][oszlopok]<<'\t'; //kiirkálod az oszlopok első elemeit
file<<'\n'; //majd sor vége, köv. körben jönnek a 2. elemek.
} -
bdav
őstag
hát éppen van lehetőség egy nyitott filestreamban hogy mozgasd az aktuális írási pozíciót (seegk és seekp) de nem ismerem ezt a lehetőséget jól, most találtam a googleval. nahh ha ez megvan és ismered a fájl sorainak hosszát, akkor sztem el tudsz navigálni a sorzáró \n (vagy \n\r) elé és oda beírhatsz, így kvázi új oszlopod lesz. (nézz utána ennek még, próbálgasd előtte)
de nekem szimpatikusabb lenne tömbben gyűjteni a kiírandó adatokat és csak a szim. végén létrehozni a fájlt
mod most látom h. jo lenne tömbbel is csak az implementácio hiányzik. nahh akkor:
Legyen egy tömböd:
[code] tomb[sorok][oszlopok] [/code]
ezt fel tudod tölteni két ciklussal:
[code]
for(oszlopok=0; oszlopok<maxoszlopok; oszlopok++) //ez léptet a köv. oszlopra
for(sorok=0; sorok<maxsorok; sorok++) // ez egy oszlop adatait szedi össze
tomb[sorok][oszlopok]= //ide elvégzed a müveletet
[/code]
kiíráskor az kell hogy egy sor kiírásakor minden oszlop első eleme szerepeljen
[code]
for(sorok=0; sorok<maxsorok; sorok++)
{
for(oszlopok=0; oszlopok<maxoszlopok; oszlopok++)
file<<tomb[sorok][oszlopok]<<'\t'; //kiirkálod az oszlopok első elemeit
file<<'\n'; //majd sor vége, köv. körben jönnek a 2. elemek.
}
[/code]
a lényeg h. a két tömbbejárásnál más legyen a tömbindexeken végigfutó ciklusok sorendje.
[Szerkesztve] -
bdav
őstag
.NET az az ''MS Javája'' valóban hasonló koncepció, és igen gondolom a C#, VB.net kódot a .net interpreter által végrehajthatóra fordítja. Jövő félév után már többet tudok róla mondani
ja c/c++ ben mindent lehet. de mindent lehet assemblyvel is csak kicsit nehezebb. el kell dönteni hogy a hatékonyság / könnyebb programozás közül mit akarsz.
Delphi manapság nem túl népszerű, nagyon kevesen fejlesztenek benne
igen, a modern nyelvek jó része a C-ből ''származik'', érdemes megtanulni kicsit. Symbian az egy oprendszer, opengl meg sztem függvénykönyvtár (de ebben nem vagyok biztos).
64bites kód sztem a fordítón múlik igazán.
Kedvenc ide: Eclipse javához, visual studio c++-hoz és majd gondolom .nethez is -
bdav
őstag
javaban van BigInteger osztály, onnan lehet lopni az ötleteket
amugy ezzel az osztállyal már relative könnyen lehetne rsa-t implementálni (ha gyors a modpow amit csináltak benne), ha lesz időm meg kedvem meg is csinálom
(persze h. használható cucc legyen belőle az lényegesen több meló)
ugyanakkor c++ ban sokkal kényelmesebb, ha egyszer megvan a bigintegered, az operator overload miatt (ez hiányzik nekem igazán a javaból)
[Szerkesztve] -
bdav
őstag
válasz
Bazsesz #1767 üzenetére
na ezt a hszedet nem tudom értelmezni. de ha az eredeti problémát jól vágom akkor annyi kell h. a '\n' '\t' és ' ' karaktereket számold. amit írtál progi az minden karakter előfordulását nézi, tök feleslegesen. (ráadásul külön függvényt kér)
én így írnám meg:
void charCount(char* fileName)
{
FILE* f=fopen(''fileName'', ''r'');
int s=0;
int spaceCount=0;
int nCount=0;
int tCount=0;
do
{
s=fgetc(f);
if(s=='\n') nCount++;
if(s=='\t') tCount++;
if(s==' ') spaceCount++;
} while(s!=EOF);
printf(''\\n száma: %d'\n\\t száma: %d\nspace száma: %d', nCount, tCount, spaceCount);
}
mod: amit te irtál az is kb. ugyanezt teszi, csak megszámol mindent feleslegesen. ja és a while és for ciklust megint felcserélted. Kiírásnál meg nem lennék benne biztso hogyha a \n-t karakterként írod ki akkor nem tesz e inkább ujsort (ezért írok én pl. \\-t). egy iffel rá tudsz szürni mondjuk és akkor csak a szükségeseket írja ki (if(c[ i ]=='\n') printf(''\\n száma: %d'', c[ i ]);)
[Szerkesztve]
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
- Milyen routert?
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Milyen videókártyát?
- Windows 11
- Gitáros topic
- Győr és környéke adok-veszek-beszélgetek
- Autós topik látogatók beszélgetős, offolós topikja
- Azonnali mobilos kérdések órája
- A Samsung gyártja az első 2 nm-es Qualcomm lapkát?
- Mesterséges intelligencia topik
- További aktív témák...
- Új MSI KATANA 15 Gamer Tervező Laptop 15,6" -35% i7-13620H 10Mag 16/1TB RTX 4060 8GB FHD 144Hz
- HP Omen - 27" IPS - UHD 4K - 144Hz 1ms - NVIDIA G-Sync - FreeSync - HDR 400 - USB-C - KVM Switch
- Garanciális MSI Katana GAMER 15,6"240Hz!i5 12500H(16X4,5Ghz)RTX 3060 6 GB VGA,32-64GB RAM/1TB SSD
- Bivaly MAGYAR Lenovo P1 gen2 (Core I7 32 Gb 1Tb 15" 4K 4Gb Nvidia) Laptopom eladó!!!
- HP ProBook 640 G8, 14" FHD IPS Touch, I5-1145G7 CPU, 16GB DDR4, 256GB SSD, WIN 11
- Asus ROG G20AJ - Intel Core i7-4790, GTX 980
- Vidd haza a jövő RAM-ját már ma!
- Bomba ár! HP 255 G7 - AMD A4 I 4GB I 128SSD I HDMI I 15,6" FHD I Radeon I HDMI I W11 I Cam I Gari!
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- ÁRGARANCIA! Épített KomPhone Ryzen 5 7600X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged