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.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

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