- AMD K6-III, és minden ami RETRO - Oldschool tuning
- ROG Strix G16 notebook: tökéletes harmónia
- HDD probléma (nem adatmentés)
- Azonnali VGA-s kérdések órája
- Véget vetne a hibrid magdizájnnak az Intel?
- Fujifilm X
- Milyen monitort vegyek?
- Bluetooth hangszórók
- Apple MacBook
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
Új hozzászólás Aktív témák
-
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; -
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
* 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 -
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. ;)
-
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 ;)
-
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!
-
Benmartin
senior tag
-
-
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 #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...
-
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. -
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
-
-
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?
-
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
-
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.
-
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? -
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. -
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.
-
pigatt
őstag
tárgytalan elkészült!
-
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! -
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;
} -
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
-
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
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
-
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.
-
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 rosszul
köszi előre is;)
-
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.
-
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? -
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); -
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.
-
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); -
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.
-
cafat
aktív 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. -
.DLL
veterán
Üdv! Levelezőn kezdtem C-t tanulni és egy olyan kérdésem lenne hogy milyen függvénnyel lehet karaktert tesztelni, hogy az szám-e vagy betű-e (pl. ahova számot kér a progi ne lehessen kiakasztani betű beírásával.
getch(); esetén elvileg az ASCII kódtábla alapján lehet szűrni hogy csak a 0x30 és 0x39 közötti karaktereket (amik elvileg 0-9-ig a számok) engedje bevinni, de ha scanf( );-el kérek be adatot akkor hogyan lehet ezt megoldani?
Előre is köszönöm a segítséget! -
Nantucket
tag
Nem igazán értjük, pontosan hol akadsz ezzel el. Ha valami konkrét kérdésed van biztos válszol valaki, de ilyen általánosságban senki se fog. Egyébként ilyenkor google szokott a leghasznosabb lenni, használd. Egyébként meg ezt a feladatot printf() scanf() if-else és a Math könyvári függvények nem túl bonyolult kombinációjával meg fogod tudni oldani (max 50 sor), ha vhol elakadsz írj.
-
Janos03
csendes tag
Sziasztok!
Nem rég van programozásunk( borland c++ ), és ennél a feladatnál elakadtam:S hiába nekiülök, nem tudom megcsinálni, légyszives segítsetek!
Előre is köszönöm!Egy K körlemezt a következő adatokkal adunk meg: K(xk,yk,r,), ahol xk és yk a körlemez középpontjának koordinátái, rk pedig a körlemez sugara. Egy tetszőleges P(x,y) pont-ahol x és y a pont koordinátái-rajta van a K körlemezen ha(xk-x)négyzeten+(yk-y)négyzeten<=rknégyzeten
Készítsen programot, amely a billentyúzetről beolvassa két körlemez és egy pont adatait, majd az adatok alapján kiiírja a képernyőre az alábbiak közül a megfelelő állítást:
"A pont egyik körlemezen sincs rajta."
"A pont csak az elsőként megadott körlemezen van rajta."
"A pont csak a máasodikként megadott körlemezen van rajta."
"A pont a megadott körlemezek közös részén található." -
szigisz85
csendes tag
Üdv!
NxN matrix determinánsának meghatározaása! Ezt kell megírnom C++-ban. Kerestem már megoldásokat, de részletesebb valamit nem.
-
kvantum
csendes tag
Sziasztok!
nem tudna valaki egy bios.h-t kuldeni vagy linkelni nekem?
Dev-C++-t hasznalok,es az nem ismeri,neten meg nem igazan talaltam letoltheto verziot.
elore is kosz. -
atm*RefeeZ
tag
válasz
atm*RefeeZ #240 üzenetére
bocsi buta voltam. sima %d volt és nem adtam meg változót,arra írta ki.
-
atm*RefeeZ
tag
hello
ilyen kérdésem lenne,hogy valaki nem tudja-e,hogy mi okoz olyan "hibát",hogy ilyenre
int j;
randomize
j=random(13)+1; (ugye elvileg 1-13 tartományban lennének a számok) j= 1494-et dob ki.ötletek?köszönöm előre is
-
Lortech
addikt
válasz
jancsi881109 #237 üzenetére
-
Lortech
addikt
válasz
jancsi881109 #237 üzenetére
(dupe, törölhető)
[Szerkesztve] -
jancsi881109
tag
Sziasztok!
A segitségetekre lenne szükségem, gépemen Windows Vista op rendszer van, és vmiért nem hajlandó 1 c programot sem lefordítani.. Felraktam már a Dev-c++ -t és a Code:locks nevü progikat is,de egyik sem hajlandó fordítani..
1 ilyen hibaüzivel leáll a progi:
mingw32-g++.exe: no input files
Ez a Vista miatt lehet? Ti tapasztaltatok ilyet? Mi lehet a megoldás?
Üdv Jancsi -
Nowa
csendes tag
Sziasztok! Nem találtam jobb topikot, újat meg nem akartam nyitni: nekem C -ben lenne szükségem némi segítségre.
Ncurses-ben kell írni egy játékprogramot, de sajnos már nem maradt idő arra, hogy rendesen megtanítsák nekünk, ezért kérek segítséget.
Egy amolyan ''légvédelem''-progit kéne írni, ahol csillagok -lehetőleg egyszere több- hullanak lefelé, és egy O -val (ami a célkerszt) kéne levadászni őket, mielőt leesnek (akkor vége). A célkereszt mozgatása megvan, a leeső csillagokkal már nagyobb gondban vagyok, van pár minta-forráskódom (kígyó,pattogólabda), azokból próbálok rájönni hogy mit hogy kell. De hát elég nehézkesen haladok.
A másik egy olyan progi lenne, ahol menüből választhatok matematikai eljárások közül (azokat vágom), csak a menühöz kéne némi segítség, mert az is ncurses-ben van.
Ja, linux alatt futó C-ről van szó!
Előre is köszönök bármilyen segítséget. -
caddie
csendes tag
Nem lenne hatranyos, hogy ha
- leszukidened a kodod a relevans reszekre, nehogy mar nekunk kelljen megfejteni, hogy pontosan mire gondolsz
- egy paste-bin -be betenni es egy linket adni, mert teljesen olvashatatlan igy indentalas nelkuk
Ha ezt megteszed szivesen segitek, addig bocs, de az alabbi behanyt kodra nem szivesen fut ra a tekintetem. -
KMan
őstag
Mi a rakert nem tudok egy tomb i-edik elemet bemasolni egy valtozoba??
mind2 ugyanolyan tipusu. nem jo neki az ertekadas operator??
tomb[ i ].valamit=valamibe;
hulyetkapok.
ki is printelem a valamit, meg a valamibe-t, de a valamibe-re 0.000000 dob... -
nukeleo
csendes tag
Sziasztok!
Ittlenne a kódom: nem tudom miert csak egy sort olvas be a forrásfájlbol, a bufferba? Segitsetek, lehet a beolvas függvényem nem jo, vagy a buff tárolo, nem tudom...
/*csomo felesleg is van most benne amit nem használtam még, tekintsetek el töle*/
THX nagyon elöre is; nukeleo
#include <cstring>
#include <iostream>
#include <fstream>
using namespace std;
class buffer {
char* buff;
int size;
public:
buffer():buff(0),size(0){}
buffer(const buffer&);
buffer& operator=(const buffer&);
buffer& operator+=(const buffer&);
bool operator==(const buffer&);
buffer& buffer:: operator=(const char*);
buffer& buffer:: operator+=( const char*);
bool buffer:: operator==(const char*);
friend void beolvas(buffer &);
friend void kiir(buffer &);
//void beolvas(const char*);
friend ostream& operator<<(ostream& s, const buffer b);
friend istream& operator>>(istream& s, const buffer b);
~buffer(){ delete[] buff; }
};
/*void beolvas(const char* file)
{
fstream fp(file,ios::in);
char *c = new char[500];
fp.close();
fp>>c;
cout<<c;
}
*/
buffer::buffer(const buffer& e)
{
buff=new char[(size=e.size)+1];
if (e.buff)
strcpy(buff,e.buff);
}
buffer& buffer:: operator+=( const char* value)
{
char* temp=new char[size = strlen(buff)+ strlen(value) +1];
strcpy(temp,buff);
strcat(temp, value);
delete[] buff;
buff = temp;
return *this;
}
buffer& buffer:: operator+=(const buffer& e)
{
char* temp=new char[size+=(e.size+1)];
strcpy(temp,buff);
strcat(temp,e.buff);
delete[] buff;
buff=temp;
return *this;
}
buffer& buffer:: operator=(const char* value)
{
delete[] buff;
if( size=strlen(value))
{
buff=new char[size+1];
strcpy(buff,value);
}
return *this;
}
buffer& buffer:: operator=(const buffer& e)
{
if( this!= &e)
{
delete[] buff;
buff=new char[size=e.size];
strcpy(buff,e.buff);
}
return *this;
}
bool buffer:: operator==(const char* value)
{
if(size==strlen(value)) return true;
else return false;
}
bool buffer:: operator==(const buffer& e)
{
if(size==e.size) return true;
else return false;
}
ostream& operator<<(ostream& s, const buffer b)
{
//for(int i=0;i<b.size;++i)
//{
if(b.size)
s<<b.buff;
//}
return (s);
}
int karakterek_szama()
{
fstream fp(''adat.txt'' ,ios::in);
char d;
int k=0;
while(!fp.eof())
{
fp.get(d);
++k;
}
fp.close();
return k;
}
istream& operator>>(istream& s, buffer b)
{
int k=karakterek_szama();
delete[] b.buff;
b.buff=new char[(b.size=k)+1];
for(int i=0;i<b.size;++i)
{
s>>b.buff;
}
return (s);
}
void beolvas(buffer& b)
{
int k=karakterek_szama();
delete[] b.buff;
b.buff=new char[(b.size=k)+1];
fstream fp(''adat.txt'' ,ios::in);
while(!fp.eof())
{
fp.getline(b.buff,b.size);
}
fp.close();
cout<<k;
}
void kiir(buffer& b)
{
fstream fp(''adat2.txt'',ios:ut);
fp<<b.buff;
fp.close();
}
char menu ()
{
char n;
cout<<'' MENU \n\n'';
cout<<''1: File beolvasás \n'';
cout<<''2: Szöveg hozzáadása a fájlhoz \n'';
cout<<''3: Aktualis buffer tartalma\n'';
cout<<''4: Mentés\n'';
cout<<''0: Exit \n'';
cin>>n;
return n;
}
int main(){
char m;
buffer a;
buffer b;
char *c = new char[20];
char *d = new char[500];
while ((m = menu())!= '0')
{
switch (m)
{
case '1':
beolvas(b);
cin.get();
cin.get();
break;
case '2':
cin>>d;
b+=d;
;
break;
case '3':
cout<<b;
cin.get();
cin.get();
break;
case '4':
kiir(b);
break;
}
system (''CLS'');
}
} -
nukeleo
csendes tag
Sziasztok!
A kérdésem az lenne, hogy itt van ez a beolvas függvény:
void beolvas(buffer& b)
{
int k=karakterek_szama();
delete[] b.buff;
b.buff=new char[(b.size=k)+1];
fstream fp(''adat.txt'',ios::in);
while(!fp.eof())
{
fp.getline(b.buff,b.size);
}
fp.close();
}
Hogy kellene módosítani ezt(vagy lehet mást is ajánlani), hogy paraméterként elötte lehetne a fájl nevét bekérdezni, és azt a fájlt
nyitná meg utána????
köszi a válaszokat. -
ktg3
őstag
help pls
-
Jester01
veterán
Elég buta dolog ilyen megkötést adni, hogy az [] operátort kell használni...
Mindenesetre a legegyszerűbb megoldás ha fogsz egy vector<string> változót és szépen beolvasod a sorokat a fájlból. Abban aztán indexelhetsz [] operátorral, beszúrhatsz/törölhetsz és a végén kiírod újra az egészet. -
nukeleo
csendes tag
Hali!
Bocs az elözző üzenetemért, csak nagyon kész vagyok ,mert holnapra kell leadnom a házimat,és ilyenkor szoktam hülyeségeket beszélni!
Az utlsó elötti üzenetemben mar irtam mit szeretnék, de most akkor konkrétabban leírom:
Azt szeretném megcsinálni, hogy egy beolvasott fileban (szöveges) lekérdezni hány sor van, és tudjak beszurni / törölni sorokat a megadott sorba!
Azt az utasítast kaptam hogy : operator[] (indexelő operatort ) használatával!
Ha tudtok vmi függvénnyel segíteni, vagy mar kész progit mutatni, köszönöm! -
-
nukeleo
csendes tag
hali
Azt szeretném , hogy mielott kiirom a fileba az adatokat, törölje ki az adat2.txt -bol ami benne van_???
Hogy lehetne?
void kiir(buffer& b)
{
fstream fp(''adat2.txt'',ios:ut);
fp<<b.buff;
fp.close();
}
THX -
Jester01
veterán
strcmp: <0 =0 >0 értéket add vissza attól függően, hogy az első string kisebb, egyenlő vagy nagyobb mint a második. compare fv-t nem tudom honnan vetted, nincs a feladatban.
strstr igazából az strchr-hez hasonlóan pozíciót kellene visszaadjon mivel a te implementációdban a char*-nak szerintem semmi értelme. -
Jester01
veterán
* Az strcmp az nem boolean visszatérési értékű kellene legyen. Ha a compare viszont igen, akkor az nyugodtan hívhatja az strcmp-t.
* Az strcmp-ben a if (i==s1.elementsNum-1) feltétel elég borzasztó, elég lenne a ciklus után visszaadni igaz értéket
* rendszeresen nem szabadítod fel az előző tartalmat
* hiányzik a lezáró 0 byte a concatenate fvben
* if(not) return false; else return true; ilyet ne csinálj már
* strchr nem mindig ad vissza értéket, de ha igen, akkor biztos, hogy kell a +1 ?
* az strstr gyakorlatilag halvaszületett
Első ránézésre ennyi. -
nukeleo
csendes tag
Sziasztok!
Sürgős segiítség kellene C++-ban:
az a feladatom , hogy egy beolvasott fileban (szöveges) nézzem meg hány sor van, és tudjak beszurni / törölni sorokat a megadott sorba !
Valamint a fájlban tudjak keresni egy megadott szot, és kiirja hogy hanyadik sorban van a keresett szo!
Azt az utasítast kaptam hogy operator[] (indexelő operatort ) használjak!
Aztán még , két txt fájlt tartalmát kiirni egy harmadik fájlba!
ugy hogy használjak egy buffert is!
nagyon köszönöm a válaszokat -
ktg3
őstag
helló
újabb problémába ütköztem
szokásosan nem tudom h hol a hiba...
ez a feladat:
Írd meg az alábbi függvényeket a String osztályban:
strlen(const String& s);
strchr(const String& s, char c);
strcmp(const String& s1, const String& s2);
strstr(const String& s1, const String& s2);
A függvények legyenek statikusak! A működésük egyezzen meg az azonos nevű C könyvtári függvényekével!
itt van fent a kód:[link]
előre is thx -
amargo
addikt
struct matrix
{
int** pData;
int o;
int s;
};
bool GetMatrix(matrix &pMatrix)
{
pMatrix.pData = new int*[ pMatrix.o ];
if(!pMatrix.pData)
return false;
for(int i = 0; i < pMatrix.o; i++)
{
pMatrix.pData[ i ] = new int[ pMatrix.s ];
if(!pMatrix.pData[ i ])
return false;
}
return true;
}//bool GetMatrix(matrix &pMatrix)
Esetleg valami ilyesmire gondoltál csak string.el?
szerk: kimaradt..
main()
{
bool tBool = GetMatrix( pMatrix );
if(!tBool)
{
cout << ''Hiba a matrix letrehozesanal!'' << endl;
return false;
}
ifstream x(filenm.c_str());
if (x.fail()){
cout << ''A megadott fajlt nem talalom!'';
return false;
}
//Beolvassuk/kiírjuk a tömb hosszát
x >> pMatrix.o;
x >> pMatrix.s;
for(int i = 0; i < pMatrix.o; i++)
for(int j = 0; j < pMatrix.s; j++)
x >> pMatrix.pData[ i ][ j ];
}
...
Csak ez szóközzel elválaszotott szanvanként olvassa fel.. tehát amúgy le kell kezelned.
[Szerkesztve] -
manrick
tag
Még egy kérdésem lenne.
Hogyan tudom megcsinálni azt, hogy a fájl sorait egy többdimenziós tömbbe teszem? -
-
Lortech
addikt
A szokásos.
Benneragadt az stdinben egy whitespace (a scanf (''%f'', &tar.ar);)-nek a \n-je), és [ i ] -ket használsz, csak szóköz nélkül, így kiveszi a fórummotor, és már megint csak lestem pár másodpercig. Windózeren működik az, hogy fflush(stdin);-t beraksz a ciklusba az első beolvasás elé. Egyébként ez nem szabványos, az fflush működése az stdin-re nem meghatározott.
Ja meg a kiíratást túlindexeled, 1-gyel több rekordot iratnál ki, mint amit bekértél.
[Szerkesztve] -
manrick
tag
Sziasztok.
Gyakorolok a pénteki vizsgára, és a következő kis programot írtam:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSZAM 3
struct book {
char nev[20];
char cim[40];
int ev;
float ar;
};
main() {
struct book tar[MAXSZAM];
int i=0,j;
clrscr();
while (i!=2)
{
printf (''\nKérem a könyv szerzőjét: ''); gets (tar.nev);
printf (''\nKérem a könyv címét: ''); gets (tar.cim);
printf (''\nKérem a kiadás évét: ''); scanf (''%d'', &tar.ev);
printf (''\nKérem a könyv árát: ''); scanf (''%f'', &tar.ar);
i++;
}
printf(''\nA tárolt adatok:\n'');
for (j=0; j<MAXSZAM; j++)
{
printf(''\n\nA %d könyv adatai:\n'', j+1);
printf(''Az író: %s\n'', tar[j].nev);
printf(''Címe: %s\n'', tar[j].cim);
printf(''Kiadás éve: %4d\n'', tar[j].ev);
printf(''Ár: %5.2f'', tar[j].ar);
}
getch();
}
A program fut is, feltöltéskor 1. alkalommal szépen kéri az adatokat, de 2. alkalommal már nem kéri a szerzőt, hanem egyből ugrik a címre. Miért?
tudna valaki segíteni?
Köszi szépen
Manrick -
Lortech
addikt
Én találjam ki hogy mit akarsz?
''ezzel probaltam meg kiiratni de semmi. ''
Kiiratni vissza a képernyőre, vagy kiírni a fájlba, vagy mit akartál? Mi az hogy de semmi?
fprintf -nek megadtad a fpontok FILE streamet, így a formátumnak megfelelő adatokat kiírja a fájlba, feltéve ha leveszed a &-t, ahogy mondtam.. Hogy utána mit csinálsz az megint más kérdés. De minek olvastatod vissza a programmal, miért nem nézed meg egyszerűen, hogy mi lett a fájlban?
Nehéz kiigazodni rajtad.
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Hardcore café
- Goddess of Victory: Nikke
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Kerékpárosok, bringások ide!
- Gyúrósok ide!
- E-roller topik
- Motoros topic
- ROG Strix G16 notebook: tökéletes harmónia
- Az új Battlefield bemutatkozása közelebb lehet mint hinnénk
- HDD probléma (nem adatmentés)
- További aktív témák...
- OHH! HP EliteBook 850 G8 Fémházas Multimédiás Laptop 15,6" -65% i7-1185G7 16/512 Iris Xe FHD EU/HUN
- Szép! HP EliteBook 850 G8 Fémházas Multimédiás Laptop 15,6" -65% i7-1185G7 32/512 Iris Xe FHD EU/HUN
- Intel Xeon Gold 6146 / 12 mag / 24 szál / 24.75M Cache, 3.20 GHz / 4.20GHz Turbó / Beszámítás OK!
- Apple Macbook Air 2017 olcsón
- Vegyes SAS 400gb ssd-k, hibátlan szektorokkal. 1db új 960gb
- HATALMAS AKCIÓK / MICROSOFT WINDOWS 10,11 / OFFICE 16,19,21,24 / VÍRUS,VPN VÉDELEM / SZÁMLA / 0-24
- Kingmax 1x2GB DDR2 800 RAM eladó
- BESZÁMÍTÁS! 32GB (2x16GB) Kingston FURY Beast RGB 6000MHz DDR5 CL30 memória 27% 3 év garancia
- Apple iPhone 12 Pro 128GB Kártyafüggetlen 1Év Garanciával
- Bomba ár! Lenovo X1 Yoga 1st - i7-6G I 8GB I 256SSD I 14" WQHD I HDMI I W10 I CAM I Garancia!
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest