vector class

/*vytvoøte modul PraceSCisly, který bude obsahovat seznam celých èísel.
Tøída PraceSCisly bude ve jmeném prostoru PrijmeniJmenoCpp2ZK.
Program bude obsahovat následující rozhraní:

- Kontruktor PraceSCisly (int pocet, int dolniHranice, int horniHranice) -
vygeneruje a vlozi do seznamu pocet celých èísel z intervalu <dolniHranice,horniHranice>.
- Metodu Vypis - která vypisuje všechny èísla ze seznamu na obrazovku.
- Metodu Setrid - setøídí všechny èísla v seznamu.
- Metodu VratPrumerSudych - vracejici prumer ze vsech sudych cisel seznamu
- Metodu VratPrumerLichych - vracejici prumer ze vsech lichych cisel seznamu
- metoda VratpocetCislic - vracejici pocet vyskytu cislice, ktera je predana metode jako argument
- Vytvorte si unarni predikat, ktery bude testovat argument, jestli je delitelny cislem, ktery bylo zadano
pri vytvorenni instance predikatu(napr. jestli je nasobek 3).
- Metoda VratVektorPodminka, ktera bude vracet vektor s hodnotami, ktere splnuji podminku unarniho predikatu.

Vytvorte program, ktery pomoci menu bude testovat veskerou funkcionalitu modulu PraceSCisly.
pro jednotlive metody pouzijte STL knihovnu.*/
//#include <stdlib.h> /* srand, rand */
#include <time.h>
#include <vector>
#include <iostream>
#include <algorithm>
using std::cin;
using std::cout;
using std::endl;

typedef std::vector<int> vectorCisel;

typedef std::vector<int>::const_iterator intVectorCiselConstIterator;
vectorCisel xVector;
vectorCisel pokus;

namespace ZdrazilLadislavCpp2ZK {
class PraceSCisly{
int cislo, pomocnaCislo = 0;
public:
PraceSCisly(int pocet , int dolniHranice, int HorniHranice){

for (int i = 0; i < pocet; i++)
{
pomocnaCislo = rand() % HorniHranice + dolniHranice;

//vectorCisel.push_back(pomocnaCislo);
xVector.push_back(pomocnaCislo);
}
}

~PraceSCisly(){};
friend std::ostream& operator<<(std::ostream&, const PraceSCisly&);
};
}

std::ostream& operator<< (std::ostream& stream, const vectorCisel& xVector){
for (intVectorCiselConstIterator i = xVector.cbegin(); i != xVector.cend(); ++i){
stream << *i << endl;
}
return stream;
}

void Vypis(vectorCisel &xVector){
//cout << cislo++ << ": " << *i << endl;
cout << xVector;
cout << "" << endl;

}

void Setrid(vectorCisel &xVector){
std::sort(xVector.begin(), xVector.end());
}

void VratPrumerSudych(){
int pomocna=0;
int pocetSudych = 0;
int soucetSudych= 0;
double prumer;
for (intVectorCiselConstIterator i = xVector.cbegin(); i != xVector.cend(); ++i){
pomocna = *i % 2;
if (pomocna == 0){
soucetSudych += *i;
pocetSudych++;
}
}
prumer = (double)soucetSudych / (double)pocetSudych;
cout << "Prumer sudych cisel je: " << prumer << endl;
}
/*- Vytvorte si unarni predikat, ktery bude testovat argument, jestli je delitelny cislem, ktery bylo zadano
pri vytvorenni instance predikatu(napr. jestli je nasobek 3).
- Metoda VratVektorPodminka, ktera bude vracet vektor s hodnotami, ktere splnuji podminku unarniho predikatu.*/


std::vector<int> VratVektorPodminka(int a){

int pomocna = 0;
pomocna = a % 3;
if (pomocna == 0) {
pokus.push_back(a);
}
return pokus;
}

void UnarniPredikat(int cislo){
std::for_each(xVector.cbegin, xVector.cend, VratVektorPodminka); // #1
}

int main(int argc, char** argv){
using namespace ZdrazilLadislavCpp2ZK;
srand(time(NULL));
PraceSCisly *cisla = new PraceSCisly(10,1,20);

Vypis(xVector);

Setrid(xVector);
Vypis(xVector);
VratPrumerSudych();
cout << "cisla delena predikatem 3 :" << endl;
Vypis(pokus);

return 0;
}
Last edited on
okay?
almost I guess, I have problem with unary predikate method" UnarniPredikat" still does't work right because I don't know how to interate xVector
Topic archived. No new replies allowed.