c++ zadaci

Teme vezane za console/GUI programiranje u C/C++ jeziku
2 post(ov)a • Stranica: 1/1.

c++ zadaci

PostPostao/la obnix12 » 29 kol 2016, 09:06

Pozdrav, da li bi mi itko mogao pomoći s ovim zadacima, da mi ih pokaže i objasni jer nemam ideje kako krenuti s njima? Unaprijed zahvaljujem.
1. Proširite klasu*/ array /*sa potrebnim funkcijama*/

class array {
int cnt, *data;
};

/*tako da sljedeći program ispravno puni cijelo prvo polje nulama,
kopira sve elemente u drugo polje i briše svu alociranu memoriju:*/

int main(){
array a(10);
array b(a);
for (int i=0;i<10;++i){cout<<b[i]<<endl;}
}

/*ZADATAK 2.
Napišite apstraktnu klasu*/ geometrijskiLik /* i izvedene klase */
krug /*i*/ kvadrat /*tako da sljedeći program:*/

#include <iostream>
#include <list>
typedef std::list<geometrijskiLik*> lista;
typedef cont::const_iterator iter;
int main() {
lista c;
c.push_back(new krug);
c.push_back(new kvadrat);
for(iter it = c.begin(); it != c.end(); ++it)
(*it)->povrsina();
}
/*Ispisuje:*/ 3.14
1

/*Napomena: defaultni konstruktor klase krug postavlja veličinu polumjera na 1,
a defaultni konstruktor klase kvadrat duljinu stranice kvadrata na 1*/

3. Napišite predložak funkcije koja omogućava prebrojavanje koliko je
elemenata unutar polja jednakih elementu na lokaciji koja se također predaje kao
argument. Uz ovo, funkcija dobiva i duljinu polja. U glavnom programu treba
pestirati funkciju na dva polja različitog tipa i duljine čije popunjavanje
treba omogućiti s tipkovnice .

Re: c++ zadaci

PostPostao/la Tracer » 11 ruj 2016, 14:31

cpp code
// 1. zadatak
#include <iostream>
using namespace std;

class Niz {
public:
int cnt, *data;
// konstruktor koji alocira novo int polje i sve
// njegove vrijednosti stavlja na 0
Niz(int n) : cnt(n), data(new int[n] {0}) {}

// operator[] koji vraća vrijednost nekog elementa
int& operator[](int indeks){
return data[indeks];
}

// kopirni konstruktor koji alocira novu memoriju
// i kopira vrijednosti starog niza u novi niz
Niz(const Niz& niz) {
data = new int[niz.cnt];
for (int i = 0; i < niz.cnt; i++)
data[i] = niz.data[i];
}

// dealociraj memoriju kada više nije potrebna
~Niz() {
delete[] data;
}
};
int main() {
Niz a(10);
Niz b(a); // kopirni konstruktor
for (int i = 0; i<10; ++i) {
cout << b[i] << endl;
}
}

2. zadatak je očito krivo prepisan pa ga neću rješavati. U pravilu, treba napraviti 3 klase (geometrijskiLik - bazna, krug i kvadrat koje nasljeđuju geometrijskiLik). Sve tri klase trebaju imati svoju implementaciju metode 'povrsina', a u baznoj klasi ta metoda je virtualna. Najobičniji polimorfizam. Sve ostalo u zadatku su sitnice.

cpp code
// 3. zadatak
#include <iostream>
using namespace std;

template<class T>
int Prebroji(T* niz, int br_elem, int element){
int retVal = 0;
for (int i = 0; i < br_elem; i++)
if (niz[i] == niz[element])
retVal++;
return retVal;
}
int main() {
int polje1[5] = { 3,4,3,6,2 }; // ... ili si samostalno ukucaj preko tipkovnice
int polje2[5] = { 4,2,3,2,2 };

cout << Prebroji(polje1, 5, 2) << endl; // 2
cout << Prebroji(polje2, 5, 4) << endl; // 3
return 0;
}


2 post(ov)a • Stranica: 1/1.

Na mreži

Trenutno korisnika/ca: / i 1 gost.