Pereiti prie turinio

C++ konteinerinės klasės


Rekomenduojami pranešimai

Sveiki , gal galit padėti surasti klaidą?

Kodėl nenuskaito?

 

Skaitymo funkcija pagrindinėje programoje:

 

void Duomenys(Rinka & Lietuvos, int & n)
{
ifstream fd(CDfv);
string pavadinimas;
int papildymoKaina;
double skambSavamTinkle;
double skambKitamTinkle;
double smsSavamTinkle;
double smsKitamTinkle;
n = 0;
Operatorius o1;
while (!fd.eof())	{
	fd >> pavadinimas >> papildymoKaina >> skambSavamTinkle 
	   >> skambKitamTinkle >>smsSavamTinkle >> smsKitamTinkle;
	fd.ignore();
	cout << pavadinimas << smsKitamTinkle << endl;
	o1.Dėti(pavadinimas, papildymoKaina, skambSavamTinkle,
		   skambKitamTinkle, smsSavamTinkle, smsKitamTinkle);
	n = n + 1;
	cout  << o1.ImtiPavad() << endl;
}
fd.close();
}

 

int main(){}:

int main()
{
LC_ALL(setlocale, "Lithuanian");
Rinka Lietuvos;
int n;	// kiek operatoriu duomenu faile
Duomenys(Lietuvos, n);
ofstream fr(CRfv);
fr << left << "Pavadinimas" << " Suma" 
    << " sLt/min" << " kLt/min" 
	<< "sSms" << " kSms" << endl;
fr.close();

for (int i = 0; i < 3; i++)
cout << Lietuvos.Imti(i).Spausdinti() << endl;
cout << n;

}

 

Klasė Operatoriai:

#pragma once
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
#include <cmath>
using namespace std;
class Operatorius
{
private:
string pavadinimas;
int papildymoKaina;
double skambSavamTinkle;
double skambKitamTinkle;
double smsSavamTinkle;
double smsKitamTinkle;

public:
Operatorius(): pavadinimas(""), papildymoKaina(0.00),skambSavamTinkle(0.00),
			   skambKitamTinkle(0.00), smsSavamTinkle(0.00), smsKitamTinkle(0.00) {};
void Dėti(string pav, int papildymoKain, double skambSavamTinkl,		
		  double skambKitamTinkl, double smsSavamTinkl, double smsKitamTinkl);
//int Imti() { return ;}
string ImtiPavad(){return pavadinimas;}
string Spausdinti();
//~Operatorius(v);
};

Klasės Operatoriai metodai:

 

#include <iostream>
#include <sstream>	// kodėl ne string ?
#include <iomanip>
#include <string>
using namespace std;
#include "Operatorius.h"

void Operatorius::Dėti(string pav, int papildymoKain, double skambSavamTinkl,		 
		  double skambKitamTinkl, double smsSavamTinkl, double smsKitamTinkl)	 
{																					
pav = pavadinimas;
papildymoKain = papildymoKaina;
skambSavamTinkl = skambSavamTinkle;
skambKitamTinkl = skambKitamTinkle;
smsSavamTinkl = smsSavamTinkle;
smsKitamTinkl = smsSavamTinkle;
}
string Operatorius::Spausdinti()
{
stringstream eil;
eil << left << setw(12) << pavadinimas << setw(5) << papildymoKaina  << setw(5)
    << skambSavamTinkle << setw(5) << skambKitamTinkle << setw(5)
	<< smsSavamTinkle << setw(5) << smsKitamTinkle;
return eil.str();
}

Konteineris:

#pragma once
#include "Operatorius.h"
class Rinka
{
public:
static const int Cmaxi = 10;
private:
Operatorius Oper[Cmaxi];
int n;
public:
Rinka():  n(0) {};
void DėtiOperatorių(Operatorius d) { Oper[n] = d; n++; } // ??

Operatorius ImtiOperatorių(int k) { return Oper[k]; }

Operatorius Imti(int i) {return Oper[i]; }
int ImtiN() { return n; }	// grąžina narių skaičių ( kiek iš viso yra operatorių)
Operatorius Geriausias();
//~LietuvosRinka();
};

 

Duomenys tokie :

 

OMNITEL 20 0 0.4 0.25 0.25
LABAS 5 0.20 0.20 0 0.10 
PILDYK 5 0.18 0.48 0.3 0.10

 

Parašius main'e taip :

for (int i = 0; i < 3; i++)
cout << Lietuvos.Imti(i).Spausdinti() << endl;

man spausdina tris kartus po 0 0 0 0 0

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nu gerai, fukcijoj "Duomenys" tu susikuri operatoriu nauja o1, i ji sudedi duomenis, bet tai jis tik ir telieka toj funkcijoj, tai kaip gali ka nors atspausdint? Trukta skaitymo cikle tokios eilutes: Lietuvos.DetiOperatoriu(o1);

Redagavo hafnis1324
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nu gerai, fukcijoj "Duomenys" tu susikuri operatoriu nauja o1, i ji sudedi duomenis, bet tai jis tik ir telieka toj funkcijoj, tai kaip gali ka nors atspausdint? Trukta skaitymo cikle tokios eilutes: Lietuvos.DetiOperatoriu(o1);

Ačiū už pataisą. Įrašiau tą eilutę į skaitymo ciklą, tačiau vis vien išveda į ekraną tuos pačius nulius.

 

Ištaisiau taip :

void Duomenys(Rinka & Lietuvos, int & n)
{
ifstream fd(CDfv);
//bool yra = true;
string pavadinimas;
int papildymoKaina;
double skambSavamTinkle;
double skambKitamTinkle;
double smsSavamTinkle;
double smsKitamTinkle;
n = 0;
Operatorius o1;
while (!fd.eof())//&& yra
{
	fd >> pavadinimas >> papildymoKaina >> skambSavamTinkle 
	   >> skambKitamTinkle >>smsSavamTinkle >> smsKitamTinkle;
	fd.ignore();
	o1.Dėti(pavadinimas, papildymoKaina, skambSavamTinkle,
		   skambKitamTinkle, smsSavamTinkle, smsKitamTinkle);
	Lietuvos.DėtiOperatorių(o1);
	n = n + 1;
}
fd.close();
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...