Hirdetés
- weiss: Lakodalom van a mi utcánkban...
- ZolaMan: NerdQAxe++ 4.8TH/s SHA256 BTC Miner Modding
- Magga: PLEX: multimédia az egész lakásban
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- sziku69: Szólánc.
- Meggyi001: Több tucat Eiffel torony??? ... Igen, gyere mutatom, hogy hol...
- Mr Dini: Mindent a StreamSharkról!
- GoodSpeed: Kell-e manapság egérpad vagy sem?
- D1Rect: Nagy "hülyétkapokazapróktól" topik
Új hozzászólás Aktív témák
-
WonderCSabo
félisten
válasz
csepcsavoka
#1591
üzenetére
Hát, elég durván C-s kódolást nyomtok C++ néven, a class-on és new-n kívül mindenhol a régi C-s megoldásokat használod. Így természetesen nem fog működni a s.length()-el a hossz lekérdezés, hanem így:
int string_length(char str[])
{
for(int i = 0; i < 30; ++i)
{
if(str[i] == '\0')
{
return i;
}
}
} -
WonderCSabo
félisten
válasz
csepcsavoka
#1588
üzenetére
Adatlapomon megtalálod, de egyébként ide is belinkelheted a fórumba. Vagy attól félsz, hogy a többiek lemásolják?
Szerk.: Mégsem találod meg, akkor küldd privát üzenetben, ha úgy akarod.és a szöveg hosszát hogy adom hozzá??
string szoveg;
// ...
sum += szoveg.length(); -
WonderCSabo
félisten
válasz
csepcsavoka
#1586
üzenetére
Így viszont már nagyon is egyértelmű a feladat. Hozd létre a kívánt osztályokat, teljesen specifikálva vannak. Aztán írj egy-egy fvt, ami képes egy-egy vektorba új képeslapot/táviratot push_backelni. A postán maradóakhoz pedig: végigmész a vektoron lineáris kereséssel, megnézed, hogy az adott távirat postán maradó-e, ha igen a counter értékét növeled, a szöveg hozzát pedid hozzáadod egy szummához. A végén leosztod a szummát a counter értékével.
Elég egyszerű a feladat, ennél többet írva szinte már csak a megoldást tudnám leírni...
-
WonderCSabo
félisten
válasz
csepcsavoka
#1584
üzenetére
Ez a feladat kiírás így eléggé homályos, több részlet kéne.
-
WonderCSabo
félisten
válasz
Dave-11
#1577
üzenetére
Egyébként van valamilyen szisztéma, ami alapján a címekbe rakja az értékeket?
Sajnos ez egy nagyon bonyolult kérdés. Az alap koncepció az, new operátor hívásakor keres egy akkora összefüggő, üres területet a heap-en, amitbe belefér a változó, és ennek a területnek a címe kerül bele a pointeredbe. Hogy milyen szisztéma alapján keresi a területet, az egyrészt rendszerenként is változó, másrészt az adott szituációtól is függ. Ennél sokkal többet nem tudok erről a dologról, mert nem igazán volt szükséges utánajárnom eddig. De ha további kérdéseid vannak, talán a hozzáértőbbek tudnak válaszolni rá.
-
WonderCSabo
félisten
válasz
Dave-11
#1575
üzenetére
Nem, nem erre való. A memóriában valóban egy címen van a változó értéke, de ehhez szükségtelen pointereket használni. A címet egyébként is le lehet kérni az & operátorral.
A pointerek azért jók, mert segítségével láncolt adatszerkezeteket tudunk létrehozni. Pl. nem kell a tömbben tárolni a bazinagy képeket, elég csak a rá mutató pointert, és emiatt a tömb sokkal jobban kezelhető, vagy létrehozhatsz láncolt listát, fákat, stb.
A másik dolog, amit Te is írtál, hogy a pointerek segítségével tudunk dinamikusan lefoglalni memóriaterületet, és ezt bármikor fel is szabadíthatjuk. Ettől a program nem fog feltétlenül gyorsabban futni, viszont a memóriahasználata nyilvánvalóan csökkenni fog. Ellenkező esetben a sima automatikusan lefoglalt változók esetén a változó csak az adott blokk lefutása végén szabadul fel.Ezen kívül C++ - ban még a pointereken keresztül lehet megvalósítani a polimorfizmust és a dinamikus kötést, és még ezer dolog van, hogy miért is jók a pointerek.
-
WonderCSabo
félisten
Kijavítgattam, így működik, legalábbis erre a kemény 3 adatra, többre nem tesztelgettem le.
Viszont ez az egész nagyon kusza így. A fa adatszerkezetet rakd el külön fájlba. Az "elem" osztály a fának egy belső osztálya legyen, sokkal egyszerűbb és szebb lesz a megvalósítás úgy. A student, szamok classt, main fv-t legalább egy külön fájlba rakd a fától, semmi közük egymáshoz. Ennek a sornak:
fa<T>::fa.beszur(adat.convert(line));
Mi akar lenni a jelentése? Ha a beszur statikus fv lenne, akkor arra hivatkozhatnál így:
fa<T>::beszur()
Ha a fa egy objektum lenne, akkor hivatkozhatnál rá így.
fa.beszur()
Amit te leírtál, az azt jelenti, hogy van egy fa osztálynak statikus fa adattagja, aminek statikus beszur fv-ére hivatkozol...
Aztán ez:
y.beszur(*(new student("dsfdsf","KSDFGH")));
Ha rögtön dereferálod, semmi értelme dinamikusa allokálni, mert csak egy szép memory leaket kapsz, és semmi előnyt.
Az ilyet C++ -ban így írjuk:y.beszur(student("dsfdsf","KSDFGH"));
A BST-nek hol maradt a destruktora? Dinamikusan hozod létre a csúcsokat és sehol sem szabadítod fel őket.
Illetve: a fa nem lesz túl általános, hordozható, ha ilyen módon írod meg. A compare fv helyett használj sima < operátort, a convert helyett pedig << operátort. És ezeket terheld túl a saját típusaidban. Így még a beépített típusokra is fog működni.
Jól sejtem, hogy Javában kezdtél el programozni?

-
WonderCSabo
félisten
-
WonderCSabo
félisten
válasz
proci985
#1523
üzenetére
ArrayListel egy sima add()
Ez nem Java. Vector és push_back()

más kérdés, hogy nem értem, hogy ez minek C++ alatt, amikor ott vannak a beépített funkciók.
Mindent van értelme dinamikusan kezelni, sokszor jól jöhet (bár nyilván ilyen kicsi feladatnál nem sok értelme van).
tippeltem, illetve tippelek.
Jaja, jó a gondolatmenet, csak arra akartam utalni, hogy jobb lenne bővebb kóddal kérdezni.
-
WonderCSabo
félisten
Iterátort kell hozzá írnod.
Definiálsz egy belső, publikus Iterator osztályt, aminek a friend class-a a treed. Ezek után pedig meg kell írnod a szokásos iterátor műveleteket:bool operator!=(const Iterator& it) const;
bool operator==(const Iterator& it) const;
Iterator& operator++();
Iterator operator++(int);
Iterator& operator--();
Iterator operator--(int);
T& operator*() const;Az Iteratornak pedig legyen egy mezője, ami a treed egy nodejára mutat.
-
WonderCSabo
félisten
válasz
Des1gnR
#1487
üzenetére
sort - ot használva így tudod rendezni:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct mystruct
{
mystruct(int pa, int pb, int pc, int pd, char pe) : a(pa), b(pb), c(pc), d(pd), e(pe) {}
int a, b, c, d;
char e;
};
struct mysortbyfourth // ez a funktor lesz az osszehasonlito
{
bool operator() (const mystruct& first, const mystruct& second)
{
return first.d < second.d;
}
};
int main()
{
vector<mystruct> v;
v.push_back(mystruct(7, 23, 31, 164, 'F')); //nyilvan Neked a faljbol kell beoltened az
v.push_back(mystruct(7, 23, 33, 167, 'F')); //elemeket, en csak beszurtam 3 peldat
v.push_back(mystruct(7, 24, 11, 121, 'A'));
mysortbyfourth mysort;
sort (v.begin(), v.end(), mysort); //az elejetol a vegeig, a definialt osszehasonlitas szerint rendezi
return 0;
} -
WonderCSabo
félisten
Jajjjjjjjj. A legtöbb programozási nyelv nullától indexel, ezt nagyon jól jegyezzétek meg, különben rengeteg overflow errort fogtok kapni.
mystring[mystring.length() -1] az uccsó karakter C++ string esetén.
Des1gnR problémáját én meg úgy oldanám meg, hogy beolvasom a sorokat stringek vectorába, és aztán megszámolom az előbb említett módszerrel az uccsó helyen lévő 'A' - kat és 'F' - eket.
-
WonderCSabo
félisten
-
WonderCSabo
félisten
válasz
bandi0000
#1433
üzenetére
Elrontottad a fordító beállításait. Először is ne a Debug-ot, hanem a Release módot használd első menetben. Másrészt pedig állítsd vissza alapértelmezettre a fordítási beállításokat: Settings -> Compiler and debugger -> Reset to Defaults.
Egyébként ugye a fordítóval integrált verziót töltötted le?
-
WonderCSabo
félisten
Ez igaz, viszont a dinamikus memóriakezelés miatt fragmentálódik a memória, az elemek elérése több erőforrásba kerül, sokkal több hibalehetőség van, stb. Fv. paraméterként meg érdemes referencia szerint átadni, és nem kell másolgatni semmit. Én nem mondanám, hogy minden esetben érdemes pointereket használni.
raadasul gyanitom, hogy olyankor az osztalyt megsemmisiti, es ugy peldanyt hoz letre a default copy construktorral, de ez csak tipp
Sztem meg inkább std::copy-val, vagy vmi ilyesmivel másolja át az adatokat.
-
-
WonderCSabo
félisten
válasz
Jhonny06
#1266
üzenetére
Én Code::Blocks-ot használok. Ha a Run-ra kattintok, nem érdekli volt-e változás, az utolsó fordított binárist futtatja (már ha van, ha még nincs, akkor fordíttat veled). Ezért mindig Build and Run parancsot adok ki. Persze ez a Build parancs csak a megváltozott fordítási egységeket fordítja újra, és linkeli a programot. A teljes újrafordítás a Rebuild. Olyan még nem fordult elő, hogy a Build nem vette észre, hogy volt változás.
Más:
Ha meg kell akadályoznom a programom automatikus bezárását, mindig cin.get()-et, vagy getchar()-t használok. Legalábbis Windowson. Most valgrind miatt Linuxon forgattam, és meglepően tapasztaltam, hogy legújabb GCC-vel Ubuntuval az előbbi hívásokat simán ignorálja és terminál a program. Tapasztalt ilyet vki? Ha igen, milyen alternatívák vannak, amik Linuxon is műxenek?
-
WonderCSabo
félisten
válasz
Brown ügynök
#1220
üzenetére
Nem tudom, sosem csináltam még wxWidgets-es cuccot. Ezt találtam.
-
WonderCSabo
félisten
1. programkód formázással posztold már könyörgöm.
2. ez nem C++ kód, hanem C, aminek ez a topikja.int vizsgal(char s1[], char d1[])
{
int i, j;
for(i=0; i<strlen(s1); i++)
{
if (s1[i]==d1[0]) //itt Te lehagytad a [i]-t
{
for(j=1; j<strlen(d1) && i+j < strlen(s1); j++) // inkább itt vizsgáljuk mert nem lesz overflow
{
if (s1[i+j] != d1[j])
break;
if (j==strlen(d1)-1)
return i;
}
if (strlen(d1)==1)
return i;
}
}
return strlen(s1); //általában így szoktak működni ezek
}Meg ha jól láttam, a mainben is az s -nél ()-t használtál [] helyett.
-
WonderCSabo
félisten
válasz
Brown ügynök
#1217
üzenetére
Én magam is a Code::Blocks-ot ajánlottam volna (integrált MinGW-vel), csak azért maradtam csöndben, mert normális GUIs alkalmazást még nem nagyon fejlesztettem.
-
WonderCSabo
félisten
válasz
7600 GS
#1202
üzenetére
A bonyolultat ironikusan értettem. Ez egy mérhetetlenül egyszerű feladat, és nem lehet sokkal egyszerűbben csinálni, mint ahogy a fórumtárs megírta. Egyébként mit vársz még? Gyak az egész program felépítését leírta, ha még ez sem megy, euklideszi algoritmusnak még a pszeudokódja is fenn van wikipédián.
Te magad jelentkeztél, nem?

-
WonderCSabo
félisten
válasz
kingabo
#1190
üzenetére
Miután láthatóvá tettem a privát adattagokat, a BSTNode(T data) konstruktorra dobott undefined referencet. Méghozzá azért, mert ezt a könyvtár írója ugyan deklarálta, de sehol sem implementálta. Ha az osztálydefinícióban a BSTNode(T data); sort átírod erre: BSTNode(T data_) : data(data_){} akkor fordul. LOL ez a könyvtár egyébként.
-
WonderCSabo
félisten
válasz
Brianiac
#1162
üzenetére
for (i=0; sor(i)!='0\'; i++)
if (sor(i)==x)A tömbök elemeire a [] operátorral lehet hivatkozni:
sor[i]
Az i változót meg sokkal szebb lenne a for-okban deklarálni, nem a main lokális változójaként.
Szerk.: Utólag jöttem rá, hogy Te is a [i]-t használtad, csak a RIOS alakította át (i)-é. Ha a programkád formázással küldöd be a kódodat, ez nem történik meg.
A toupper()-hez meg includeolni kell a <cctype> -ot, csak úgy tűnik itt a fordító megtette helyetted. -
WonderCSabo
félisten
válasz
Barett 50cal
#1135
üzenetére
-
WonderCSabo
félisten
Üdv!
Használ vki itt Code::Blocks-ot? Hogy lehetne hozzáadni a GCC-hez a -werror flaget globálisan? Settings -> Compiler and debugger... -> Compiler settings -> Compiler flags alatt nincs.
-
WonderCSabo
félisten
Próbából leforgattam a kódodat (a vackokat kigyomlálva) és a fajl<<elotte<<endl; sorban hibát dob. Ami nem csoda, hiszen itt vektorból fáljba akarsz írni, és ez magától nem fog működni, kell írni operátort hozzá. Rengeteg dolgot tudnék még mondani a kódra, de azt majd csak akkor, ha esetleg kérdezed, viszont ezt gondoltam leírom, hiszen le se fordul a kódod, nem is működik.
-
WonderCSabo
félisten
Mivel ahogy látom nem használsz ékezetes karaktereket, teljesen felesleges ide a TCHAR, használj helyette char -t.
Minek includeolsz ennyi cuccot, amikor nem is használod őket?

A system("pause")-t meg felejtsd el, használj helyette vmi más portolható megoldást.A kódot pedig programkód formázással küld be a hszbe.
-
WonderCSabo
félisten
válasz
FireKeeper
#1075
üzenetére
De ebben mi a nehéz?
Csinálsz egy tömböt (mondjuk egy n*2-et), amiben tárolod az eredeti karaktereket és a titkosított megfelelőjüket. Amikor beolvasol egy karaktert, kikeresed azt a tömbből, és a titkosított megfelelőjét írod le helyette.
-
WonderCSabo
félisten
vagy
string s;
getline(cin, s);
f.open(s.c_str());fstream :: is_open helyett én fstream::good -ot szoktam használni
-
WonderCSabo
félisten
válasz
memphis_19
#1029
üzenetére
Hát, pl. Mediainfo APIval.
-
WonderCSabo
félisten
válasz
Berenyimiki
#1015
üzenetére
-
WonderCSabo
félisten
válasz
WonderCSabo
#1001
üzenetére
Hülye vagyok, megvan:
if(c == '+' || c =='-' || c =='*' || c =='^' || c =='/' || c =='%')
-
WonderCSabo
félisten
Üdv!
Nagyon szégyellem magam, hogy felteszem ezt a kérdést, de nem tom miért nem működik a dolog.

Kezdek megőrülni. Egy bonyolult dolgot írok, de vmiért még az alapvető dolgok sem működnek.
Lebontottam alap példára:
ha '+' vagy '-' stb a karakter, akkor írja ki "jo"
ha egyéb más, akkor írja ki: "nem"Nekem ezzel a kóddal bmely karakterre "jo"-t ír, miért? :S
#include <iostream>
using namespace std;
int main()
{ char c='6';
if(c == '+' || '-' || '*' || '^' || '/' || '%')
{
cout<<"jo";
}
else {cout<<"nem";}
return 0;
} -
WonderCSabo
félisten
Üdv!
Hogy tudom elérni, h. a konzolból normális UTF-8 karaktereket olvasson be?
#include <iostream>
using namespace std;
int main()
{
char a='é';
char b;
cin>>b;
if(a==b)
{
cout<<"muxik";
}
else
{
cout<<"kurva ekezet";
}
return 0;
}Mellesleg UTF-8 kódolásra állítva a cpp-t ezt kapom:
6|warning: multi-character character constant|
6|warning: overflow in implicit constant conversion|De ha a programban 'é'-t adok értékül b-nek, akkor műxik, szóval a konzollal lesz a baj.
Próbáltam win-en konzollal, illetve lefordítottam linuxon is, winről puttyon, egyik se volt jó.
-
WonderCSabo
félisten
-
WonderCSabo
félisten
-
WonderCSabo
félisten
-
WonderCSabo
félisten
Magyarul akasztófázni kell.

Szerk.
for (int i=0;i<vector[randomodik].length();i++)
{
if ( vector[randomodik].substr(i,1) == betu)
{
// csinálja ezt
}
} -
WonderCSabo
félisten
válasz
Sk8erPeter
#722
üzenetére
Jaja, elvártam volna...
nepszter1: A változók száma attól függ, hogy hány fajta sokszöget, hány fajta módszerrel számolsz, de persze pl a háromszög magassága lehet ua. változó, mint a téglalap magassága és a négyzet oldalhossza. Meg persze csinálhatod egy változóval is, egy vectortt push_backelni, de sztem azt hagyjuk.

-
WonderCSabo
félisten
válasz
Sk8erPeter
#717
üzenetére
Vhogy sosem szerettem a caset, de úgy csinálja a kolléga, ahogy akarja.

shev7: hello world már fordul.

-
WonderCSabo
félisten
válasz
nepszter1
#715
üzenetére
Ha úgy szeretnéd, hogy először megkérdezze, hogy melyik sokször legyen, akkor kell.
Pl.if (teglalap)
{
cout<<"magasság?"
cin>>magassag;
cout<<endl<<"szélesség?";
cin>>szelesseg;
kerulet=(2*magassag)+(2*szelesseg);
terulet=magassag*szelesseg;
cout<<kerulet<<endl<<terulet;
}
if (haromszog)
{
... -
WonderCSabo
félisten
Sziasztok!
stringstreammel szívok. Hogy lehet normálisan törölni, majd megint írni bele?
stringstreamneve.str("");
strinstreamneve.clear();függvényekkel törölni tudok, de már újra beleírni nem... Ha csak cleart használok, nem csinál semmit, ha csak strt, akkor kitörli, de megint nem tudok bele írni...
-
WonderCSabo
félisten
válasz
Jhonny06
#678
üzenetére
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int a;
int b;
int c;
string vez;
string ker;
string nev;
fstream f;
f.open("valami.txt");
f>>a>>b>>c>>vez>>ker;
nev=vez+" "+ker;
cout << a << endl << b << endl << c << endl << vez << endl << ker << endl <<nev;
f.close();
return 0;
}
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- BESZÁMÍTÁS! GIGABYTE X570 AORUS ELITE X570 alaplap garanciával hibátlan működéssel
- LG 45GR95QE - 45" Ívelt OLED / 2K WQHD / 240Hz 0.03ms / NVIDIA G-Sync / FreeSync Premium / HDMI 2.1
- BESZÁMÍTÁS! LG 24GM79G-B 24 144Hz FHD TN 1ms monitor garanciával hibátlan működéssel
- ÁRGARANCIA! Épített KomPhone Ultra 9 285K 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Samsung Galaxy A36 5G / 6/128GB / Kártyafüggetlen / 12Hó Garancia / Bontatlan
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Az ilyet C++ -ban így írjuk:








