Hirdetés
- gban: Ingyen kellene, de tegnapra
- Rap, Hip-hop 90'
- Gurulunk, WAZE?!
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Brogyi: CTEK akkumulátor töltő és másolatai
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Magga: PLEX: multimédia az egész lakásban
- droidic: Windows 11 önállóság nélküli világ: a kontroll új korszaka
Új hozzászólás Aktív témák
- 
			
			  WonderCSabo félisten 
- 
			
			  j0k3r! őstag válasz  Jester01
							
							
								#797
							
							üzenetére Jester01
							
							
								#797
							
							üzenetéresetlocale(LC_ALL,"Hun"); - ebben en sem vagyok biztos, ezert a vegen kiszedtem a kodbol numberofstars - teljesen igazad van ez inkabb numberofnotstars vagy numberofpoints if(numberoftips<=10 && numberofstars==unknownlength) - ezt nem teljesen ertem azert nem numberoftips<10 -et irtam, mivel ha az user pont 10. tippre talalja ki, akkor is mukodjon system("pause"); - ezt pont a tanar mutatta, hogy ne szalljon el futtatas utan a win32 console application, ergo latod, hogy nyertel-e vagy sem +1: kellene egy #include <cstdlib> a (s)rand miatt. - mostmar ezt is tudom es koszonom az epito jellegu kritikat! 
- 
			
			  Jester01 veterán Háááát, ha egyszer úgyis 1000 elemű fix méretű tömbbe olvasol, akkor aztán tök mindegy utána mit varázsolsz. Totál felesleges átmásolni egy másik (immár megfelelő méretű) tömbbe. setlocale(LC_ALL,"Hun"); ebben nem vagyok olyan biztos, hogy működik. Nálam tuti nem. Persze ha nem is ellenőrzöd a visszatérési értéket akkor sose tudod meg. numberofstars ez jó félrevezető változónév az imperialista kémek megtévesztésére ... mivelhogy még véletlenül sem a csillagokat számolja. if(numberoftips<=10 && numberofstars==unknownlength) itt szerény véleményem szerint mindenképp numberoftips<=10 system("pause"); ezért, ha én tanár lennék, azonnal egyest adnék... +1: kellene egy #include <cstdlib> a (s)rand miatt. 
- 
			
			  j0k3r! őstag válasz  WonderCSabo
							
							
								#794
							
							üzenetére WonderCSabo
							
							
								#794
							
							üzenetérenem nem fagyott ki, data.txt mindig volt, csak kicsit felreerthetoen irtam az "elso" do while ciklust. 
 itt a 'vegleges'
 ha vektort hasznaltam volna, az miben egyszerusitette volna meg a munkamat?
 es megegyszer koszonom mindenkinek, aki segitett.
- 
			
			  j0k3r! őstag hello megint! valaki ranezne erre, hogy miert szall el az elso do while utan? (ha valaki kiprobalna, akkor az adatatok a data.txt-ben vannak soronkent 1 szo) 
 elore is koszonom.
- 
			
			  j0k3r! őstag válasz  WonderCSabo
							
							
								#788
							
							üzenetére WonderCSabo
							
							
								#788
							
							üzenetérenem gyozom megkoszonni! igen, akasztofa : ) 
 holnap remelem befejezem, szerdara kell a sracnak, nem holnapra.
- 
			
			  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
 }
 }
- 
			
			  j0k3r! őstag na lassan csak kesz lesz. 
 inkabb leirom a teljes feladatot.
 szoval txt-ben szavak -> szavakat beolvas -> kivalasztok veletlenszeruen egy szot -> ahany betu, annyi *-ot kiirok -> aztan 10et tippelhet az userpl az adott szo barack: ****** 
 es a tipp 'a' betu volt akkor: *a*a** igy kell modositanom, mindaddig mig ki nem talaljak, vagy le nem telik a 10 'esely'namost mar megvan a random resze, megvan a random szo, kiirja a megfelelo szamu csillagot, csak ott akadtam el, hogy hogy tudom a bekert betut egyesevel vegigellenorizni az adott indexu vector karakterein? 
- 
			
			  Jester01 veterán Az alap operator>> az éppenséggel benyel mindenféle szóközt (whitespace). Most akkor tuti, hogy vectort nem szabad használni? Mert azzal kb ennyi az egész: #include <fstream> 
 #include <iostream>
 #include <string>
 #include <vector>
 using namespace std;
 int main()
 {
 ifstream file("teszt.txt", ios::in);
 if(!file.good())
 {
 cout<<"Hiba a fajllal...";
 return 1;
 }
 vector<string> words;
 while(file.good())
 {
 string word;
 file >> word;
 words.push_back(word);
 }
 for(int i = 0; i < words.size(); i++)
 {
 cout <<"i: "<< i <<".: " << words[i] << endl;
 }
 return 0;
 }
- 
			
			  Sk8erPeter nagyúr Ezt könnyű megoldani, csináld azt, hogy az if(c==' ') count++; rész után tegyél egy nagy else blokkot, a következőképpen: 
 if(c==' ') count++; //szóközt kaptunk, növelünk, következő helyre tároljuk a szót
 else{
 if(count<default_size){ //még beleférünk
 words[count].push_back(c);
 }
 else{ //nyújtózkodunk
 //........
 //........
 }
 }És ezzel elvileg jó.  
- 
			
			  j0k3r! őstag mostmar szokozzel is mukodik, en voltam a hibas, mivel enterekkel voltak elvalasztva a szavak, nem pedig szokozzel  
 Sk8erPeter ismet 
 mar csak egyetlen szepseghibaja van, hogy az elso szo kivetelevel minden szo elso karaktere szokoz : )
 nincs valami parancs, ami ha szokozt lat eldobja a karaktert? (ignore vagy valami ilyesmi)
- 
			
			  j0k3r! őstag válasz  Sk8erPeter
							
							
								#779
							
							üzenetére Sk8erPeter
							
							
								#779
							
							üzenetérekoszonom szepen! 
 futas kozbe neztem lepesrol lepesre es nalam 1 gond van:
 if(c==' ') count++;
 ez a feltetel sosem teljesul be, ergo count 0 marad es 1 hosszu stringbe osszefuzi oket szokozzel elvalasztva :/ sot a vegen a kiiratasnal hiaba van 1 hosszu stringben az egesz meg azt se irja ki :/szerk: viszont ha ponttal valasztom el oket, akkor elvalasztja a szavakat! 
- 
			
			  Sk8erPeter nagyúr Ja bocsi, az elkerülte a figyelmem, hogy az a lényeg, hogy szavanként tárold el. 
 Az sem túl nehéz, akkor meg csináld azt, hogy mondjuk sima string helyett string*-ot használsz.Írtam egy példát, bevallom, nem igazán néztem át, hogy helyes-e, és mivel láttam, hogy sürgős, elég gyorsan írtam, így lehetnek benne hibák, mindenesetre kipróbáltam, és működik. 
 Az eredeti példa analógiájára csináltam, de kissé átalakítva.Így néz ki: // string::push_back 
 #include <iostream>
 #include <fstream>
 #include <string>
 using namespace std;
 int main ()
 {
 ifstream file ("teszt.txt",ios::in);
 if( !file.good() ){ //Fájlpara
 cout<<"Hiba a fajllal...";
 }
 else //OK
 {
 string* words;
 const int default_size=100; //kezdetben pl. 100 méretű tömböt hozunk létre
 words=new string[default_size];
 int size=default_size; //eltároljuk az alapértelmezett (kezdő)méretet, ha kell, növelünk
 int count=0; //hol tartunk a tömbben? (egyszerűbb nyilvántartani)
 while( file.good() ) //countot majd a cikluson belül növeljük
 {
 char c=file.get();
 if(c==' ') count++; //szóközt kaptunk, növelünk, következő helyre tároljuk a szót
 if(count<default_size){ //még beleférünk
 words[count].push_back(c);
 }
 else{ //nyújtózkodunk
 //pl. duplázzuk a kezdőméretet
 string* tmp=new string[size*2]; //átmeneti változó, kétszeres kezdőmérettel
 for(int uj=0;uj<count;uj++){ //csak count-ig van értelme menni, csak addig töltöttük fel
 tmp[uj]=words[uj];
 }
 size*=2; //duplázzuk
 tmp[count].push_back(c);
 delete[] words; //töröljük az eredeti adatait
 words=tmp; //végül belemásoljuk a nyújtott mérettel
 }
 }
 for(int i=0;i<count;i++){
 cout <<"i: "<<i<<".: "<< words[i] << endl;
 }
 }
 return 0;
 }
- 
			
			  j0k3r! őstag válasz  WonderCSabo
							
							
								#777
							
							üzenetére WonderCSabo
							
							
								#777
							
							üzenetéreszavankent rakja bele egy string tombbe? 
- 
			
			  j0k3r! őstag up! 
- 
			
			  j0k3r! őstag nem is kellett olyan sokat varni...  
 ez a megoldas jol mukodik:
 // string::push_back
 #include <iostream>
 #include <fstream>
 #include <string>
 using namespace std;
 int main ()
 {
 string str;
 ifstream file ("test.txt",ios::in);
 while (!file.eof())
 {
 str.push_back(file.get());
 }
 cout << str;
 return 0;
 }de mivel karakterenkent menti el, nem pedig szavankent, ezert nem jo nekem. 
 get helyett getline meg nem mukodik, vagy valamit rosszul csinaltam :/
 (a txt fileban soronkent vannak irva a szavak)
- 
			
			válasz  Sk8erPeter
							
							
								#772
							
							üzenetére Sk8erPeter
							
							
								#772
							
							üzenetéreA fajlmeret-beolvasas nem mukodik - gondolom szavankent kell belerakni a tombbe, azt meg elore nem tudja, hogy hany szo van. 
- 
			
			  j0k3r! őstag emvy, Sk8erPeter nagyon szepen koszonom a segitseget! 
 majd jelentkezem, ha elakadok : )
- 
			
			  Sk8erPeter nagyúr Akár úgy is megoldhatod, ahogy itt szerepel: istream::read - C++ Reference // read a file into memory 
 #include <iostream>
 #include <fstream>
 using namespace std;
 int main () {
 int length;
 char * buffer;
 ifstream is;
 is.open ("test.txt", ios::binary );
 // get length of file:
 is.seekg (0, ios::end);
 length = is.tellg();
 is.seekg (0, ios::beg);
 // allocate memory:
 buffer = new char [length];
 // read data as a block:
 is.read (buffer,length);
 is.close();
 cout.write (buffer,length);
 delete[] buffer;
 return 0;
 }Viszonylag primitív (de végül is célravezető) megoldás, a fájl végére ugrik, így tudja meg a fájl méretét, ennek megfelelő helyet foglal, majd vissza az elejére, és elkezdi a beolvasást fájl végéig. De emvy megoldás-javaslata is tökéletes. --------------------------------------------------------------------------------------------- 
 Szerk.:
 (#771) j0k3r!
 persze, a string típus is teljesen jó. PÉLDA: 
 string::push_back// string::push_back 
 #include <iostream>
 #include <fstream>
 #include <string>
 using namespace std;
 int main ()
 {
 string str;
 ifstream file ("test.txt",ios::in);
 while (!file.eof())
 {
 str.push_back(file.get());
 }
 cout << str;
 return 0;
 }Sokkal rövidebb is a kód. 
- 
			
			  j0k3r! őstag hello! egy nagyon egyszeru kerdesem lenne, megsem tudok rajonni. 
 a feladat az, hogy olvassak be txt-bol szavakat, es taroljam el oket egy tombben.
 a gondom az, hogy ki van kotve, hogy nem "tudhatom" elore, hogy hany adatbol all a txt, ezert is gondoltam dinamikus tombre, megsem mukodik :/a kodom: #include <iostream> 
 #include <fstream>
 using namespace std;
 void main ()
 {
 int x=0;
 char *szavak;
 szavak= new char[];
 ifstream be("adatok.txt");
 if(!be)
 {
 cerr<<"hiba a filemegnyitas soran";
 }
 else
 {
 do
 {
 be.read(szavak[x],15);
 x++;
 }
 while (!be.eof());
 be.close();
 }
 for (int i=0;i<x;i++)
 {
 cout<<szavak[i]<<endl;
 }
 }havernak csinalom a hazifeladatat, ami holnapra kellene neki. 
 nagyon megkoszonnem, ha valaki tudna segiteni.
- 
			
			
- 
			
			  Mr. Teddy őstag válasz  Sk8erPeter
							
							
								#766
							
							üzenetére Sk8erPeter
							
							
								#766
							
							üzenetéreNa szal félreértjük egymást. 
 Szal úgy növelem meg, hogy átírom az értéket, majd újrafordítom.
 Tehát Char[100]-al megy, Char[200]-al nem. Persze nem 100-as mértéken fagy ki, hanem ilyen 1000000 nagyságban. Stack overflow hiba...
- 
			
			  Mr. Teddy őstag válasz  Sk8erPeter
							
							
								#764
							
							üzenetére Sk8erPeter
							
							
								#764
							
							üzenetéreÚgy hozom létre, hogy unsigned char [100000]; 
 Első körben fix nagy tömbre van szükségem, szal nem akarom dinamikusan növelni.
 Jó lenne kb 1MB adat tárolására képes tömböt létrehozni.
- 
			
			  Sk8erPeter nagyúr válasz  Mr. Teddy
							
							
								#763
							
							üzenetére Mr. Teddy
							
							
								#763
							
							üzenetéreNem ártott volna, ha leírod, milyen módon hoztad most létre a tömbödet.  
 Hogyan növeled a méretét? Dinamikusan kezeled, nyújtózkodó tömbről van szó?Amúgy ha string osztályt használsz az #include <string> után, akkor azzal elég kényelmesen tudsz dinamikusan hozzápakolászni elemeket, pl. egy string * buffer változóba (feladattól függően simán string buffer is elég (* nélkül) ), és azon is ugyanúgy végig tudsz rohangászni indexeléssel. 
 Itt vannak az elérhető függvények: string class, itt meg példa pl. a hozzáfűzésre: append.
- 
			
			  Mr. Teddy őstag Sziasztok! 
 Az volna most a problémám, hogy egy unsigned char tömböt használok puffernek, miután olvasok hálózatról bájtokat.
 Az a baj, hogyha megnövelem a méretét, kifagy a program. Mitől lehet ez, vagy mit tudtok javasolni, hogy csináljak kellően nagy buffert? Eddig a tömb indexeivel szépen körbe tudtam járni a bufferem, keresgélni ami kell nekem, csak ilyesmi buffer féle lenne jó.
 Köszi
- 
			
			  Jester01 veterán válasz  Tuostein
							
							
								#758
							
							üzenetére Tuostein
							
							
								#758
							
							üzenetéreIgen, ott a hiba. 
 Program received signal SIGSEGV, Segmentation fault.
 0x0000000000400cca in keres (n=@0x7fff4645dc2c, m=@0x7fff4645dc28, k=0x18960b0, min=0x0, kutya=0x0) at t.cpp:118
 118 if (kutya[i-1][j-1]<=min[j-1]) {Innen rögtön látszik mi a baj: a min és a kutya paraméter is 0. Ha közelebbről megnézed, az is kiderül miért: mert a beolvas függvény az érték szerinti átadásból következően nyilván nem módosítja a main-ben lévő változókat. 
 Egyébiránt ezt a fordító (gcc) nekem jelzi is:
 t.cpp:15: warning: 'max' is used uninitialized in this function
 t.cpp:15: warning: 'min' is used uninitialized in this function
 t.cpp:15: warning: 'kutya' is used uninitialized in this functionHa ezeket referenciaként adod át már jobb lesz a helyzet, ekkor működni is látszik a programod  
- 
			
			  Tuostein csendes tag Sziasztok! 
 Van egy beadandóm és valamiért nem akar lefutni, hibát nem dob ki, csak simán kiakad! CodeBlocks-ban írom... tudom van jobb is... a debuggal arra jutottam hogy megakad a keres fgv-ben az if-es sorban. legalábbis oda rakta a sárga nyilat a debug..
 A feladat: "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 maximum MAX(I) pont adható (nem negatív egész szám). Az összetett versenybő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észítsen C++ programot, amely megadja azt a kategóriát, ahol a legkevesebb kieső volt!"
 És a kód:
 #include <iostream>
 using namespace std;
 void beolvas(int&, int&, int*, int*, int**);
 void keres(int&, int&, int*, int*, int**);
 void kiir(int&, int&, int*);
 int main()
 {
 int n,m;
 cout << "Kutyaszepsegverseny" << endl << endl;
 int *min, *max, *k;
 int** kutya;
 beolvas(n,m,max,min,kutya);//ellenőrzött beolvasás
 k = new int[m];
 keres(n,m,k,min,kutya);//legkevesebb kieső keresése
 kiir(n,m,k);//az összes legkevesebb kieső kiírása
 return 0;
 }
 void beolvas(int &n, int &m, int* max, int* min, int** kutya){
 bool rossz=true;
 string temp;
 do {
 cout << "Hany kutya szerepel (1-...): ";
 cin >> n;
 if (cin.fail()) {
 cout << "Nem szamot adott meg!" << endl << "Adjon meg egy pozitiv egesz szamot!" << endl;
 rossz=true;
 }else {
 rossz= (n<1);
 if (rossz) {
 cout << "Helytelen erteket adott meg!" << endl << "Adjon meg egy pozitiv egesz szamot!" << endl;
 }
 }
 cin.clear(); getline (cin,temp,'\n');
 }while (rossz);//kutyák számának (n) ellenőrzött beolvasása
 do {
 cout << endl <<"Hany szempontot pontoznak (1-...): ";
 cin >> m;
 if (cin.fail()) {
 cout << "Nem szamot adott meg!" << endl << "Adjon meg egy pozitiv egesz szamot!" << endl;
 rossz=true;
 }else {
 rossz= (m<1);
 if (rossz) {
 cout << "Helytelen erteket adott meg!" << endl << "Adjon meg egy pozitiv egesz szamot!" << endl;
 }
 }
 cin.clear(); getline (cin,temp,'\n');
 cout << endl;
 }while (rossz);//szempontok számának (m) ellenőrzött beolvasása
 max = new int[m];
 for (int i=1; i<=m; i++){
 do{
 cout << i << ". szempont maximum ponthatara (2-...): "; cin >> max[i-1];
 if (cin.fail()) {
 cout << "Nem szamot adott meg!" << endl << "Adjon meg egy kettonel nagyobb egesz szamot!" << endl;
 rossz=true;
 }else {
 rossz= (max[i-1]<2);
 if (rossz) {
 cout << "Helytelen erteket adott meg!" << endl << "Adjon meg egy kettonel nagyobb egesz szamot!" << endl;
 }
 }
 cin.clear(); getline (cin,temp,'\n');
 }while (rossz);
 }//szempontok maximum ponthatára
 min = new int[m];
 for (int i=1; i<=m; i++){
 do{
 cout << i << ". szempont minimum ponthatara (0-" << max[i-1]-1 << "): "; cin >> min[i-1];
 if (cin.fail()) {
 cout << "Nem szamot adott meg!" << endl << "Adjon meg egy nem negativ szamot (0-" << max[i-1]-1 << ")!" << endl;
 rossz=true;
 }else {
 rossz= ((min[i-1]<0) || (min[i-1]>=max[i-1]));
 if (rossz) {
 cout << "Helytelen erteket adott meg!" << endl << "Adjon meg egy nem negativ szamot (0-" << max[i-1]-1 << ")!" << endl;
 }
 }
 cin.clear(); getline (cin,temp,'\n');
 }while (rossz);
 }//szempontok minimum ponthatára
 kutya = new int*[n];
 for (int i=1; i<=n; i++){
 kutya[i-1] = new int[m];
 }
 for (int i=1; i<=n; i++){
 for (int j=1; j<=m; j++){
 do{
 cout << i << ". kutya " << j << ". szempontra kapott pontja (maximum: " << max[j-1] << "): "; cin >> kutya[i-1][j-1];
 if (cin.fail()) {
 cout << "Nem szamot adott meg!" << endl << "Adjon meg egy nem negativ szamot (0-" << max[j-1] << ")!" << endl;
 rossz=true;
 }else {
 rossz= ((kutya[i-1][j-1]<0) || (kutya[i-1][j-1]>max[j-1]));
 if (rossz) {
 cout << "Helytelen erteket adott meg!" << endl << "Adjon meg egy nem negativ szamot (0-" << max[j-1] << ")!" << endl;
 }
 }
 cin.clear(); getline (cin,temp,'\n');
 }while (rossz);
 }
 }
 }
 void keres(int &n, int &m, int* k, int* min, int** kutya){
 for (int j=1; j<=m; j++){
 k[j-1]=0;
 for (int i=1; i<=n; i++){
 if (kutya[i-1][j-1]<=min[j-1]) {
 k[j-1]=k[j-1]+1;
 }
 }
 }
 }
 void kiir(int &n, int &m, int* k){
 int v=n;
 for (int i=1; i<=m; i++){
 if (k[i-1]<v) {
 v=k[i-1];
 }
 }
 if (v==0) {
 for (int i=1; i<=m; i++){
 if (k[i-1]==v) {
 cout << i <<". szempont szerint nem volt kieső kutya!" << endl;
 }
 }
 }else {
 for (int i=1; i<=m; i++){
 if (k[i-1]==v) {
 cout << i <<". szempont szerint volt a legkevesebb kieső kutya!" << endl;
 }
 }
 }
 }Nagyon megköszönném a segítségeteket, mert már semmi ötletem sincs hogy miért nem megy! 
 üdv: Péter
- 
			
			  Sk8erPeter nagyúr Hali! 
 Az eredeti kód azért nem fordul, mert void visszatérési értékű a getParameter() függvényed a Gift osztályban, ami miatt a cout elszáll.
 Ezt megoldhatod úgy, hogy inkább double visszatérési értékűvé változtatod:
 double getParameter(){ return 0; }; /// void getParameter(){} helyettDe ennél a kiíratást egyszerűbben oldanám meg, mondjuk lehetne minden osztálynak egy void print() művelete, ami épp a feladat által kiírt tulajdonságokat írná ki. Egy lehetséges példa a Te feladatodra vonatkozóan: 
 -a Gift osztályban deklarálj egy
 virtual void print();
 függvényt, az összes többi osztályban pedig egy sima (nem virtuális)
 void print();
 függvényt.
 -maga a megvalósítás pedig a következőképpen nézhetne ki (csak egy lehetséges megoldás, lehetne rajta bőven csiszolni, de gyorsmegoldásként szerintem megfelel):using namespace std; 
 void Gift::print()
 {
 cout << "Weight: " << baseWeight << endl;
 cout << "Quantity: " << db << endl;
 }
 void ColoredEgg::print()
 {
 cout << "Name: Colored Egg" << endl;
 cout << "Quantity: " << getWeight() << endl;
 //Paraméter:
 char colours[4][7] = { "RED", "GREEN", "BLUE", "VIOLET" };
 cout <<"Color: "<< colours[colour] << endl;
 }
 void ChocolateFigure::print()
 {
 cout << "Name: Chocolate Figure" << endl;
 cout << "Quantity: " << getWeight() << endl;
 //Paraméter:
 std::cout <<"Melting Point: "<< MeltingPoint << endl;
 }
 void Candy::print()
 {
 cout << "Name: Candy" << endl;
 cout << "Quantity: " << getWeight() << endl;
 //Paraméter:
 char quality_names[4][5] = { "HARD" , "SOFT" };
 std::cout <<"Quality: "<< quality_names[quality] << endl;
 }-Ezenkívül szerintem a destruktort a Gift osztályban virtuálissá kellene tenned, hogy ne legyen memóriaszivárgás: virtual ~Gift() {} A Testing.cpp-ben pedig a for ciklus akkor ez alapján a következőképpen nézhetne ki (a többi rendben van): for (int i = 0; i < 3; i++) // kiíratjuk 
 {
 cout << "************************" <<endl; //csak az elválasztás kedvéért
 Present[i]->print();
 }
- 
			
			  Mr. Teddy őstag Sziasztok! 
 Egy conosle applicationt szeretnék grafikus felülettel megáldani. Lényegébe a graf felhasználói felületen csak indulóparamétereket kérnék be, amivel majd fog futni a program.
 Próbáltam windows form-ban a meglévő kódomat alkalmazni, de van pár hely ahol hibát dob, mert nem managed kódban történtek a dolgok (ilyen pl.egy új szál indítása).Megoldható e úgy a dolog, hogy a meglevő programomból egy függvényt csinálok, majd lefordítom DLL-be? Majd ezt a DLL-t felhasználni a windows form programban a megfelelő paraméterek meghívása után? 
- 
			
			  papa019 senior tag Sziasztok! Van egy új problémám. :S A feladat szövege: Írjunk C++ programot a következő feladatra: 
 A Húsvéti Nyúl háromfajta ajándékot (Gift) oszt:
 színes tojást (ColoredEgg),
 csokitfigurát (ChocolateFigure),
 cukrot (Candy).
 Mindegyik különböző súlyú, az alapegység egy statikus változója az alaposztálynak (baseWeight=10).
 A színes tojás súlya darabonként ennek konstansszorosa (eggFactor=9), míg a csoki esetében ez a tényező chocolateFactor=10.5, a cukornál candyFactor=13.2.
 A Nyúlnak írt programunk egy tömbben tartja nyilván a kiosztott ajándékokat. Az egyes ajándékok darabszámot is tartalmaznak. A színes tojásnál saját paraméterként nyilvántartjuk még a színt (RED, GREEN, BLUE, VIOLET), a csokifiguránál az olvadáspontot (MeltingPoint), a cukorkánál a minőséget (HARD, SOFT). A célunk kiszámolni és kiírni az egyes ajándékok súlyát (getWeight()).
 a) Implementáljuk az osztályokat és konstansokat az EasterBunny névtérben figyelve arra, hogy esetlegesen egyes konstansokat is tagként vagy statikus tagként érdemes implementálni. Ne legyen egy függvénytörzsben sem felesleges, nem használt kód! Egy új ajándéktípus esetleges felvételéhez ne kelljen a már meglévő osztályokat módosítani!
 b) Írjon egy egyszerű programot (nem dinamikus tömbbel!), ami megmutatja legalább három különböző típusú ajándék felvételét, valamint kiírja a nevüket a súlyukat és a paraméterüket.A nem működő megoldásom az alábbi linkeken látható: 
 Headers.h
 http://pastebin.com/YWd9tYSb
 Functions.cpp
 http://pastebin.com/hYSd5Vu3
 Testing.cpp
 http://pastebin.com/6SveRAWVA problémáim: - A Testing.cpp fájlban létrehozott tömböm elemeinek neveit miként tudom kiírni a for ciklusban? 
 - Az alosztályok egyedi paramétereit hogy tudnám kiírni?
 Az általam használt módszer igazábból már ott "megbukott", hogy a getParameter függvényt kéri a Gift osztályba is, de oda a feladat kritériumai szerint nem tehetem be. Ezen megoldásomban még benne van, de itt az ostream ír hibát.Kérlek segítsetek. 
 Előre is köszönöm.
 Üdvözlettel: Papa
- 
			
			  papa019 senior tag Oké, köszi. 
- 
			
			  Sk8erPeter nagyúr Legközelebb azért az ilyen hosszúakat légyszi a pastebin.com-ra, vagy a pastie.org-ra copy-paste-eld, ezeken az oldalakon szépen kiemeli a szintaktikát is (ha bejelölöd, hogy pl. C++ nyelvű forráskód), és így könnyebb áttekinteni, mint itt a PH-n.  Ja, és ide csak dobd be a linket, amit kapsz a bemásolás után. Ja, és ide csak dobd be a linket, amit kapsz a bemásolás után.
- 
			
			  papa019 senior tag válasz  Jester01
							
							
								#748
							
							üzenetére Jester01
							
							
								#748
							
							üzenetéreKöszi, rengeteget segítettél, kijavítottam az általad említett hibákat. 
 A Vector.h-ban a 2. paraméter elé odaírtam a const-ot, illetve beírtam az os<<' '<<v.at(i).print(os); sort is.Nekem viszont nem fordul és ezt írja ki: "d:\egyetem\2. félév\programozás alapjai 2\khf\7.hazi\7\7\vector.cpp(127) : error C2662: 'HomeMadeString::String::print' : cannot convert 'this' pointer from 'const HomeMadeString::String' to 'HomeMadeString::String &'" 
- 
			
			  Jester01 veterán Neked igen érdekes hibát dob a fordító, az enyém az "érthetően" megmondja mi a baj: Vector.cpp:127: error: no match for 'operator<<' in 'std:  perator<< [with _Traits = std::char_traits<char>](((std::basic_ostream<char, std::char_traits<char> >&)((std: perator<< [with _Traits = std::char_traits<char>](((std::basic_ostream<char, std::char_traits<char> >&)((std: stream*)os)), 32) << ((const Vector*)v)->Vector::at(i)' stream*)os)), 32) << ((const Vector*)v)->Vector::at(i)'Magyarul, a Vector-t kiíró operator<< a String-et kiíró operator<< függvényt szeretné hívni, csakhogy ilyen nincs. Van helyette viszont String::print, szóval ez jobb: os<<' '; v.at(i).print(os); Ehhez még szükséges a String::print const-tá alakítása, illetve a Vector.h-ban az operator<< prototípusát is javítani kell mert nem egyezik az implementációval. Ha ez mind megvan, akkor már fordul, csak nem működik  Felhívom a figyelmed továbbá, hogy a string konstansok azok bizony konstansok, tehát const char* típusúak. 
- 
			
			  papa019 senior tag Sziasztok. 
 Van egy hatalmas problémám. :SStringekből (osztály) álló vektor osztályt kellett készítenünk. 
 Minden megy szuperül egy dolgot kivéve://using namespace std; 
 ostream & operator << (ostream& os, const Vector &v)
 {
 for(unsigned int i=0;i<v.elementNum;i++)
 {
 os<<' '<<v.at(i);
 }
 return os;
 }Így olyan hibákat dob ki a rendszer, hogy: 1>d:\egyetem\2. félév\programozás alapjai 2\khf\7.hazi\7\7\vector.cpp(124) : error C2143: syntax error : missing ';' before '&' 
 1>d:\egyetem\2. félév\programozás alapjai 2\khf\7.hazi\7\7\vector.cpp(124) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
 1>d:\egyetem\2. félév\programozás alapjai 2\khf\7.hazi\7\7\vector.cpp(124) : error C2065: 'os' : undeclared identifier
 1>d:\egyetem\2. félév\programozás alapjai 2\khf\7.hazi\7\7\vector.cpp(124) : error C2059: syntax error : 'const'
 1>d:\egyetem\2. félév\programozás alapjai 2\khf\7.hazi\7\7\vector.cpp(125) : error C2143: syntax error : missing ';' before '{'
 1>d:\egyetem\2. félév\programozás alapjai 2\khf\7.hazi\7\7\vector.cpp(125) : error C2447: '{' : missing function header (old-style formal list?)
 Ha a namespace nincs kikommentezve, akkor pedig egy nagyon hosszú hibasort, mely az ostream-re mutat...A forráskódok: Vector.cpp: 
 #include <limits.h>
 #include <assert.h>
 #include <iostream>
 #include "Vector.h"
 #include "string.h"
 using namespace HomeMadeString;
 Vector::Vector(const Vector& theOther)
 {
 pData=NULL;
 *this=theOther;
 }
 void Vector::clear()
 {
 elementNum=0;
 delete [] pData;
 }
 void Vector::erase(unsigned int position)
 {
 assert(position<elementNum);
 if(elementNum==1)
 {
 delete []pData;
 pData=NULL;
 elementNum=0;
 return;
 }
 elementNum--;
 String* pTemp=new String[elementNum];
 for(unsigned int i=0, j=0;i<elementNum+1;i++,j++)
 {
 if(i==position)
 {
 j--;
 }
 else
 {
 pTemp[j]=pData[i];
 }
 }
 delete[] pData;
 pData=pTemp;
 }
 String& Vector::at(unsigned int position)
 {
 assert(position<elementNum);
 return pData[position];
 }
 const String& Vector::at(unsigned int position)const
 {
 assert(position<elementNum);
 return pData[position];
 }
 bool Vector::insert(unsigned int position, String element)
 {
 if(elementNum==UINT_MAX)
 {
 return false;
 }
 if(position<elementNum)
 {
 String* pTemp=new String[elementNum+1];
 for(unsigned int i=0,j=0;i<elementNum;i++,j++){
 if(j==position){
 pTemp[i]=element;
 j--;
 }
 else pTemp[i]=pData[j];
 }
 delete[] pData;
 pData=pTemp;
 elementNum++;
 }
 else{
 String* pTemp=new String[position+1];
 for(unsigned int i=0;i<=position;i++){
 if(i<elementNum)pTemp[i]=pData[i];
 else{
 if(i==position)pTemp[i]=element;
 else pTemp[i]=0;
 }
 }
 delete[] pData;
 pData=pTemp;
 elementNum=position+1;
 }
 return true;
 }
 String & Vector::operator [](unsigned int position)
 {
 return at(position); // Miért nem return pData[position]; ???
 }
 const String & Vector::operator [](unsigned int position)const
 {
 return at(position); // Miért nem return pData[position]; ???
 }
 const Vector& Vector::operator= (const Vector & theOther)
 {
 assert(this!=&theOther);
 delete[] pData;
 elementNum=theOther.elementNum;
 if(elementNum==0) pData=NULL;
 else {
 pData=new String[elementNum];
 for(unsigned int i=0;i<elementNum;i++) pData[i]=theOther.pData[i];
 }
 return *this;
 }
 using namespace std;
 ostream & operator << (ostream& os, const Vector &v)
 {
 for(unsigned int i=0;i<v.elementNum;i++)
 {
 os<<' '<<v.at(i);
 }
 return os;
 }Vector.h: 
 #ifndef VECTOR_H
 #define VECTOR_H
 #include <iostream>
 #include "string.h"
 // Egy dinamikus tömb osztály
 using namespace HomeMadeString;
 class Vector
 {
 // A tömb mérete
 unsigned int elementNum;
 // Az adatokra mutató pointer
 String *pData;
 // Diagnosztikai célú globális kiiratóoperátor
 friend std::ostream & operator << (std::ostream& os,const Vector& v);
 public:
 // Konstruktorok, destruktor
 Vector() {elementNum=0;pData=NULL;}
 Vector(const Vector& theOther);
 ~Vector() {delete[]pData;}
 
 // Visszatér a tömb méretével.
 int size()const{return elementNum;}
 // Törli a tömböt (ez konzisztens állapotba is hozza a tömböt, nem csak a dinamikus adatterületet szabadítja fel)
 void clear();
 // Törli a megadott indexu elemet. A 0 és size()-1 közötti indexek érvényesek.
 void erase(unsigned int position);
 // Visszatér a megadott indexu elemmel, amely módosítható is egyben.
 // A 0 és size()-1 közötti indexek érvényesek.
 String& at(unsigned int position);
 // Visszatér a megadott indexu elemmel, amely csak olvasható.
 // A 0 és size()-1 közötti indexek érvényesek. Az int típus esetén nem kellene
 // const referencia, de saját típus esetén igen, lásd házi feladat.
 const String& at(unsigned int position)const;
 // Beszúr egy elemet a megadott indexu helyre.
 // Ha az index nagyobb, mint a tömb mérete, megnöveli a tömb méretét,
 // és a szükséges új helyeket nullákkal tölti fel.
 bool insert(unsigned int position, String element);
 // Operator=
 const Vector& operator= (const Vector & theOther);
 // Két operator[]. Az at() tagfüggvény operator formában is.
 String & operator [](unsigned int position);
 const String & operator [](unsigned int position)const;
 };
 // Diagnosztikai célú kiiratás
 std::ostream & operator << (std::ostream& os, Vector& v);
 #endif /*VECTOR_H */String.h: 
 #ifndef STRING_H
 #define STRING_H
 #include <iostream> // A coutnak
 namespace HomeMadeString
 {
 class String
 {
 // A karakterek aktuális száma:
 int elementsNum;
 // A karaktereket tartalmazó memóriaterületre mutató pointer:
 char *pData;
 public:
 // Argumentum nélküli konstruktor:
 String();
 // Másoló konstruktor:
 String(const String & string);
 // Egy NULL végu sztringet váró konstruktor
 String(char * str);
 // Egy karaktert és egy elojel nélküli egészet (times) váró konstruktor,
 // amely times darab c karakterrel inicializálja a stringet:
 String(char c, unsigned int times);
 // A destruktor:
 ~String();
 // A string objektum tartalmát a megadott bufferbe másolja, és NULL-lal lezárja
 // (a buffernek a hívó foglal helyet):
 void getStr(char * pBuff);
 
 // Visszatér a sztring hosszával
 unsigned int getLength(){return elementsNum;}
 // Kiírja a sztringet a megadott kimeneti adatfolyamba (A 'cout' ostream típusú.
 // A .h állományban nem használunk using namespace-t, mert nem tudjuk, hova lesz
 // beépítve, és ott milyen hatása lesz. Ezért kiíjuk az std::-t. Ez a .cpp állományban
 // már nem kell, ot használhatjuk a using namespace std utasítást):
 void print(std::ostream& os);
 // Visszaadja a megadott pozícióban lévo karaktert, egyébként nullát:
 char getChar(unsigned int pos);
 // --- Statikus függvények. Ezek két stringen végeznek muveletet. ---
 
 // Összefuz két sztringet, és visszatér vele:
 static String concatenate(const String& string1,const String& string2);
 // Összehasonlít két sztringet:
 static bool compare(const String& string1,const String& string2);
 // A második sztringet az elso sztringbe másolja:
 static void copy(String& string1,const String & string2);
 };
 }
 #endif /* STRING_H */String.cpp: #include <iostream> 
 #include <locale>
 #include <string.h>
 #include "String.h"
 using namespace std;
 using namespace HomeMadeString;
 String::String()
 {
 elementsNum=0;
 pData=NULL;
 }
 String::String(const String & string)
 {
 int i;
 this->elementsNum=string.elementsNum;
 this->pData=new char[elementsNum];
 for (i=0;i<elementsNum;i++)
 pData[i]=string.pData[i];
 pData[i]='\0';
 }
 String::String(char *str)
 {
 int i;
 for (i=0;str[i];i++);
 elementsNum=i;
 pData=new char[i];
 for (i=0;str[i];i++)
 pData[i]=str[i];
 pData[i]='\0';
 }
 String::String(char c, unsigned int times)
 {
 int i;
 elementsNum=times;
 if (!times)
 pData=NULL;
 else
 {
 pData=new char [times];
 for (i=0;i<elementsNum;i++)
 pData[i]=c;
 pData[i]='\0';
 }
 }
 String::~String()
 {
 //delete[] pData;
 }
 void String::getStr(char *pBuff)
 {
 int i;
 for (i=0;pData[i];i++)
 pBuff[i]=pData[i];
 pBuff[i]='\0';
 }
 char String::getChar(unsigned int pos)
 {
 if (elementsNum>pos)
 return pData[pos];
 else
 return 0;
 }
 String String::concatenate(const String& string1,const String& string2)
 {
 String str;
 str.elementsNum=string1.elementsNum+string2.elementsNum;
 str.pData=new char[str.elementsNum];
 int i,j;
 for (i=0;string1.pData[i];i++)
 str.pData[i]=string1.pData[i];
 for (j=0;string2.pData[j];j++)
 str.pData[i+j]=string2.pData[j];
 return str;
 }
 bool String::compare(const String& string1,const String& string2)
 {
 if (!(strlen(string1.pData)==strlen(string2.pData)))
 return false;
 for (int i=0;i<string1.elementsNum;i++)
 if (!(string1.pData[i]==string2.pData[i]))
 return false;
 return true;
 }
 void String::copy(String & string1,const String & string2)
 {
 delete[] string1.pData;
 string1.elementsNum=string2.elementsNum;
 if (!string1.elementsNum)
 string1.pData=NULL;
 else
 {
 string1.pData=new char[string1.elementsNum];
 int i;
 for (i=0;string2.pData[i];i++)
 string1.pData[i]=string2.pData[i];
 }
 }
 void String::print(std::ostream & os)
 {
 for (int i=0;i<elementsNum;i++)
 os<<pData[i];
 }És a tesztelésre használt VectorSample.cpp: 
 #include "Vector.h"
 #include "String.h"
 using namespace std;
 int main()
 {
 Vector v1;
 // Insert tesztelése
 for(int i=1;i<10;i++)
 {
 v1.insert(i,"i");
 }
 // A kiírás (operator<<) és az at() függvény tesztelése
 cout<<v1<<endl;
 //Helyes eredmény:
 // 0 1 2 3 4 5 6 7 8 9
 // Másoló konstruktor
 Vector v2(v1); // Lehetne: Vector v2=v1;
 // op=
 Vector v3;
 v3=v2;
 
 // Megváltoztatjuk v1-t (erase tesztelése)
 v1.erase(0);
 // v1.erase(9); //Ennek assertelni kell
 cout<<endl<<v1<<endl<<v2<<endl<<v3<<endl;
 // Helyes eredmény:
 // 1 2 3 4 5 6 7 8 9
 // 0 1 2 3 4 5 6 7 8 9
 // 0 1 2 3 4 5 6 7 8 9
 v2.insert(0,"-1");
 cout<<v2<<endl;
 // Helyes eredmény:
 // -1 0 1 2 3 4 5 6 7 8 9
 v2.insert(10,"-1");
 cout<<v2<<endl;
 // Helyes eredmény:
 // -1 0 1 2 3 4 5 6 7 8 -1 9
 v2.insert(12,"-1");
 cout<<v2<<endl;
 // Helyes eredmény:
 // -1 0 1 2 3 4 5 6 7 8 -1 9 -1
 v2.insert(15,"-1");
 cout<<v2<<endl;
 // Helyes eredmény:
 // -1 0 1 2 3 4 5 6 7 8 -1 9 -1 0 0 -1
 v2[15]="-2";
 cout<<v2<<endl;
 // Helyes eredmény:
 // -1 0 1 2 3 4 5 6 7 8 -1 9 -1 0 0 -2
 // v2[16]=3; //Ennek assertelni kell
 return 0;
 }Kérem valaki segítsen nekem, már több órája ezzel harcolok, de nem jövök rá, hogy mi a probléma. :S Üdvözlettel: Papa 
- 
			
			  j0k3r! őstag koszonom mindkettotoknek! 
 c alapom nincs, mivel algoritmuselmelet utan egybol c++ jott.
- 
			
			  Sk8erPeter nagyúr Eddigi olvasgatások alapján a Szoftverfejlesztés C++ nyelven c. könyv elég jónak tűnik, de feltételezi a C nyelv ismeretét, nem írtad, hogy van-e ilyen alapod. 
 Ha nincs, akkor pl. a Programozzunk C++ nyelven c. könyv.Ezenkívül/ehelyett biztos a többiek is tudnak még ajánlani megfelelő forrásokat. 
- 
			
			  j0k3r! őstag egyebkent valaki tudna ajanlani c++ hoz valami jo ebookot/konyvet? 
- 
			
			  Jester01 veterán ss << year << '.'; //Ev 
 if (month < 10) { // 1 helyett 01 legyen
 ss << 0;
 }
 ss << month << '.'; //Honap
 if (day < 10) {
 ss << 0;
 }
 ss << day << '.'; //NapEzt c++ nyelvjárásban úgy mondják, hogy ss << setfill('0') 
 << setw(4) << year << '.'
 << setw(2) << month << '.'
 << setw(2) << day << '.';
- 
			
			  Gyuri16 senior tag #include <iostream> 
 #include <sstream>
 #include <time.h>
 using namespace std;
 int main() {
 time_t t;
 time(&t);
 struct tm * tt = localtime(&t); // feltoltjuk a tm structot
 // kiszamoljuk az ertekeket a struct leirasa alapjan
 int year = 1900 + tt->tm_year;
 int month = 1 + tt->tm_mon;
 int day = tt->tm_mday;
 stringstream ss; // Int -> String konverziohoz
 ss << year << '.'; //Ev
 if (month < 10) { // 1 helyett 01 legyen
 ss << 0;
 }
 ss << month << '.'; //Honap
 if (day < 10) {
 ss << 0;
 }
 ss << day << '.'; //Nap
 string datum = ss.str(); //stringet csinalunk belole
 cout << datum << endl;
 return 0;
 }most vettem csak eszre, hogy char tombot hasznalsz, szoval akkor meg stringbol csinalni kell egy char[]-t, pl igy: char d[12]; 
 strcpy(d, datum.c_str());
 (strcpynek a string.h include kell)
 vigyazz mert a te kododban csak 11 byteot foglalsz le a datumnak, de az 12 byteot foglal (a null byte a vegen)
- 
			
			  j0k3r! őstag hello! elakadtam :/ 
 van egy ilyen strukturam:
 struct user
 {
 char nev[20];
 char ok[30];
 char datum[11];
 };egy ilyen bovitofuggvenyem: int banlist::bovit() 
 {
 user adat;
 system("cls");
 cout<<"uj ban hozzaadasa"<<endl;
 cout<<"-----------------"<<endl;
 cout<<"nev: ";
 cin>>adat.nev;
 cin.ignore(80,'\n');
 cout<<"ban oka: ";
 cin.getline(adat.ok, 30);
 cout<<"datum: ";
 cin.getline(adat.datum, 11);
 cout<<endl;
 lista.push_back(adat);
 cout << "\nsikeresen bovitettuk a listat";
 cin.clear();
 cout << endl;
 return 0;
 }teszt celjabol ugy csinaltam meg, hogy kezzel kelljen bevinni a datumot, de a te modszereddel sehogy se megy. tudnal segiteni, hogy az adat.datum -ba az aktualis datum keruljon?(2000.01.01. formaban) 
 elore is koszi.
- 
			
			  j0k3r! őstag hello mindenkinek! olyan programot szeretnek irni, ami beker 2 adatot (nev char[20], ok char[50]) es ezek melle hozzafuzi az adott datumot a datum char[11] valtozoba. (ilyen formaban pl.: 2009.01.23.) 
 aztan az egesz cuccost hozzafuzi az adatok-txt-hez. (es igy majd folyamatosan bovul a lista)
 egy otletet szeretnek kerni toletek az aktualis datum lekerdezesehez es valtozoba mentesehez.
 a segitsegetek elore is koszonom.
- 
			
			  sghc_toma senior tag válasz  Sk8erPeter
							
							
								#731
							
							üzenetére Sk8erPeter
							
							
								#731
							
							üzenetérehmm, ezt az STL-dolgot beneztem, bocs.. figyelmetlenul olvastam el a feladatot  en a file-t reprezentalo osztalyba nem pakolnam bele a tail megvalositasat.. legyen neki megnyitas/bezaras metodusa, meg iteratorai.. szerintem a tail objektum kap egy file objektumot megkozelites jo; a file iteratorait hasznalva kenyelmesen megvalosithatod a tail osztalyt.. ez azert jobb, mintha beleraknad a file osztalyba, mert ha pl. kesobb kelleni fog a head parancs is, akkor nem kell megbolygatni a file osztalyt, eleg irni egy head-et.. 
- 
			
			  Sk8erPeter nagyúr válasz  sghc_toma
							
							
								#730
							
							üzenetére sghc_toma
							
							
								#730
							
							üzenetéreHali! 
 Köszi, de a feladatkiírásban az is benne van, hogy STL-tárolót NEM szabad használni, így értelemszerűen nem tárolhatom a könyvtári vectorban, saját tárolót kell létrehozni. Épp ez nehezíti az ügyet, ha lehetne STL-t használni, akkor elég gyorsan kész lenne a feladat.
 Az std::for_each ugyanígy STL-algoritmus... Az iterátorok létrehozására itt található egy elég jó módszer: [link]. Igazából az operator+ fájlösszefűzés, meg a többi felüldefiniálás jó ötlet, de pl. az összefűzésnek a tail program szempontjából nem biztos, hogy van értelme, mivel ennek nem is alapfunkciója az összefűzés.  Igen, a szöveges állomány egy objektum, de akkor ennek az osztálynak milyen tagfüggvényei legyenek? Beolvasás, utolso_x_sor(), utolso_x_byte(), stb., egyéb ötletek?  Vagy akkor inkább az lenne a jobb módszer, ha ezt az egész objektumot átpasszolnám egy Tail osztálynak, amiben lennének az említett utolso_x_sor(), utolso_x_byte() függvények, amik aztán feldolgozzák az objektumot, és a kívánt sorokat/byte-okat visszaadják a mainnek? Vagy akkor inkább az lenne a jobb módszer, ha ezt az egész objektumot átpasszolnám egy Tail osztálynak, amiben lennének az említett utolso_x_sor(), utolso_x_byte() függvények, amik aztán feldolgozzák az objektumot, és a kívánt sorokat/byte-okat visszaadják a mainnek?
 Bocs, hogy ennyi kérdésem van, csak mielőtt nekimegyek a feladatnak, mint tót az anyjának, azelőtt jobb gondolkodni, mi lenne az ideális és egyben kényelmes módszer. 
- 
			
			  sghc_toma senior tag válasz  Sk8erPeter
							
							
								#727
							
							üzenetére Sk8erPeter
							
							
								#727
							
							üzenetére"Maga a fájl beolvasása legyen külön osztály, aminek a tagfüggvényeit örökli egy másik, pl. a Tail osztály?" 
 nem.. a feladatkiirasban benne van, hogy magat a szoveges allomanyt kell reprezentalnod egy objektummal.. pl. csinalsz egy osztalyt, aminek van egy std::vector<std::string> adattagja, es ebben tarolod a sorokat.. mondjuk a konstruktor kap parameterkent egy filenevet, megnyitja, beolvassa a file-t, es eltarolja a tartalmat a vektorban.. az operator<< lehet uj sor vektorba rakasa, az operator>> meg egy sor olvasasa.. operaor+ ket file osszefuzese, stb.. az iterator meg a sorokon megy vegig, tulajdonkeppen ugyanaz, mint a vektor iteratora.. igy a tail egesz egszeruen megvalosithato mondjuk az std::for_each-csel, vagy egy sima for ciklussal.."de jelen esetben nem igazán látom gyakorlati hasznát, itt nem kell randomszerűen tudni elérni elemeket, vagy gyorsan az elejére, majd a végére ugrani, vagy hasonló, mint a klasszikus iterátoroknál" 
 az iterator pont nem a random hozzaferesre lett kitalalva.. ahogy a neve is mutatja, arra valo, hogy egy kontener elemein vegiglepkedj..
- 
			
			  Mr. Teddy őstag Sziasztok! Volna egy problémám, nem értem mi lehet a hiba. 
 Van nekem egy "unsigned __int64" változóm. Enek a változónak meg szeretnm pl. adni ezt az értéket: p= 0x0F5<<25 és nagyon fals számot ír ki. Vagyis kiírja a számot jól, csak a felső biteket 1-esekkel feltölti: FFFFFFFFEA000000. És azt kéne, hogy kapjam hogy simán: EA00000000.Mitől lehet ez? 
- 
			
			  Sk8erPeter nagyúr válasz  Sk8erPeter
							
							
								#727
							
							üzenetére Sk8erPeter
							
							
								#727
							
							üzenetéreA legutsó hülye kérdés volt, ott volt a válasz, hogy "A parancs nevét követő zárójelben a man kötet sorszáma található."  Azt az operátor átdefiniálós dolgot ilyen sablonszerűen minden feladatba beleírták, tehát ahhoz szerintem az én esetemben nem igazán kell ragaszkodni, tekintve, hogy szerintem itt nincs igazán értelme mit overloadolni. 
 Már nagyjából tanultuk, hogyan lehet saját iterátort létrehozni, de jelen esetben nem igazán látom gyakorlati hasznát, itt nem kell randomszerűen tudni elérni elemeket, vagy gyorsan az elejére, majd a végére ugrani, vagy hasonló, mint a klasszikus iterátoroknál, így itt nem látom olyan sok értelmét. Vagy mégis van? Esetleg velük végig lehet menni a sorokon, esetleg karaktereken....
 De ez sima indexeléssel is elérhető, most itt nem tudom, van-e értelme készíteni iterátort.Ha valakinek eszébe jut ötlet, akkor megköszönöm, ha leírja. 
- 
			
			  Sk8erPeter nagyúr Hali! 
 Van egy olyan feladatom, amivel kapcsolatban kíváncsi lennék a véleményetekre, hogy milyen megoldásokat javasoltok.
 Egész pontosan ez a feladat szövege:
 "Készítsen tetszőleges hosszúságú sorokból álló szöveges állományt reprezentáló objektumot! Valósítsa meg a UNIX tail(1) program funkcióit!
 Valósítsa meg az összes értelmes műveletet operátor átdefiniálással (overload), de nem kell ragaszkodni mindenáron az operátorok átdefiniálásához!
 Amennyiben lehetséges használjon iterátort!
 Demonstrálja a működést külön modulként fordított tesztprogrammal!
 A UNIX parancsok pontos leírását a man paranccsal kérdezheti le.
 A parancs nevét követő zárójelben a man kötet sorszáma található.
 A megoldáshoz NE használjon STL tárolót vagy algoritmust!"A tail() program lényege, hogy kiírja a standard outputra egy paraméterként kapott állomány utolsó 10 sorát. További paraméterezéssel az is elérhető, hogy az utsó n sort vagy n byte-ot írja ki az állományból (a 10 csak alapértelmezett), vagy akár az n-edik sortól kezdődően írja ki egy állomány tartalmát. Kérdésem hozzátok az lenne, hogy ennek az OOP-s szemléletben történő megvalósítását hogy képzelnétek el? Maga a fájl beolvasása legyen külön osztály, aminek a tagfüggvényeit örökli egy másik, pl. a Tail osztály? 
 Itt találtam egy lehetséges megvalósítást (átláthatóság kedvéért felraktam a pastebinre), aminek azonban az OOP-hez nem túl sok köze van, nekem viszont objektum-orientáltan kell megvalósítanom az egészet. Ja, és STL-tároló sem használható.Így elsőre milyen javaslataitok lennének a konkrét megvalósítással kapcsolatban? 
 Hány osztály, milyen tagfüggvények, stb.?Ja, és miért tail(1)? Mi zárójelben az az (1)?  Előre is köszi minden javaslatot!  
- 
			
			  labuwx tag Sziasztok! 
 Szeretnék építeni egy robotot, ami bluetooth-on keresztül kommunikál a számítógéppel.
 Arra lennék kíváncsi, hogy mennyire nehéz/hogyan lehet megoldani egy ASUS USB-BT211-gyel történő adat küldést illetve fogadást visual c++-ban?
- 
			
			  WonderCSabo félisten válasz  Sk8erPeter
							
							
								#722
							
							üzenetére Sk8erPeter
							
							
								#722
							
							üzenetéreJaja, 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 Sk8erPeter
							
							
								#717
							
							üzenetéreVhogy sosem szerettem a caset, de úgy csinálja a kolléga, ahogy akarja.  shev7: hello world már fordul.  
- 
			
			  Sk8erPeter nagyúr válasz  WonderCSabo
							
							
								#716
							
							üzenetére WonderCSabo
							
							
								#716
							
							üzenetéreDehát akkor ilyen alapon az if-ek helyett valóban lehet switch-case is, semmivel sem csúnyább, sőt.  
- 
			
			  WonderCSabo félisten válasz  nepszter1
							
							
								#715
							
							üzenetére nepszter1
							
							
								#715
							
							üzenetéreHa ú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)
 {
 ...
- 
			
			  nepszter1 addikt Üdv, valahogy szeretnék egy progit csinálni c++ hogy adott pl. egy négyzet és a kerülete területe kiszámítása . Vagy pl. téglalap stb . 
 Hogyan lehetne ezt megoldani ?
- 
			
			  sghc_toma senior tag Gyuri16: segiteni sajnos nem tudok, en is nemreg gondolkodtam azon, hogy jo lenne a Vim-et hasznalni IDE-kent, de nem volt tul sok idom foglalkozni vele.. az exVim-re guglizas kozben talaltam, feltettem, kiprobaltam egy projekten, de nem igazan melyedtem meg bele.. doc: nincs mit.. 
- 
			
			  Gyuri16 senior tag válasz  sghc_toma
							
							
								#709
							
							üzenetére sghc_toma
							
							
								#709
							
							üzenetérevalami ilyesmit ajanl: 
 ctags -o./_tags -R --c++-kinds=+p --fields=+iaS --extra=+q \
 --languages=c,c++,c#,python,vim,html,lua,javascript,uc,math \
 --langmap=c++:+.inl,c:+.fx,c:+.fxh,c:+.hlsl,c:+.vsh,c:+.psh,c:+.cg,c:+.shd,javascript:+.as ..
 nekem igy se mukodik.egyelore jobb otletem nincs, mint meghekkelni az omnicpp plugint, valahogy ugy, hogy legyen ket kulon tags file (egyik a completenek a masik az ugralasra), es ravenni, hogy mielott kidobja a talalatokat allitsa at a tags valtozot. 
 lehet majd kesobb megnezem, most a c++ leckemet kellene csinalnom 
- 
			
			  Gyuri16 senior tag nem annyira c++ programozos kerdes, de ide illik inkabb: 
 most kezdek c++-ban programozni, es ezt vimben teszem. masik topicban mar kaptam helpet ctags-rol, ami nagyjabol mukodott is c-ben. most viszont osszeveszik a omnicppcompletion pluginnal (auto completion). az utobbinak ilyen tags generalast hasznalok: ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
 ha ezt hasznalom akkor a completion mukodik, de a fajlban ugralas nem (ctrl+], ctrl+t). ha csak ctags -R * hasznalok akkor pedig az ugralas mukodik de a completion nem. valaki tud ezzel segiteni?
- 
			
			  Sk8erPeter nagyúr philoxenia jóarc volt, és kérésemre megváltoztatta a topic nevét egy kissé tisztességesebbre.  Szerintem a "C++ gyors segitseg kellene" cím helyett a "C++ programozás" kicsit jobban hangzik. Szerintem a "C++ gyors segitseg kellene" cím helyett a "C++ programozás" kicsit jobban hangzik. 
- 
			
			  sghc_toma senior tag válasz  WonderCSabo
							
							
								#703
							
							üzenetére WonderCSabo
							
							
								#703
							
							üzenetérehmm.. milyen forditot hasznalsz? 4.4.3-as GCC-vel mukodik mindket megoldas.. esetleg egy forraskodreszletet be tudsz masolni ide (hatha mashol van a hiba)? 
- 
			
			  sghc_toma senior tag válasz  WonderCSabo
							
							
								#701
							
							üzenetére WonderCSabo
							
							
								#701
							
							üzenetérelegjobb tudomasom szerint szep modszer nincs ra, de a clear + str("") kombonak mukodnie kellene.. az, hogy nem tudsz bele irni, mit jelent? hibat dob, vagy csak siman ures marad a stream? 
 esetleg meg megprobalhatod, hogy torlod az error flag-eket, es a put/get pointereket meg beallitod a stream elejere:stringstreamneve.clear(); 
 stringstreamneve.seekp(0);
 stringstreamneve.seekg(0);"Ha csak cleart használok, nem csinál semmit" 
 nem meglepo, a clear az error flag-eket allitja be...
- 
			
			  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... 
Ú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!
- Windows 11
- gban: Ingyen kellene, de tegnapra
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Veszélyben az adataid? Gond van a WD népszerű HDD-ivel
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- AMD Catalyst™ driverek topikja
- Fejhallgató erősítő és DAC topik
- Apple iPhone 16 Pro - rutinvizsga
- Rap, Hip-hop 90'
- Allegro vélemények - tapasztalatok
- További aktív témák...
- Lenovo T14 Core i5 10210U 16Gb Ram 256Gb NVMe FullHD IPS Boltól Garanciával Számlával
- Vadonatúj Blackshark 4 256GB full turbó mobilgamer csomag, kártyafüggetlen!
- Lenovo T14 G2 Core i5 1145G7 16Gb Ram Intel Iris Xe 256 NVMe Boltból Granciával Számlával
- Dell 7430 Core i5 1245U 10 mag 12 szál 16Gb Ram 4K Kijelző Boltból Garanciával Számlával
- Lenovo E14 G4 Core i5 1235U 10 mag 12 szál 40Gb Ram Gyári Garancia Boltból Számlával
- Törött, Hibás iPhone felvásárlás!!
- Azonnali készpénzes GAMER / üzleti notebook felvásárlás személyesen / csomagküldéssel korrekt áron
- GYÖNYÖRŰ iPhone 13 mini 256GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3310
- Apple iPhone 11 64GB, Kártyafüggetlen, 1 Év Garanciával
- Gyári garanciával Digitalizáló tábla XP-PEN Artist Pro 24
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: NetGo.hu Kft.
Város: Gödöllő
 
								 
							 
								
 
								 
								 
							 
							

 
								 Na sebaj, végül is szerencsére nem tartott sokáig.
 Na sebaj, végül is szerencsére nem tartott sokáig.
 
							
 
								
 
							 
							 
								

 
								 
							 Még csak most kezdtem el tanulni a c-t és úgy tanították hogy a tömböknél nem kell eléírni &-t. Ezekszerint van más amit elé kell írni?!
 Még csak most kezdtem el tanulni a c-t és úgy tanították hogy a tömböknél nem kell eléírni &-t. Ezekszerint van más amit elé kell írni?! 
							 
								 perator<< [with _Traits = std::char_traits<char>](((std::basic_ostream<char, std::char_traits<char> >&)((std:
perator<< [with _Traits = std::char_traits<char>](((std::basic_ostream<char, std::char_traits<char> >&)((std:
 
							 
							
 
								
 
								 
							 
								 
								 
							
 
								 
							

