- Viber: ingyen telefonálás a mobilodon
- btz: Internet fejlesztés országosan!
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Asszociációs játék. :)
- VoidXs: Tényleg minden játék optimalizálatlan?
- sziku69: Fűzzük össze a szavakat :)
- Hieronymus: A németországi vasúthálózat
- sziku69: Szólánc.
- gban: Ingyen kellene, de tegnapra
- Gurulunk, WAZE?!
Új hozzászólás Aktív témák
-
-
jattila48
aktív tag
A private tagokat nem csak a konstruktor, hanem az összes tagfüggvény eléri. A tagfüggvények elől nincs elzárva a private tag, csak a külső (nem tfv.) függvények elől. Sőt ugyanannak a típusnak másik példánya is hozzáfér a private/protected tagokhoz (pl. egy olyan tfv., ami argumentumban másik ugyanolyan típusú példányt (vagy pointert/referenciát) kap, szintén gond nélkül eléri az argumentumban kapott objektum private/protected tagjait).
-
choco01
addikt
De most akkor azt is lehetne írni a feltöltéskor hogy
kolcsonzes[i].datum;
és a többi? minek akkor ez a k-s dolog..meg hogyan tehetem a private tagokat elérhetővé más számára? valamilyen értékátadásról beszélt a Tanár Úr az egyik órán, de nem értettem teljesen..volt valami friend függvény is..
ezeket csak így elmondják aztán nem használtuk, de azért van..
cattus:
Köszönöm, most belenéztem, de ebbe hogyhogy strukturákon csinálja a private meg public dolgokat..
-
choco01
addikt
Igen van továbbra is az ami az elején..
ez a *k dolog azaz hogy
kolcsonzes *k;
sor miért kell a privátba?
a kolcsonzes struktúrára mutat a k? vagy hogy értelmezzem?mert utána visszatér ugye az előbb írt kódban a
k = new kolcsonzes[db];
meg utána a feltöltés is a k-ra megy.. -
choco01
addikt
Most ilyen speedrun megy mert holnap írunk ZH-t és leragadtam a struktúráknál, de elvileg kötelező lesz osztályokat használni..
úgy hogy amennyit csak tudok olvasok..
A gyakorló feladat ilyesmi volt, végülis értem, csak pár apró része nem világos hogy miért oda miért nem, eddig úgy gondoltam hogy a private/protected rész arra kell hogy mások elől védjem az ott lévő dolgokat és akkor valahogy publicba tudok infót adni a védett részbe is..de aztán lehet nem..
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
/*Készítsen programot, melyben a Kétkerék nevű kerékpár kölcsönző adatait tudja kezelni.A kölcsönzőben kétféle
típusú kerékpár van, melyek kölcsönzési óradíja különböző.A magellan 1200 Ft / óra, a median 1000 Ft / óra.
A kolcsonzo.txt szöveges állomány első sorában a kölcsönzések számát, a kölcsönzések adatait a következő struktúra szerint tartalmazza:
struct kolcsonzes
{
string; //a kölcsönzés napja
string tipus; //a kerékpár típusa
int sorszam; //a kerékpár sorszáma
int ido; //a kölcsönzés ideje
};
Készítse el az alábbi függvényeket, mindegyik függvény vegye át az állomány nevét :
Getdb() Adja vissza az adatok számát.
GetMagellan() Adja vissza a magellan kerékpárok számát.
GetMedian() Adja vissza a median kerékpárok számát.
MedianBevetel() Adja vissza a median kerékpárokkal szerzett bevétel összértékét.
OsszBevetel() Adja vissza a bevétel összértékét.
LeghosszabbKolcsonzes() Adja vissza a leghosszabb kölcsönzés adatait tartalmazó struktúrát.
Kiir() A függvény minden adatot sorszámozva, az kiíratja a képernyőre táblázatos formában, minden struktúra egy
sorba kerüljön(a sorszám 1 - ről indul).
*/
struct kolcsonzes
{
string datum;
string tipus;
int sorszam;
int ido;
};
class kolcsonzo
{
private:
kolcsonzes *k;
int db;
public:
kolcsonzo(char fnev[]);
~kolcsonzo();
int Getdb();
int GetMagellan();
int GetMedian();
int MedianBevetel();
int Osszbevetel();
int LeghosszabbKolcsonzes();
void Kiir();
};
//kolcsonzo.txt beolvasasa
kolcsonzo::kolcsonzo(char fnev[])
{
ifstream be(fnev);
if (be.fail()) { cerr<<"hiba fajlnyitas"; system("pause"); exit(-1);}
be >> db;
k = new kolcsonzes[db];
if (k == 0) { cerr << "hiba2";system("pause");exit(-2);}
for (int i = 0; i < db; i++)
{
be >> k[i].datum;
be >> k[i].tipus;
be >> k[i].sorszam;
be >> k[i].ido;
}
be.close();
}
kolcsonzo::~kolcsonzo()
{
if (k != 0)
delete[]k;
}
int kolcsonzo::Getdb()
{
return db;
}
int kolcsonzo::GetMagellan()
{
int m = 0;
for (int i = 0; i < db; i++)
{
if (k[i].tipus=="magellan")
{
m++;
}
}
return m;
}
int kolcsonzo::GetMedian()
{
int m = 0;
for (int i = 0; i < db; i++)
{
if (k[i].tipus=="median")
{
m++;
}
}
return m;
}
int kolcsonzo::MedianBevetel()
{
int mbev = 0;
for (int i = 0; i < db; i++)
{
if (k[i].tipus=="median")
{
mbev += k[i].ido * 1000;
}
}
return mbev;
}
int kolcsonzo::Osszbevetel()
{
int bev = 0;
for (int i = 0; i < db; i++)
{
if (k[i].tipus=="median")
{
bev += k[i].ido * 1000;
}
else
{
bev += k[i].ido * 1200;
}
}
return bev;
}
int kolcsonzo::LeghosszabbKolcsonzes()
{
int l = k[0].ido;
for (int i = 0; i < db; i++)
{
if (k[i].ido > l)
{
l = k[i].ido;
}
}
return l;
}
void kolcsonzo::Kiir()
{
cout << setw(14) << "datum" << setw(20) << "tipus" << setw(10) << "sorszam" << setw(10) << "kolcsido" << endl;
for (int i = 0; i < db; i++)
{
cout << i + 1 << "." << setw(12) << k[i].datum << setw(20) << k[i].tipus << setw(10) << k[i].sorszam << setw(10) << k[i].ido << endl;
}
}
int main()
{
kolcsonzo ketkerek("kolcsonzo.txt");
cout << "Az allomanyban levo adatok:\n";
ketkerek.Kiir();
cout << endl;
cout << "A kolcsonzesek szama: " << ketkerek.Getdb() << endl;
cout << "A magellan kolcsonzesek szama: " << ketkerek.GetMagellan() << endl;
cout << "A median kolcsonzesek szama: " << ketkerek.GetMedian() << endl;
cout << "A median kerekparokkal szerzett bevetel: " << ketkerek.MedianBevetel() << endl;
cout << "A kerekparokkal szerzett osszbevetel: " << ketkerek.Osszbevetel() << endl;
cout << "A leghosszabb kolcsonzes ideje: " << ketkerek.LeghosszabbKolcsonzes() << endl;
cout << endl << endl;
cout << "***************** dinamikus objektum *****************\n\n";
kolcsonzo *kektura = new kolcsonzo("kolcsonzo.txt");
if (kektura == 0)
{
cerr << "keves a memoria 2";
return 2;
}
cout << "Az allomanyban levo adatok:\n";
(*kektura).Kiir();
cout << endl;
cout << "A kolcsonzesek szama: " << kektura->Getdb() << endl;
cout << "A magellan kolcsonzesek szama: " << kektura->GetMagellan() << endl;
cout << "A median kolcsonzesek szama: " << kektura->GetMedian() << endl;
cout << "A median kerekparokkal szerzett bevetel: " << kektura->MedianBevetel() << endl;
cout << "A kerekparokkal szerzett osszbevetel: " << kektura->Osszbevetel() << endl;
cout << "A leghosszabb kolcsonzes ideje: " << kektura->LeghosszabbKolcsonzes() << endl;
cout << "Az 5 oranal hosszabb kolcsonzesek:\n";
delete kektura;
system("pause");
return 0;
} -
m.zmrzlina
senior tag
Ezek után teljesen felesleges még 3 változót létrehozni, nem leszel előrébb semmivel.
Ezt értem és el is fogadom csak számomra talán valamivel átláthatóbb lenne a program ha végig ugyanaz a név jelöli ugyanazt a változót nem pl úgy hogy ami a mainben "egyik" az a fvAkármiben "a" de ha a fvAkármi meghívja a fvMásvalamit akkor ott már ugyanaz a változó lehet akár "c" is. Ezért kérdeztem hogy mi itt a best pactice.
a függvény deklarációjánál nem fontos neveket megadni, de definíciónál annál inkább,
Úgy kell ezt érteni, hogy az előbbi példánál maradva a következő megoldás teljesen jó?
int fvAkármi(int,int,int);
int main(){
}
int fvAkarmi(int a,int b,int c){
return (a+b)*c;
} -
dobragab
addikt
Miéhéhéhéhéhéhéért nem veszi észre senki, hogy totál felesleges sztringbe olvasni? A fájlból tessék kapásból az inteket.
int n;
if (!(input >> n))
return shiet; // baj van
// blablablastd::transform-ot pedig azért szeretjük, mert karakterszámra kétszer hosszabb, olvashatóságra háromszor rosszabb, mint a vele ekvivalens for ciklus (range based for-ral)
std::istream_iterator dettó, egyetlen egyszer használtam, input iteratoros overload tesztelésére.
Hogy ne csak fikázás legyen, ha van rá igény, megmutatom szebben, csak most mobilról vagyok.
Ú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!
- Új! Számla + 1-3ÉV Gari! Áfás! Gamer PC - Számítógép! R5 9600X / RX 9070XT / 32GB DDR5 / 1TB SSD M.2
- Új! Számla + 1-3ÉV Gari! Áfás! Gamer PC - Számítógép! R5 8400F / RX 9060XT / 32GB DDR5 / 1TB SSD M.2
- Új! Számla + 1-3ÉV Gari! Áfás! Gamer PC - Számítógép! I5 14400F / RTX 3080 / 32GB DDR5 / 1TB SSD M.2
- Új! Számla + 1-3ÉV Gari! Áfás! Gamer PC - Számítógép! I5 14400F / RTX 5070 / 32GB DDR5 / 1TB SSD M.2
- Új! Számla + 1-3ÉV Gari! Áfás! Gamer PC - Számítógép! I5 14400F / RTX 5060 Ti / 32GB DDR5 / 1TB SSD
- Asus ROG G20AJ - Intel Core i7-4790, GTX 980
- Geforce GTX 1050, 1050 Ti, 1060, 1650, 1660 - GT 1030 - Low profile is (LP)
- Azonnali készpénzes Intel i3 i5 i7 i9 12/13/14 gen processzor felvásárlás személyesen / csomagküldés
- Realme 7i 64GB, Kártyafüggetlen, 1 Év Garanciával
- iKing.Hu - Xiaomi 14 Ultra - Ultra White - Használt, karcmentes
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest