Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Stream iteratori

[es] :: C/C++ programiranje :: C/C++ za početnike :: Stream iteratori

[ Pregleda: 2323 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

grabber
Gorazde

Član broj: 213110
Poruke: 172
*.pppoe16690.bih.net.ba.



Profil

icon Stream iteratori18.01.2010. u 12:21 - pre 173 meseci
Moze li mi neko na najjednostavniji nacin objasniti upotrebu stream operatora, po mogucnosti na nekom jednostavnom primjeru? Na faksu to radimo, a nikakve literature nemamo, prof kaze "ne treba vam nista, samo slusajte i gledajte na predavanjima", a predavanja su :\

Imamo zadatak uraditi program koji provjerava da li je unesena rijec palindrom, koristeci stream iteratore i copy_if algoritam... ali stream operatori mi nikako ne idu u glavu
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Stream iteratori18.01.2010. u 12:36 - pre 173 meseci
Do sad nisam ni znao da to postoji. Google je pun korisnih linkova, evo prva dva:

http://www.informit.com/guides...spx?g=cplusplus&seqNum=257
http://stdcxx.apache.org/doc/stdlibug/2-3.html
 
Odgovor na temu

grabber
Gorazde

Član broj: 213110
Poruke: 172
92.36.155.*



Profil

icon Re: Stream iteratori18.01.2010. u 14:31 - pre 173 meseci
čudo je taj google :) hvala drug
 
Odgovor na temu

grabber
Gorazde

Član broj: 213110
Poruke: 172
92.36.220.*



Profil

icon Re: Stream iteratori18.01.2010. u 21:34 - pre 173 meseci
Cijeli dan radim ovaj palindrom, i ne moze :(

evo kod kojeg imam za sad, mislim da sam jako blizu, i da negdje grijesim oko pozivanja template funkcije:

Code:
#include<string>
#include<iostream>
#include<iterator>
#include<algorithm>

using namespace std;

template<typename T, typename It, typename it>
T gen_srednja(It pocetak, It kraj, it pocetak2)
{
       int palindrom = 0;
       while ( pocetak != kraj )
            {
                   if(*pocetak==*pocetak2) 
                   {
                           palindrom=1;
                           pocetak++;
                           pocetak2++;
                   }
                   else 
                   { 
                           palindrom=0;
                           break;
                   }
           }
      if (palindrom==1) 
            return "Palindrom";
}

int main()
{
       string a;
       copy(istream_iterator<char> (cin), istream_iterator<char> (), back_inserter(a));
       string b(a.begin(), a.end());
       reverse(b.begin(), b.end());
       cout << gen_srednja<string::iterator>(a.begin(),a.end(), b.begin());
       system("pause");
       return 0;
}
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Stream iteratori19.01.2010. u 09:38 - pre 173 meseci
Ja sam mislio da rešenje treba da bude u par linija koda, da bi shvatio moć tih gotovih algoritama i funkcija iz STL. U ovom slučaju ti treba da utvrdiš da li je neki string jednak stringu koji se dobija obrtanjem redosleda slova u tom stringu. To invertovanje stringa treba uraditi na neku finu elegantnu foru u jednoj liniji. Kad obrneš string samo treba da ga uporediš sa originalom. Ne znam doduše kako za to iskoristiti copy_if, ali zato si ti tu :-)
 
Odgovor na temu

grabber
Gorazde

Član broj: 213110
Poruke: 172
92.36.177.*



Profil

icon Re: Stream iteratori19.01.2010. u 14:15 - pre 173 meseci
Citat:
Mihajlo CvetanovićJa sam mislio da rešenje treba da bude u par linija koda, da bi shvatio moć tih gotovih algoritama i funkcija iz STL. U ovom slučaju ti treba da utvrdiš da li je neki string jednak stringu koji se dobija obrtanjem redosleda slova u tom stringu. To invertovanje stringa treba uraditi na neku finu elegantnu foru u jednoj liniji. Kad obrneš string samo treba da ga uporediš sa originalom. Ne znam doduše kako za to iskoristiti copy_if, ali zato si ti tu :-)


A može i u par linija koda? Vidim ja da sam nešto predugo uradio : )

Parametri template funkcije moraju biti pocetak_prvog, kraj_prvog, pocetak_drugog i pretpostavimo da su oba stringa jednake duzine. Eh a najvise me brine kako pozvati template funkciju ciji su paramtetri iteratori?
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Stream iteratori19.01.2010. u 15:00 - pre 173 meseci
Code:

string a = "nesto";
string b(a);
reverse(b.begin(), b.end());
if (a == b)
  cout << "Palindrom";


Ovo je sa reverse, a sa copy_if nemam pojma.

Sad vidim da i ti imaš reverse, ali šta si ovo posle komplikovao sa gen_srednja?
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Stream iteratori

[ Pregleda: 2323 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.