Új hozzászólás Aktív témák
-
cafat
tag
Sziasztok! Az alábbi programot kéne elkészítenem! Ha valakinek nagyon megy ez a téma és gyorsban összedobná azt nagyon megköszönném!
Készítsen programot, melyben telefontulajdonosok adatait tudja kezelni:
Definiáljon egy Telefon nevő osztályt, melynek négy privát adattagja van:
Nev 20 karakter hosszú sztring a telefon tulajdonosának neve;
Tszam egész típusú változó, a telefonszám;
Szolg egész típusú változó, a szolgáltató; és
Tar egész típusú változó, a telefon ára.
A tagfüggvényei pedig a következők:
Konstruktor az adattagok feltöltésére. Töltse fel az adattagokat a billentyőzetrıl
beolvasott névvel, telefonszámmal és a telefon árával. A telefonszámot ellenırzötten
olvassa be (100 000 000 és 999 999 999 közötti szám legyen). A Szolg adattagot
számolással állapítsa meg.
(szolgaltato= telszam / 10 000 000)
KorzetSzam(); A körzetszámot adja vissza.
Kiir(); megjeleníti az adattagokat egy sorban, szóközökkel elválasztva.
FajlbaIr(); kiírja az adattagokat a telefon.txt szöveges állományba, bıvítésre megnyitva az
állományt. (ios::app)
FajlbolOlvas();Töltse fel az adattagokat az adatok.txt állományból beolvasott névvel,
telefonszámmal és a telefon árával. A Szolg adattagot számolással állapítsa meg.
A főfüggvényben definiáljon egy Telefon típusú objektumot, hallgato néven. -
atm*RefeeZ
tag
hello
olyan függvényt akarok írni ami egy stringet ad vissza. azt mondták hogy ezt pointerrel lehet megtenni. kérdem én, hogyan?elég sűrgős lenne
köszi előre is.
-
k.t.a.
senior tag
válasz atm*RefeeZ #253 üzenetére
Kell egy változó amibe tárolod a stringet pl.:
char* s;Írsz egy függvényt aminek átadod a stringed címét, és a függvényedben minden módosítást úgy végzel el, hogy a módosítások a kapott címre íródjanak be pl.:
void fv( char** temp)
{
//ide írod amit szeretnél
*temp = "valami szöveg";
}Aztán a így hívod meg pl.:
fv(&s); -
k.t.a.
senior tag
Ebben nincs semmilyen visszatérési érték sem, de nincs is rá szükség. Egyszerően a függvényedből egy globális változót modosítgatsz. Azért nem lehet stringet visszaadni értéknek, mert a string egy karakterre mutató pointer, és amikor ezt akarnád visszatérési értéknek adni, akkor csak egy olyan címet kapnál amin már nincsen semmi. Azért mert amit kiszámolsz a függvényedben az egy lokális változóban lenne tárolva, és ez törlődik amikor meghívod return-t. Ergo csak egy üres memória helyre mutató címet kapnál.
-
Jester01
veterán
válasz atm*RefeeZ #253 üzenetére
Mivel ez a c++ topik, ezért gondolom c++ megoldás kell. Ott meg van string osztály. Kész.
string f() { return "alma"; }
k.t.a: természetesen vissza lehet adni char*-ot, ha olyan helyre mutat ami nem szabadul fel. A konstansok pl éppen ilyenek
const char* f() { return "alma"; }
Hasonlóképpen dinamikusan is lehet foglalni, persze ilyenkor a hívó felelőssége, hogy használat után felszabadítsa.
char* f() { return strdup("alma"); }
...
char *s = f();
printf("%s\n", s);
free(s);Jester
-
k.t.a.
senior tag
válasz Jester01 #257 üzenetére
Teljes mértékben igazat adok neked, én is írhattam volna visszatérési értéknek is, hogy még egy kicsit bonyolultabb legyen. Az esetek többségében a kérdések az alap C-re vonatkoznak, mégha C++-os is a topik. Egy éves fizum mertem volna rá tenni, hogy a kérdésnek semmi köze az objektumokhoz.
Mod.: Ezt a dinamikus dolgot nem tartom túl elegáns megoldásnak, mégha működik akkor sem.
Mod.2: A Konstans meg nem működik, mert ha a függvényben hozod létre, akkor már kint nem tudsz rá hivatkozni, ha meg globálisan hozod létre akkor meg elveszti értelmét ebben az esetben. Vagy valamit rosszul értek?[ Szerkesztve ]
-
Jester01
veterán
Ezt a dinamikus dolgot nem tartom túl elegáns megoldásnak, mégha működik akkor sem.
Hát pedig nagyon sok minden így működik, még azzal is megspékelve, hogy nem is simán free-t kell rájuk hívni, hanem az api-ban van megfelelő felszabadítási párja.
Vagy valamit rosszul értek?
Minden bizonnyal. A konstansok ugyanis nem a veremben laknak, az teljesen jól működik.
MOD: Egyébiránt a te megoldásod 100%osan ekvivalens ezzel, hiszen te sem másoltad le a visszadott értéket. A lényegileg más megoldás az így nézne ki:
void f(char* buf) { strcpy(buf, "alma"); }
Na ez valóban a hívó által beadott területre ír. Persze itt célszerű átadni a puffer méretét is, a túlcsordulás elkerülése végett.
[ Szerkesztve ]
Jester
-
atm*RefeeZ
tag
hello ismét
void mailcim(char); // úgy kérik,hogy a program végén írjuk meg a fv.-t magát.
void main (void)
{
char mail[255], *m;
strcpy(m,mail);
clrscr();
mailcim(*m);
getch();
}
void mailcim(char *in)
{
int i,jo;
jo=0;
do
{
gets(in);
for(i=0;i<=strlen(in);i++)
if(in[i]=='c') jo=1;
}
while(jo!=1);
}ez egy erősen teszt jellegű dolog,arra szolgál,hogy teljesen tisztába kerüljek a dolgokkal. c++ -ban van de gondolom hozzá értő emberek hamar észreveszik a program nem fut le,linker error-t kapok valami ilyesmivel,hogy undefined symbol mailcim in blabla.exe , érdekel ez mire vonatkozik illetve,hogy mit írtam szintaktikailag rosszulköszi előre is;)
-
Jester01
veterán
válasz atm*RefeeZ #260 üzenetére
Arra, hogy a prototípusból lemaradt a csillag.
void mailcim(char*);
Amúgy ez: strcpy(m,mail); nagyon rossz lesz neked. Miért is nem simán mailcim(mail) ?
MOD: ja és a hozzáértő emberek továbbra is látják, hogy ez sima C.
[ Szerkesztve ]
Jester
-
atm*RefeeZ
tag
válasz Jester01 #261 üzenetére
hát nekem cpp kiterjesztést csinál,a program neve is c++ úgyhogy nem tudom akkor kit hol vernek át
a strcpy(m,mail); kikerült belőle,igazából rájöttem,hogy butaságot írtam,sajnos a drága tanárunk úgy gondolta,hogy háát..úgy sem értek c-hez,nem megyek bele hogy a sok hülyének megpróbálom előadni mit jelent az,hogy pointer,mikor mire mutat stb...így egyedül kellene megérezni ami egyenlőre nincs meg,de igyekszem
köszönöm szépen
-
k.t.a.
senior tag
válasz atm*RefeeZ #262 üzenetére
Lehet hogy a progi (fordító) C++, de te csak az alap C nyelv képességeit használod ki, mert nem csináltál osztályokat és nem használsz objektumokat. A C++ lényegében ennyivel több a C-nél.
-
atm*RefeeZ
tag
ó értem gondoltam,hátha nem működnek oda-vissza a parancsok és akkor ugye csak c++ lehetne. na,amióta ide írkálok csupa hasznos dolgot tudok meg remélem a c#-hoz is ennyien értenek/értetek mert jövő félévben valószínűleg abba kell majd segíteni,ha tud olyat mondani a tanár amit használni kéne ugyan de el nem magyarázza (érthetően) köszönöm ismét
-
B3
csendes tag
Sziasztok!
alacsonyszintű filekezelős programot szeretnék futtatni.. de nem fordul le mert hiányzik az unistd.h (igy nem működnek az open , read , close parancsok.. pedig az lenne a lényeg.) .. neten találtam 1et [link] de valamiért ez nem passzol a borland c++ 3.1 hez (rengeteg syntaxot ír ki a fordításnál)hol találok megfelelő unistd-t? kifogytam az ötletekböl.
a progi:
# include <stdio.h>
# include <sys/stat.h>
# include <unistd.h>
# include <fcntl.h>
int main (void)
{
int fd;
char c;
int r;
fd = open ("c:/tst1.txt",o_rdonly);
while (1)
{
r = read(fd,&c,1);
if(r!=1) break;
printf ("%c",c); fflush(stdout);
}
close (fd);
return 0;
}[ Szerkesztve ]
W123 200D 1980 (220D blokk)
-
pigatt
őstag
Hi!
Valaki tudna ebben segíteni, hogy hogyan kellene megcsnálni?
Egy N résztvevőjű kutyaszépségversenyen M különböző szempont szerint pontoznak minden
kutyát,s az eredményt a KUTYA(N,M)mátrix tartalmazza.Minden szempont alapján
MAX(I)pont adható (nem negativ egész szám).
Az összetett veresenyből automatikusan kiesik az a kutya,amely valamelyik kategóriában nem
éri el a kategóriánként megadott alsó ponthatárt (MIN(I)).Készits C++ programot,amely
eldönti,van-e olyan kutya, amely abszolult győztes lett,de minden kategóriában van nála jobb!i9 / 4080 / 32"
-
pigatt
őstag
tárgytalan elkészült!
i9 / 4080 / 32"
-
Alg
veterán
Sziasztok!
Faktoriális kiszámításához kellene kis segítség, nem tudom hogy kezdhetnék hozzá.
A lehető legegyszerűbb eszközökkel, bármekkora szám faktoriálisát szeretném kiszámolni. Futásidő nem lényeg.
A rekurzív algoritmust már megírtam.
A lényegre magam szeretnék rájönni, csak egy ötlet kellene, hogy hogyan lehet kiküszöbölni a változótípusok méretkorlátait...
A.
"I love not man the less, but Nature more" // Giant TCR Adv. '16 Di2 // Fenix 7 SS // FiiO BTR3 + Truthear ZERO
-
amargo
addikt
A helyedben írnék egy algoritmust, amivel nagy számok összeszorzását letudod bontani pár(majd jópár) kisebb számjegyre is. Ezeknek az értékeit egy sztringben tárolhatod (a végeredmény), és szintén folytatod.
Azaz, kell egy algoritmus, amivel letudsz bontani nagy számot.
Egy másik, amivel ezeket a rész összegeket összetudod adni.“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!”
-
Alg
veterán
Közben nekem is eszembe jutott, az is ilyesmi: sztingként kérem be a számot, így számjegyenként tárolom. arra már meg tudom írni az "írásban szorzás" algoritmust.
"I love not man the less, but Nature more" // Giant TCR Adv. '16 Di2 // Fenix 7 SS // FiiO BTR3 + Truthear ZERO
-
Drizzt
nagyúr
Hello.
Van egy Objectlistem, ezen belül van egy Object* objects[10]-em, heterogén kollekcióra, van egy gömb, s egy sík leszármaztatva az Objectből. Az lenne a kérdésem, hogy valahogy el lehet-e érni az objects-en for ciklussal végigmenve, hogy minden objektumra, ami gömb, meghívjon egy csak gömbre jellemző tagfüggvényt?
Eszembe jutott az, hogy csinálhatok egy virtuális függvényt, ami a síknál nem csinál semmit, a gömbben pedig megcsinálja amit akarok. Ennél van valami hatékonyabb/elegánsabb cucc?I am having fun staying poor.
-
bdav
őstag
szerintem nem tudsz lényegsen jobbat alkotni ennél (üres függvények irkálása sztem elfogadott OO világban). Hatékonyság szempontjából ez nem rossz azért
alternatíva hogy csinálsz egy getType() jellegű virtuális függvényt, ami 0t ad vissza síkra, 1et gömbre mondjuk, és ha gömb akkor castolsz és hívsz gömb függvényt. Ez a rondábbik opció, és lassabb is valamivel.
10 féle ember van a világon. Aki ismeri a kettes számrendszert és aki nem. ''A név nincs hosszabb páncélszekrény''
-
-
D@ni88
addikt
hali, nekem egy olyan parancsra vagy függvényre lenne szükségem ami tud másodpercet számolni
vagy valami 5letet tudtok arra mondani. hogy csak akkor hajtson félre egy műveletet, ha pl 5 másodpercig nem nyomok semmit
hülye tanár ilyen feladatot adott prog I. kihangsúlyozom EGY beadandónakemígy is hülye a feladat:
Írjon egy játék programot, amely egy véletlen szerűen összeállított kisbatűkből álló karaktersort tol be a képernyő bal széléről úgy hogy a már bent lévő karaktereket minden lépésnél egyel jobbra tolódnak és egy újab véletlenszerűen válaszott kisbetű jelenik meg a bal szélen. A játékos a megfelelő betű leütésével eltudja tüntetni a jobb szélső karaktert, de mindig csak azt. Ha a sor átér a túloldalra (a játékos lassú) vége a játéknak. A játékos akkor tudjon előszőr betűt törölni, ha már legalább tíz betű van a képernyőn. A program q billentyűre lépjen ki :D
vagy 6odjára fogtam fel mi a szitu, de már minden kész van le is fut a program hogy ha ütök valamit, de ha nem ütök akkor nem megy tovább a progi
-
Alg
veterán
Hali!
Nagyon kezdő kérdés lesz, bocs...
Szóval: azt szeretném megoldani, hogy bakérek egy (bármilyen hosszú) számot, és azt tömbben tárolom el, számjegyenként... szóval van valami módja a char=>int konverziónak?
"I love not man the less, but Nature more" // Giant TCR Adv. '16 Di2 // Fenix 7 SS // FiiO BTR3 + Truthear ZERO
-
aktív tag
Nembiztos hogy jól gondolom hogy mire gondolsz de talán az atoi-val kell megoldani a problémát.
ez sztringet konvertál int-é
[atoi]pl getch-val kéred be a számjegyeket egymás után és teszed be őket egy tömmbe
aztán atoivel át tudod konvertálni számmá
márha ez a feladatYouth hides the key to salvation
-
Alg
veterán
Igazából (mint ahogy korábban is írtam már) a feladat egy bármilyen nagy szám faktoriálisának kiszámítása... ehhez kellene, hogy a program bekér egy számot, eltárolja számjegyenként egy tömbben, amire meg tudom írni a szorzás műveletet, és a faktoriálisos ciklust...
Mod:Ja, és lehetőleg OO nélkül, STL nélkül...
Eddig csak <iostream>-es programokat írtunk, és nem is volt szó másról
[ Szerkesztve ]
"I love not man the less, but Nature more" // Giant TCR Adv. '16 Di2 // Fenix 7 SS // FiiO BTR3 + Truthear ZERO
-
Benmartin
senior tag
szia!
ha c++, akkor miértne stl? atoi nem éppen a legjobb választás, nem kezel nagy számokat.
sstream fejállomány definiál viszont olyan osztályt, ami képes átváltani, string-ből számtípusba.#include <sstream>
string szam;
int szam2;
cin>>szam;
ostringstream egeszbe(szam);
egeszbe>>szam;ha számjegyenként meg valahogy így:
#include <vector>
#include <sstream>
string szam, atmeneti;
vector<int> szamjegyek;
cin>>szam;
int szamjegy;
for(int i = 0; i < szam.size(); i++) {
atmeneti = szam[i];
ostringstream egeszbe(atmeneti);
egszbe>>szamjegy;
szamjegyek.push_back(szamjegy);
}ez miért kell a faktoriálishoz?
a kódot nem próbáltam ki, most írtam be.[ Szerkesztve ]
-
Alg
veterán
válasz Benmartin #278 üzenetére
Nagy számokra is működnie kell, így gondoltam szám=>tömbbbe számjegyenként, majd megírnám a szorzást a tömbökre, és ezzel a szorzással már mehet a rekurzív algoritmus...
Igazából minél egyszerűbb eszközökkel, annál jobb, össz 1 félévnyi, heti 1 óra C++-unk van, szóval semmi komoly...
"I love not man the less, but Nature more" // Giant TCR Adv. '16 Di2 // Fenix 7 SS // FiiO BTR3 + Truthear ZERO
-
Alg
veterán
válasz Benmartin #280 üzenetére
a feladat alapján csak a memória mérete vagy a futásidő szabhat határt...
char a[40];
cin>>a;
int b[40];
stringstream(a[0])>>b[0];Ez így eddig csak az a[0] memóriacímét adja vissza b[0]-ban, valami hasonló kellene...
"I love not man the less, but Nature more" // Giant TCR Adv. '16 Di2 // Fenix 7 SS // FiiO BTR3 + Truthear ZERO
-
Benmartin
senior tag
nem ezt írtam neked, és kiemeltem hogy string-et, és nem char-t konvertál, nem véletlenül tettem át egy atmeneti string típusú objektumba az adott karaktert.
"a feladat alapján csak a memória mérete vagy a futásidő szabhat határt..."
ezt meg nem így szokták megadni, hanem pl. 1<=n<=1000. mert így gyakorlatileg bármilyen rossz futás idejű algoritmus jó, mert nincs milyen feltételt kielgíteni.
-
Alg
veterán
válasz Benmartin #282 üzenetére
márpedig gy adta meg
tehát a futásidő mindegy, csak működjön...Ez is memóriacímet ad vissza:
string c;
int a[20];
getline (cin,c);
stringstream(c[1])>>a[0];viszont ha c-nek beadom mondjuk h. 123 és kiíratom c[1]-et arra a megfelelő "2" eredményt dobja ki...
"I love not man the less, but Nature more" // Giant TCR Adv. '16 Di2 // Fenix 7 SS // FiiO BTR3 + Truthear ZERO
-
Benmartin
senior tag
-
Alg
veterán
válasz Benmartin #284 üzenetére
nem jó, az int maximális értéke kevés...
akkor visszatértünk az alapkérdéshez: hogyan szedjek szét egy számokból álló karaktersort számjegyeket tartalmazó tömbé?
"I love not man the less, but Nature more" // Giant TCR Adv. '16 Di2 // Fenix 7 SS // FiiO BTR3 + Truthear ZERO
-
Lortech
addikt
válasz Benmartin #286 üzenetére
Még nem tanultátok a faktoriálist? Már 21! is sok egy 64 bites egésznek is.. Az a feladata, hogy stringként csinálja meg az aritmetikát, szándékosan erre megy ki a játék, ez a feladat lényege, nem a faktoriális kiszámítása a kunszt.
Thank you to god for making me an atheist
-
Alg
veterán
válasz Benmartin #286 üzenetére
#278-ból a 2-est próbálgatom, a vektor helyett nem lehetne tömböt használni?
string c,atmeneti;
int b[5];
cin>>c;
atmeneti=c[1];
stringstream(atmeneti)>>b[0];ez így most jónak tűnik...
[ Szerkesztve ]
"I love not man the less, but Nature more" // Giant TCR Adv. '16 Di2 // Fenix 7 SS // FiiO BTR3 + Truthear ZERO
-
Alg
veterán
nah ez így azt hiszem menni fog, köszönöm, már csaka tömbből kellene a számítások végén valahogy megint sztringet csinálni, hogy kiírathassam az eredényt...
Mod: sztorno, ezt meg megtaláltam a cplusplus.com-on
[ Szerkesztve ]
"I love not man the less, but Nature more" // Giant TCR Adv. '16 Di2 // Fenix 7 SS // FiiO BTR3 + Truthear ZERO
-
amargo
addikt
Nem értem, amikor leírtam Neked, akkor most? Kód kellene? Nincs olyan numerikus változó, amibe akármekkora számot elraktároznál.. létezik valami objektum, amit banki rendszerekhez használnak, de a megoldást fentebb írtam.
“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!”
-
Alg
veterán
Nem értem, mit nem értesz...
Az első lépéshez kértem segítséget (input tárolása és átalakítása úgy, hogy azzal már tudjak számolni) mivel azóta nem tudtam megoldani a dolgot, pedig nem keveset agyaltam rajta/keresgéltam utána.Ezután a kódot már meg tudom írni magamtól, mivel #278 alapján már megoldottam ami eddig nem ment...
Benmartin:THX a segítséget!
[ Szerkesztve ]
"I love not man the less, but Nature more" // Giant TCR Adv. '16 Di2 // Fenix 7 SS // FiiO BTR3 + Truthear ZERO
-
Ran
csendes tag
Üdv!
Kezdő vagyok C++ -ban és szeretném meg kérdezni, hogy hogyan tudnék bekérni stringet, sima konzolos felületen, mert mindig valami hibával kiakad :S
Előre is kössz a helpet ;)
-
Ran
csendes tag
Üdv!
Kezdő vagyok c++ -ban, és szeretném megkérdezni, hogy stringet hogy tudnék bekérni, mert bárhogy is próbálkozok nem sikerül így:
char* be;
cin>>be;A bekérés után hiba üzenet, és leáll a progi. Ez egy egyszerű konzol alkalmazás, csak próbálkozok.
Előre is kösz a helpet. ;)
-
amargo
addikt
* az egy mutató(ezt inkább később, ha még az elején vagy), gondolom karakter tömböt szeretnél:
char i[10];
cin >> i;De ajánlom még a string könyvtárat is.
string i; cin >> i;
kis segítség:
Basic Input/Output“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!”
-
Ran
csendes tag
De engem pont, hogy a mutatós megoldás érdekelne. Ennyire azért nem vagyok az elején
De azért kösz a választ ;)
Mutatós megoldás mi lenne?????
-
amargo
addikt
Ha karakter tömbre mutató mutatótba (húú, de szép mondat..) akarsz írni, ahhoz előbb le kell foglalni neki a területet
szerk: el is írtam..
char *i = new char[10];
cin >> i;
//majd
delete[] i;igaz amit Te leírtál, az csak annyi, hogy van egy mutatód, akár ezt is megadhatnád neki:
char *i = 0;
i = (char*)new string;
cin >> i;[ Szerkesztve ]
“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!”
Ú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!
- Google Chromecast Audio - Új és használt darabok
- Motorola Edge 40 8/256gb - Újszerű, akár beszámítással
- Xiaomi Poco X5 Pro 8/256gb - Újszerű akár beszámítással
- Apple iPhone 12 Pro 128gb Gold - Karcos, kis hiba, akku 85%, Yettel függő, akár beszámítással
- Apple Watch 9 45mm Cellular Silver/Storm Blue M/L - Új, bontatlan, garanciális akár beszámítással