potrebna pomoc

potrebna pomoc

offline
  • kupi 
  • Novi MyCity građanin
  • Pridružio: 09 Feb 2012
  • Poruke: 8

Imam za zadaću da napravim funkciju koja simulira rad funkcija find_if i replace_copy_if. Napravljene funkcije trebaju biti zasnovane na pokazivačkoj aritmetici i na potpunoj dedukciji tipova. Također treba da rade i sa iteratorima. Za test funkcija se koriste dekovi. Napravio sam funkcije koje cu postaviti u nastavku teksta, ali je problem što kad pozivam te funkcije javlja mi codeblocks sljedecu gresku :
error: no matching function for call to `KopirajUzZamjenuUvjetno(std::_Deque_iterator<int, int&, int*>, std::_Deque_iterator<int, int&, int*>, int*&, <unknown type>, int)'.

Mislim da je problem zbog koristenja pomocne funkcije koja ispituje potrebni uslov. Uslov za pomocnu funkciju koja se koristi u find_if je da se nađe prvi element deka koji ima parnu cifru. Uslov za drugu pomocnu funkciju koja se koristi u replace_copy_if je da se svaki prosti broj zamijeni nulom.
Evo kodovi koje sam napisao. Ne znam je li po pravilima foruma ovako postaviti kodove, ali čini mi se da je ovako preglednije pošto je malo duži kod.

Kod za find_if : find_if
Kod za replace_copy_if: replace_copy_if

Nadam se da bit neko od pomoći. Smile
Hvala.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 19 Maj 2011
  • Poruke: 297

Kolega, imas ovde iplementacije funkcija sa primerima:

replace_copy_if
find_if



offline
  • kupi 
  • Novi MyCity građanin
  • Pridružio: 09 Feb 2012
  • Poruke: 8

morando ::Kolega, imas ovde iplementacije funkcija sa primerima:

replace_copy_if
find_if


pa po tim funkcijama sam i radio Very Happy

offline
  • Pridružio: 19 Maj 2011
  • Poruke: 297

#include <iostream> #include <deque> template<class InputIterator, class Predicate> InputIterator find_if ( InputIterator first, InputIterator last, Predicate pred ) {    for ( ; first!=last ; first++ )       if ( pred(*first) )          break;    return first; } template < class InputIterator, class OutputIterator, class Predicate, class T > OutputIterator replace_copy_if ( InputIterator first, InputIterator last, OutputIterator result, Predicate pred, const T& new_value ) {    for (; first != last; ++first, ++result)       *result = (pred(*first)) ? new_value : *first;    return result; } bool isEven(int i) {    return ((i%2)==0); } bool isPrime(int n) {    for(int i = 2; i < n; i++)    {       if(n%i==0)       {          return false;       }    }    return true; } int main() {    std::deque<int> d, d2;    d.push_back(3);    d.push_back(8);    d.push_back(11);    d.push_back(17);    d.push_back(24);    auto it = find_if(d.begin(), d.end(), isEven);    if(it != d.end())    {       std::cout << "Prvi element u deku sa parnom cifrom je " << *it << ", a nalazi se na poziciji broj " << it - d.begin() << std::endl;    }    else    {       std::cout << "U deku se ne nalazi ni jedan element sa parnom cifrom." << std::endl;    }    d2.resize(d.size());    replace_copy_if(d.begin(), d.end(), d2.begin(), isPrime, 0);    std::cout << "dek 1 : ";    for(auto it = d.begin(); it != d.end(); ++it)    {       std::cout << *it << ", ";    }    std::cout << std::endl;    std::cout << "dek 2 : ";    for(auto it = d2.begin(); it != d2.end(); ++it)    {       std::cout << *it << ", ";    }    std::cout << std::endl;    return 0; }

Nema smisla da ti funkcije Parni i Prost budu template jer u njima koristis % (modulo) koji radi samo sa int tipovima.

offline
  • kupi 
  • Novi MyCity građanin
  • Pridružio: 09 Feb 2012
  • Poruke: 8

Napisano: 06 Apr 2012 15:00

morando :: #include <iostream> #include <deque> template<class InputIterator, class Predicate> InputIterator find_if ( InputIterator first, InputIterator last, Predicate pred ) {    for ( ; first!=last ; first++ )       if ( pred(*first) )          break;    return first; } template < class InputIterator, class OutputIterator, class Predicate, class T > OutputIterator replace_copy_if ( InputIterator first, InputIterator last, OutputIterator result, Predicate pred, const T& new_value ) {    for (; first != last; ++first, ++result)       *result = (pred(*first)) ? new_value : *first;    return result; } bool isEven(int i) {    return ((i%2)==0); } bool isPrime(int n) {    for(int i = 2; i < n; i++)    {       if(n%i==0)       {          return false;       }    }    return true; } int main() {    std::deque<int> d, d2;    d.push_back(3);    d.push_back(8);    d.push_back(11);    d.push_back(17);    d.push_back(24);    auto it = find_if(d.begin(), d.end(), isEven);    if(it != d.end())    {       std::cout << "Prvi element u deku sa parnom cifrom je " << *it << ", a nalazi se na poziciji broj " << it - d.begin() << std::endl;    }    else    {       std::cout << "U deku se ne nalazi ni jedan element sa parnom cifrom." << std::endl;    }    d2.resize(d.size());    replace_copy_if(d.begin(), d.end(), d2.begin(), isPrime, 0);    std::cout << "dek 1 : ";    for(auto it = d.begin(); it != d.end(); ++it)    {       std::cout << *it << ", ";    }    std::cout << std::endl;    std::cout << "dek 2 : ";    for(auto it = d2.begin(); it != d2.end(); ++it)    {       std::cout << *it << ", ";    }    std::cout << std::endl;    return 0; }

Nema smisla da ti funkcije Parni i Prost budu template jer u njima koristis % (modulo) koji radi samo sa int tipovima.

ali uslov zadatka je potpuna dedukcija tipova, tako da moram to stavit :/

Dopuna: 06 Apr 2012 15:23

Probat ću sa int tipom pa valjda mi se prizna. Very Happy Hvala u svakom slučaju. Smile

offline
  • Pridružio: 19 Maj 2011
  • Poruke: 297

Pa jel moze neki drugi tip osim int da bude paran, neparan i prost?
Mora da ti priznaju, a mozda te ovako testiraju da li razmisljas.

Ko je trenutno na forumu
 

Ukupno su 1102 korisnika na forumu :: 57 registrovanih, 6 sakrivenih i 1039 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Acivi, adamantadv, Alibaba1981, Andrija357, babaroga, bagor10, bato, Bluper, Bobrock1, Bokiboks, Boris90, BSD, cavatina, darcaud, debeli, djboj, Djokkinen, djordjekec, DonRumataEstorski, Dorcolac, draganv97, DrugiREI, dule10savic, flash12, Gosha101980, ikan, Kibice, Klecaviks, kobaja77, kokodakalo, Kubovac, Lieutenant, Luka1998, mile23, milenko crazy north, Oscar, Panter, Parker, RJ, rovac, S2M, scimitar19, shone34, slonic_tonic, SR-3m, Srle993, stagezin, theNedjeljko, Tvrtko I, uruk, vathra, vlad4, Vladko, voja64, vukovi, wizzardone, YugoSlav