- sellerbuyer: ScreenX technológia élmények az Arénában
- Parci: Milyen mosógépet vegyek?
- ricsi99: 6. Genes alaplap tündöklése.. kontra MS/Zintel korlátozásai.(Mehetnek a levesbe)
- skoda12: Webshopos átbaszások
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- sziku69: Fűzzük össze a szavakat :)
- GoodSpeed: Megint 3 hónap Disney+ akciósan :)
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- sellerbuyer: Milyen laptopot vegyek? Segítek: semmilyet!
-
LOGOUT
Ú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
● olvasd el a téma összefoglalót!
- BESZÁMÍTÁS! Gigabyte H610M i5 12400F 16GB DDR4 512GB SSD RX 6600 XT 8GB AEROCOOL Aero One Frost 700W
- Utolsó 1 darab - Sennheiser MOMENTUM 4 fejhallgatók
- HATALMAS AKCIÓK / MICROSOFT WINDOWS 10,11 / OFFICE 16,19,21,24 / VÍRUS,VPN VÉDELEM / SZÁMLA / 0-24
- HIBÁTLAN iPhone 13 Pro 128GB Alphine Green -1 ÉV GARANCIA - Kártyafüggetlen, MS3024, 91% Akkumulátor
- iKing.Hu - Nothing Phone (2a) Black Fiatalos Glyph stílus, 120 Hz AMOLED 8/128 GB Gari
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest