Új hozzászólás Aktív témák
-
peterszky
őstag
-
Jhonny06
veterán
Egy egész függvénykönyvtár áll a rendelkezésedre, nem kell int-é alakítani (érdekes is lenne). Ha mindegyiknek 192.168.100 az eleje, akkor simán tudsz szűrni, hogy egy csoportosításnál csak az azután lévő karaktereket vegye figyelembe, vagy a 3. pont utánit, ilyesmi. Azokat már lehet int-é alakítani, úgy rendezni, stb.
-
bradam
aktív tag
Köszönöm mindhármótoknak hátulról kivagdosós módszerrel és sstreammel sikerült
-
Dave-11
tag
C++ hoz van ingyenes könyv a neten, ami kezdőknek jó?
Illetve érdekelne, hogy szerintetek az jó stratégia, ha előbb kicsit alaposan megismerkedem a C++ szal, aztám váltanék Visual C++ ra?:D Semmi :D
-
dany27
őstag
Elkészültem azzal a generikus bináris fával amihez tőletek kértem tippeket, segítséget.
Most még egy dolgot kéne véghez vinnem benne. Mégpedig azt hogy képes legyen magát kiírni majd vissza olvasni egy fileból.
Írtam hozzá egy Serialize osztályt valamint egy PFa osztályt is mely örökli a Serialize valamint a Fa osztály össze cuccát. De nem jövök rá hogy hogyan tudnám azt biztosítani hogy bármilyen adat szerkezetet kitudjon írni magától...Nem is húzom tovább az időt, beszéljen inkább a program kód: [link]
Előre is köszi a segítséget!
-
Dave-11
tag
Mikor használjuk az std::cout vagy a print parancsot? Mert ugye elvileg mindkettővel kiírathatunk valamilyen szöveget, vagy változóz, de melyiket milyen esetben használjuk. Mert gondolom azért van különbség
Ja és még valami. Ilyen void -ot már hoztam létre, csak egy valami nem tiszta belőle, csak sejtem. Szóval, ezzel a kulcsszóval egy új általunk definiált függvény hozhatunk létre?:D Semmi :D
-
dany27
őstag
válasz WonderCSabo #1557 üzenetére
A kiírás megy rendesen a vissza olvasással vannak gondok:
Így valosítottam meg: [link]146 és a 39. sorra kapok hibát
Mindegyik ezt: error: expected unqualified-id before '.' token
5let hogy mi lehet a gond?
Előre is köszi!
-
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?
-
Jhonny06
veterán
válasz Dave-11 #1562 üzenetére
Ha visszatérsz egy függvénnyel, az csak 1 érték (ráadásul ugye lokális, ennek nézz utána). Ellenben mutatókkal a függvényen belül annyit módosítasz, amennyit akarsz.
pl.:
int main(void) {
int a = 5;
int b = 3;
cout << osszead(a, b) << endl;
return 0;
}
int osszead(int x, int y) {
return x + y;
}Itt látszik a korlátja a dolognak. Egy összeadó függvénnyel tökéletesen működik, mert csak egy értékkel tér vissza, az eredménnyel. De ha mondjuk van egy olyan függvény, ami két számot külön-külön négyzetre emel, ott már elbukott az egész, mert érték szerinti paraméterátadásnál másolat készül a változóról és amit a függvényben változtatsz rajta, az visszatérés után/vagy nélkül elveszik. És csak 1 értéket tudsz visszaadni.
[ Szerkesztve ]
-
Dave-11
tag
Olvasok egy könyvet a C++ ról, amit még korábban ajánlott itt valaki, és ahol járok van egy ilyen rész, ami beszél egy kicsit a vektorról. Na és van egy ilyen kódrész benne: vector<Entry> phone_book(1000);
Ez mit akar jelenten?? Ha valaki lenne olyan szíves elmagyarázná szavanként?
Vagy ha netán valakinek megvan ez a könyv ( [link] ) akkor odaugrana gyorsan a 66-66 oldal tájékára? Kicsit zavaros ez a rész, és nem is nagyon értem hogy mit keres itt Csak ha meg kihagyom lehet hogy később meg gondom lesz belőle:D Semmi :D
-
Jhonny06
veterán
válasz Dave-11 #1565 üzenetére
Ezzel hozol létre egy vektort:
vector<Entry> phone_book(1000)
vector -> vektor, egy adatszerkezet, ami nagyon hasonló a tömbökhöz
<Entry> -> a vektor típusa, lehet pl. int, string, egy struktúra, kvázi amit akarsz
phone_book -> a vektor neve, értelemszerűen bármi lehet
(1000) -> a vektor mérete, nem kötelező megadni, mert dinamikusan tudja bővíteni magátÚgy éred el az elemeit, mint a tömbnek:
phone_book[0], stb..
Ha nem adsz meg neki méretet, akkor a push_back()-el tudsz egy elemet beilleszteni:
int x = 3;
phone_book.push_back(x);Röviden ennyi. Ne hagyd ki, mert elég alap dolog szvsz. Ha megy az angol, ezt érdemes átolvasni (meg úgy alapvetően ajánlom figyelmedbe az oldalt).
[ Módosította: philoxenia ]
-
Dave-11
tag
válasz Jhonny06 #1566 üzenetére
Mármint nem úgy értettem, hogy teljesen kihagyom, hanem hogy csak most ugrom át. Az a helyzet, hogy még elég kezdő vagyok. De nem tudom, a könyv később abszolút nem tárgyal róla?
És egy kérdés, nem biztos hogy jó, csak azt néztem, hogy amit írtál:
int x = 3;
phone_book.push_back(int);
Az utolsó sor, nem inkább: phone_book.push_back(x); ?
Vagy hülyeséget írok? Csak mert ugye az x változót akarjuk belerakni a vektorba, vagy nem?[ Szerkesztve ]
:D Semmi :D
-
Dave-11
tag
És ez a csillag mit jelent egy adattípus végén? Pl.: int*, char*, stb.
:D Semmi :D
-
Chipi333
csendes tag
válasz h1ght3chzor #1570 üzenetére
Szerintem a pointer és a tömb fogalmát nem érdemes összemosni, mert két teljesen különböző dologról van szó. Az, hogy egy tömböt általában úgy szokás használni, hogy egy pointerrel mutatsz az elejére nem jelenti azt, hogy minden pointer mögött tömb lesz.
-
-
dany27
őstag
válasz WonderCSabo #1561 üzenetére
Köszi!
Nem, még sosem programoztam Java-ban
-
Dave-11
tag
Kicsit jobban utánnajártam a pointereknek, megnéztem két videót ( videó1 és videó2 ), és hát kicsit segített letisztázni pár dolgot, de még mindig van pár dolog, amiben nem vagyok biztos. Tehát:
1. ha létrehozunk egy változót, és annak adunk egy értéket, akkor az az érték eltárolódik a memóriánk egyik címében. És valahányszor használja a programunk a változót, az értékét az adott memóriacímről nyeri ki? És erre jó a pointer, hogy megkapjuk az adott memóriacímet?
2. ha egy változó feleslegessé válik, vagy ha változik az értéke, akkor a korábbi memóriacímről törölni tudjuk a pointerünk segítségével, és egyszerűen új értéket adunk neki, ami már egy más címen lesz? És ezzel kerüljük el, hogy felesleges dolgok megmaradjanak, és a program kevesebb memória használatával, valószínűleg gyorsabban fusson?:D Semmi :D
-
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.
[ Szerkesztve ]
-
Dave-11
tag
válasz WonderCSabo #1576 üzenetére
Értem, akkor ez engem, mint kezdőt még nem érint, csak így beletekintés szintjén jó volt, később biztos hasznos lesz
Egyébként van valamilyen szisztéma, ami alapján a címekbe rakja az értékeket?:D Semmi :D
-
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á.
-
Dave-11
tag
Az objektum orientált programtervezésben egyébként mi a jó? Mármint tudom róla hogy nagyon hasznos és divatos manapság, de kb. ennyi: objektum orientált programozás -> jó. Ennyi amit tudok róla. Meg amit már futólag láttam belőle php tanulása során, hogy classok, szülő classok, tulajdonságok, öröklés, de csak ilyen kulcsszavak maradtak meg.
Egyszóval, miért olyan jó?:D Semmi :D
-
válasz Dave-11 #1579 üzenetére
kicsit kompaktabban és konyhanyelven:
a program leképezi a valós dolgot, innentől könnyebben elképzelhető, könnyebben használható. az emberi agy szeret kötni dolgokat valahova, tehát végereményben logikusabb lesz a felépítés.
ez azt is jelenti, hogy általában a dologok közötti egymásrahatások is átláthatóbbak, jól csinálva egyszerűbben átlátható lesz az architektúra (tehát a classok kapcsolata, egymásraépülése és végeredményben a program felépítése), tisztábbak lesznek az interfacek. a funkciók és változók szintén köthetőek lesznek a valós dologhoz, tehát könnyebben átlátható lesz, hogy mi miért kellhet, kevesebbet kell kommenteket/dokumentációt olvasni, emiatt könnyebben módosíthatóvá és megérthetővé válik a program. az ember kvázi építőkockákat kap, amik segítségével a nagy egész könnyebben feldarabolhatóvá (főleg design patternsek alkalmazásával), így könnyebben megérthetővé válik.
másik fontos szempont, hogy a dolgok elkülönülnek egymástól, tehát egy dolog nem több egységben (component/class) lesz megvalósítva, ez megint átláthatóbb kódot jelent. ami egyben azt is jelenti, hogy egyszerűbben átláthatóvá válik a programlogika. ez ismét a módosíthatóság/karbantarthatóság/megérthetőség hármast erősíti, illetve a tesztelhetőséghez is kell. htlmt generáló php+jquery+css+sqlnél pl elég vicces tud lenni, amikor az ember elkezdi keresni, hogy a 20+ fileból ugyanmár mi is felelős egy adott gomb működéséért, ha nincsen szépen megtervezve a rendszer (és persze a html útközben változik).
tesztelhetőséghez amiatt fontos, mert egyszerűbb egységek szintjén kezdeni, és általában minél kevesebb egység kell egy adott feladat kipróbálásához (elsősorban itt dependencykre kell gondolni), annál könnyebben lesz tesztelhető egy adott megoldás. a jól definiált interface szintén nagyban segíti a blackbox testinget. azt nem szabad elfelejteni, hogy az OO design egyben ronthat is a tesztelhetőségen, bizonyos design patternek (pl singleton vagy insulation classek) ilyen szempontból problémásak.
ami még lényeges, hogy az OO design nem igazán enged meg globális változókat, amik megintcsak nagyban rontják a későbbi karbantarthatóságot.
namost, ami az egésznek a lényege: a programok életciklusa hosszú lehet, ezalatt cserélődhet a teljes fejlesztői gárda, cserélődhetnek a célok, amiket az ember elvár a terméktől. az OO design ezekre a kérdésekre ad (részleges) választ és segít abban, hogy az a kód, amit az ember megír, később is használható legyen, amikor módosítani kell.
[ Szerkesztve ]
Don't dream it, be it. // Lagom amount.
-
Brianiac
aktív tag
Dinamikus struktúra tömbbe hogyan tudok adatokat beolvasni mondjuk egy külső txt fájlból??
Így próbáltam, de így nem jó: "be>>csomag[db].nev" Itt a csomag a struktúra neve lenne..Lumia 520
-
csepcsavoka
csendes tag
Valaki tud segíteni?? feladatrész
A program tegye lehetővé a Postán maradó táviratokon található Üdvözlő szövegek karakterekben mért átlagos hosszának meghatározását.
merthogy: meg kell határozni azokat amik a postán maradtak, és azoknak kell az üdvözlő szövegének a karaktereit összeadni és elosztani amennyit talált. -
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.
-
csepcsavoka
csendes tag
válasz WonderCSabo #1585 üzenetére
3. Hozza létre az Üdvözlő küldemény osztályt a Feladási dátum, Feladás helye, Üdvözlő szöveg és Alkalom adattagokkal. Származtassa belőle a Képeslap és az Üdvözlő távirat alosztályokat. A Képeslap osztályt bővítse a Bélyeg értéke adattaggal. Az Üdvözlő távirat osztályt bővítse Postán maradó adattaggal. Írjon programot, amellyel létrehozhatók a Képeslap és az Üdvözlő távirat egyedeket tároló vektorok. A program tegye lehetővé a feltöltést és a Budapesten feladott képeslapok küldési összköltségének meghatározását, valamint a Postán maradó táviratokon található Üdvözlő szövegek karakterekben mért átlagos hosszának meghatározását.
-
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...
-
csepcsavoka
csendes tag
válasz WonderCSabo #1587 üzenetére
ha adsz egy emailcímet elküldöm a majdnem kész feladatot és megnézed h mi hiányzik belőle, nagy segítség lenne...
-
csepcsavoka
csendes tag
válasz csepcsavoka #1588 üzenetére
és a szöveg hosszát hogy adom hozzá??
-
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();[ Szerkesztve ]
-
csepcsavoka
csendes tag
válasz WonderCSabo #1590 üzenetére
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
typdef char nevtip[30];
class Udvozlo_kuldemeny
{
protected:
nevtip Feladas_helye, Udvozlo_szoveg, Alkalom;
long int Feladasi_datum;public:
void Feladas_helyeBE(nevtip Feladas_helyeIN)
{ strcpy(Feladas_helye,Feladas_helyeIN); }void Feladas_helyeKI(nevtip Feladas_helyeOUT)
{ strcpy(Feladas_helyeOUT,Feladas_helye); }void Udvozlo_szovegBE(nevtip Udvozlo_szovegIN)
{ strcpy(Udvozlo_szoveg,Udvozlo_szovegIN); }void Udvozlo_szovegKI(nevtip Udvozlo_szovegOUT)
{ strcpy(Udvozlo_szovegOUT,Udvozlo_szoveg); }void AlkalomBE(nevtip AlkalomIN)
{ strcpy(Alkalom,AlkalomIN); }void AlkalomKI(nevtip AlkalomOUT)
{ strcpy(AlkalomOUT,Alkalom); }void Feladasi_datumBE(long int Feladasi_datumIN)
{ Feladasi_datum=Feladasi_datumIN; }void Feladasi_datumKI(long int Feladasi_datumOUT)
{ Feladasi_datumOUT=Feladasi_datum; }};
class Kepeslap: public Udvozlo_kuldemeny
{
private:
int Belyeg_erteke;
;
public:
void Belyeg_ertekeBE(int Belyeg_ertekeIN)
{ Belyeg_erteke=Belyeg_ertekeIN; }void Belyeg_ertekeKI(int Belyeg_ertekeOUT)
{ Belyeg_ertekeOUT=Belyeg_erteke; }};
class Udvozlo_tavirat: public Udvozlo_kuldemeny
{
private:
int Postan_marado;public:
void Postan_maradoBE(int Postan_maradoIN)
{ Postan_marado=Postan_maradoIN; }void Postan_maradoKI(int Postan_maradoOUT)
{ Postan_maradoOUT=Postan_marado; }};
void main()
{
Kepeslap* kepeslapok;
Udvozlo_tavirat* udvozlo_taviratok;
int i, n, db, kuldossz=0, karossz=0, Postan_marado=0, Belyeg_erteke=0;
long int Feladasi_datum=0;
float karatl=0;
nevtip Feladas_helye, Udvozlo_szoveg, Alkalom;
kepeslapok= new Kepeslap
udvozlo_taviratok= new Udvozlo_tavirat
clrscr();
printf("Mennyi a küldemények száma?\n");
scanf("%d",&n);for(i=0;i<n;i++)
{
printf("A %d. feladási helye?\n",i+1);
gets(Feladas_helye);kepeslapok.Feladas_helyeBE(Feladas_helyeIN)
printf("A %d. üdvözlő szövege?\n",i+1);
gets(Udvozlo_szoveg);
printf("A %d. alkalma?\n",i+1);
gets(Alkalom);
printf("A %ld. feladási dátuma (Pl:20120521)\n",i+1);
scanf("%ld",&Feladasi_datum);
printf("A %d. bélyeg értéke \n",i+1);
scanf("%ld",&Belyeg_erteke);
printf("A %d. postán maradt e (Pl: igen, nem)\n",i+1);
gets(Postan_marado);
}
if(strcmp(Postan_marado,"igen")==0) db++;
karatl=karossz/dbif(strcmp("Budapest",Feladas_helye)==0)
{kuldossz+=Kepeslap(i).Belyeg_ertekeKI();}printf("\nA Budapesten feladott képeslapok küldési összege: %dFt",kuldossz);
printf("\nAPostán maradó táviratokon található üdvözlő szövegek átlaga: %7.2f",karatl);getch();
}na eddig így néz ki tudom van benne pár hiba meg bizonytalankodok is egy kicsit
-
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;
}
}
}[ Szerkesztve ]
-
csepcsavoka
csendes tag
válasz WonderCSabo #1592 üzenetére
beleírnád a program megfelelő helyére?
és így hogy számolja meg majd ossza el? vagy a többi jó?
próbáltam a füzetből megírni, lehet h teljesen összekeverem a C-t és a C++-t
am gépész vagyok és csak 2 féléves az infó... -
WonderCSabo
félisten
válasz csepcsavoka #1593 üzenetére
Átírtam C++ -osra, mert a feladatkiírást elolvasva látom, hogy valszeg C++ -ban kell (vectort említi). A távirat feltöltést és postán maradó számolást ez alapján meg tudod írni.
-
szkorhetz
őstag
Sziasztok!
Lenne itt valaki aki segítene nekem két programozásos beadandó feladat megszülésében?
Én megkaptam őket és azt sem tudtam, hányadikán van elseje.
Köszönöm! -
Gibkey
csendes tag
Sziasztok, C,C++,C# és/vagy MQL4-hez értő programozókat keresünk az új projectünkhöz. Akit érdekelne esetleg az keressen meg privatban (közösbe ne).
Nem reklámnak szántam, akit sért vagy zavarja a kiírásom utólagosan is elnézést kérek. Gondoltam itt találok olyan programozót, aki épp munka hiányban szenved.
-
kmisi99
addikt
Heló! Tudnátok segíteni némi c++ ban. Az a feleadatom hogy egy egyszerű full gagyi szótárt programot írjak ami egy szöveges állomány az adatbázis és onnan olvassa be a szavakat és ha beírom az angol szót akkor kiadja a másik oldalt a magyart. Hogyan foghatnék neki mert fogalmam sincs. Tényleg teljesen gagyinak kell lenni semmi komoly.
-
WonderCSabo
félisten
válasz kmisi99 #1599 üzenetére
Gondolom van egy/kettő fájlod, amiben az angol-magyar szópárok vannak felsorolva. Nos, ezekből szépen beolvasod a párokat egy vektorba, ami stringekbből álló pair - eket tárol, vagy két vektorba, ami stringeket tárolnak. Végigmész a fájlon, és feltöltöd az "adatbázisodat". Ezek után úgy tudsz fordítani, hogy lineáris kereséssel végigmész a vektoron, és ha megvan az angol szó, akkor a magyar párját kiírod.
Ha gyorsítani akarod a dolgot, használj map - et, és akkor lineáris keresés helyett logaritmikusat használsz, cserébe a feltöltés kvázi konstans időigény helyett logaritmikus lesz.
[ Szerkesztve ]
Ú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!