| Prethodna tema :: Sljedeća tema | 
	
  | 
 
	  
		| Kako ocjenjujete težinu zadataka za vježbu? |  
		| 
			
			  | Ne razumijem što zadaci hoće. |  | 0% | [ 0 ] |  
			  | Shvaćam zadatak, ali ne znam odakle početi. |  | 10% | [ 1 ] |  
			  | Okvirno znam što napraviti, ali ne uspijevam iskodirati. |  | 30% | [ 3 ] |  
			  | Vrlo teško, ali ipak dobivam program koji donekle radi. |  | 10% | [ 1 ] |  
			  | Treba truda ali mogu ih riješiti u razumnom vremenu. |  | 40% | [ 4 ] |  
			  | Teški trivić, hoću prave stvari! |  | 0% | [ 0 ] |  
			  | Ma kakvi zadaci, ne da mi se ni pogledati! |  | 10% | [ 1 ] |  |  
		| Ukupno glasova : 10 |  
 | 
	
		| Autor/ica | Poruka | 
	
		| venovako Forumaš(ica)
 
  
 
 Pridružen/a: 07. 11. 2002. (22:46:38)
 Postovi: (2F9)16
 
 
 | 
			
				|  Postano: 14:58 pon, 9. 10. 2006    Naslov: Zadaci za vježbu |         |  
				| 
 |  
				| Ovdje će se s vremena na vrijeme ukazati zadaci za vježbu.  Njihovo rješavanje posve je na dobrovoljnoj bazi.  Tu su zato da isprobate stvari koje čujete na vježbama a možda vam fali ideje što s njima napraviti.
Ovdje će se s vremena na vrijeme ukazati zadaci za vježbu.  Njihovo rješavanje posve je na dobrovoljnoj bazi.  Tu su zato da isprobate stvari koje čujete na vježbama a možda vam fali ideje što s njima napraviti.
 EDIT: Dodah anketicu pa odgovorite kako bi se ustanovilo ima li ovaj topic uopce smisla...
 
 EDIT': direktni linkovi na zadatke u topicu
 [url=http://degiorgi.math.hr/forum/viewtopic.php?p=63759#63759]zadatak 0.[/url] 09.10.2006.
 [url=http://degiorgi.math.hr/forum/viewtopic.php?p=64372#64372]zadatak 1.[/url] 18.10.2006.
 [url=http://degiorgi.math.hr/forum/viewtopic.php?p=64470#64470]zadaca za vjezbe[/url] 20.10.2006.
 [url=http://degiorgi.math.hr/forum/viewtopic.php?p=64497#64497]zadatak 2.[/url] 20.10.2006.
 [url=http://degiorgi.math.hr/forum/viewtopic.php?p=64631#64631]zadatak 3.[/url] 23.10.2006.
 [url=http://degiorgi.math.hr/forum/viewtopic.php?p=65711#65711]zadatak 4.[/url] 13.11.2006.
 
 --
 
 Zadatak 0.
 
 Kažemo da je tekst dobro formatiran ako vrijedi:
 a) Riječi su odvojene točno jednim razmakom.
 b) Rečenice istog paragrafa odvojene su najviše dvama razmacima.
 (Smatramo da rečenica završava interpunkcijskim znakovima . ! ? iza kojih slijede barem dva razmaka.)
 c) Paragrafi su odvojeni točno jednom praznom linijom.
 d) Zadan je N kao maksimalna duljina linijâ teksta.  Niti jedna linija nije dulja od N i za svaku liniju vrijedi da je potpuno ispunjena.
 
 Linija L je potpuno ispunjena ako je prazna ili joj se ne može nadopisati početna riječ (ili više njih) iz sljedeće linije, tako da je L još uvijek duljine najviše N.
 
 Neka je 66 <= N <= 132.
 Napišite program myFmt, koji prima N kao opcionalni parametar.
 Validni su pozivi, dakle:
 myFmt 72
 myFmt 80
 myFmt
 Poziv "myFmt 54" nije validan jer krši dogovor o dozvoljenom rasponu od N.  Ako opcionalni parametar N nije naveden, podrazumijeva se da iznosi 75.
 
 Program učitava tekst sa standardnog ulaza, liniju po liniju, do EOF i potom ispisuje taj tekst dobro formatiran.
 
 EDIT: Dodah anketicu pa odgovorite kako bi se ustanovilo ima li ovaj topic uopce smisla...
 
 EDIT': direktni linkovi na zadatke u topicu
 zadatak 0. 09.10.2006.
 zadatak 1. 18.10.2006.
 zadaca za vjezbe 20.10.2006.
 zadatak 2. 20.10.2006.
 zadatak 3. 23.10.2006.
 zadatak 4. 13.11.2006.
 
 –
 
 Zadatak 0.
 
 Kažemo da je tekst dobro formatiran ako vrijedi:
 a) Riječi su odvojene točno jednim razmakom.
 b) Rečenice istog paragrafa odvojene su najviše dvama razmacima.
 (Smatramo da rečenica završava interpunkcijskim znakovima . ! ? iza kojih slijede barem dva razmaka.)
 c) Paragrafi su odvojeni točno jednom praznom linijom.
 d) Zadan je N kao maksimalna duljina linijâ teksta.  Niti jedna linija nije dulja od N i za svaku liniju vrijedi da je potpuno ispunjena.
 
 Linija L je potpuno ispunjena ako je prazna ili joj se ne može nadopisati početna riječ (ili više njih) iz sljedeće linije, tako da je L još uvijek duljine najviše N.
 
 Neka je 66 ⇐ N ⇐ 132.
 Napišite program myFmt, koji prima N kao opcionalni parametar.
 Validni su pozivi, dakle:
 myFmt 72
 myFmt 80
 myFmt
 Poziv "myFmt 54" nije validan jer krši dogovor o dozvoljenom rasponu od N.  Ako opcionalni parametar N nije naveden, podrazumijeva se da iznosi 75.
 
 Program učitava tekst sa standardnog ulaza, liniju po liniju, do EOF i potom ispisuje taj tekst dobro formatiran.
 
 
 
 Zadnja promjena: venovako; 23:57 pon, 13. 11. 2006; ukupno mijenjano 5 put/a.
 |  | 
	
		| [Vrh] |  | 
	
		| GauSs_ Moderator
 
  
  
 Pridružen/a: 28. 01. 2004. (21:01:17)
 Postovi: (53C)16
 Spol:
  Lokacija: 231
 
 | 
			
				|  Postano: 18:06 pon, 9. 10. 2006    Naslov: Re: Zadaci za vježbu |         |  
				| 
 |  
				| [quote="venovako"]
c) Paragrafi su odvojeni točno jednom praznom linijom.[/quote]
 
 po cemu prepoznajemo paragrafe na unosu?
 koliko korisnik moze biti glup?
  	  | venovako (napisa): |  	  | c) Paragrafi su odvojeni točno jednom praznom linijom.
 | 
 
 po cemu prepoznajemo paragrafe na unosu?
 koliko korisnik moze biti glup?
 _________________ The purpose of life is to end
   
Prosle su godine kolokviji bili laksi, zar ne? |  | 
	
		| [Vrh] |  | 
	
		| venovako Forumaš(ica)
 
  
 
 Pridružen/a: 07. 11. 2002. (22:46:38)
 Postovi: (2F9)16
 
 
 |  | 
	
		| [Vrh] |  | 
	
		| mdoko Forumaš(ica)
 
  
  
 Pridružen/a: 30. 11. 2002. (22:17:12)
 Postovi: (71A)16
 Spol:
  Lokacija: Heriot-Watt University, Edinburgh
 
 |  | 
	
		| [Vrh] |  | 
	
		| venovako Forumaš(ica)
 
  
 
 Pridružen/a: 07. 11. 2002. (22:46:38)
 Postovi: (2F9)16
 
 
 |  | 
	
		| [Vrh] |  | 
	
		| GauSs_ Moderator
 
  
  
 Pridružen/a: 28. 01. 2004. (21:01:17)
 Postovi: (53C)16
 Spol:
  Lokacija: 231
 
 | 
			
				|  Postano: 9:48 uto, 10. 10. 2006    Naslov: |         |  
				| 
 |  
				| nije mi bas jasan ovaj [b]fmt[/b]
nije mi bas jasan ovaj fmt
 na primjeru:
 [code:1]
 ovo je zakon. ma daj.   evo nesto sam tako.
 prica jedna. hehe.
 
 nije normalna! zar ne? hehehe.
 
 ??! !!?? a sta sad?  .
 
 
 ovo je        ludnica.[/code:1]
 
 za [code:1]# fmt -u test.txt [/code:1]
 
 vraca:
 [code:1]
 ovo je zakon. ma daj.  evo nesto sam tako.  prica jedna. hehe.
 
 nije normalna! zar ne? hehehe.
 
 ??! !!?? a sta sad?  .
 
 
 ovo je ludnica.
 [/code:1]
 
 i ocito mi ne odvoji recenice sa dva space-a.
 
 na primjeru:
 
  	  | Kod: |  	  | ovo je zakon. ma daj.   evo nesto sam tako.
 prica jedna. hehe.
 
 nije normalna! zar ne? hehehe.
 
 ??! !!?? a sta sad?  .
 
 
 ovo je        ludnica.
 | 
 
 za
 
 vraca:
 
  	  | Kod: |  	  | ovo je zakon. ma daj.  evo nesto sam tako.  prica jedna. hehe.
 
 nije normalna! zar ne? hehehe.
 
 ??! !!?? a sta sad?  .
 
 
 ovo je ludnica.
 
 | 
 
 i ocito mi ne odvoji recenice sa dva space-a.
 _________________ The purpose of life is to end
   
Prosle su godine kolokviji bili laksi, zar ne? |  | 
	
		| [Vrh] |  | 
	
		| vsego Site Admin
 
  
  
 Pridružen/a: 06. 10. 2002. (22:07:09)
 Postovi: (3562)16
 Spol:
  Lokacija: /sbin/init
 
 | 
			
				|  Postano: 10:11 uto, 10. 10. 2006    Naslov: |         |  
				| 
 |  
				| [code:1][vsego@degiorgi tmp]$ cat > test.txt
 ovo je zakon. ma daj.   evo nesto sam tako.
 prica jedna. hehe.
 
 nije normalna! zar ne? hehehe.
 
 ??! !!?? a sta sad?  .
 
 
 ovo je        ludnica.
 [vsego@degiorgi tmp]$ fmt -u test.txt
 
 ovo je zakon. ma daj.  evo nesto sam tako.  prica jedna. hehe.
 
 nije normalna! zar ne? hehehe.
 
 ??! !!?? a sta sad?  .
 
 
 ovo je ludnica.
 [vsego@degiorgi tmp]$ fmt --version
 fmt (coreutils) 5.2.1
 Written by Ross Paterson.
 
 Copyright (C) 2004 Free Software Foundation, Inc.
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.[/code:1]
 
 Cini mi se da [tt]fmt[/tt] samo mice viskove (newlineova i razmaka), ali ne dodaje nista. 8) Drugim rijecima, separator recenica mu je [tt]/[.?!] {2,}/[/tt], cime se postize da ne grijesi kod rednih brojeva, kratica, faktorijela i sl. 8)
  	  | Kod: |  	  | [vsego@degiorgi tmp]$ cat > test.txt 
 ovo je zakon. ma daj.   evo nesto sam tako.
 prica jedna. hehe.
 
 nije normalna! zar ne? hehehe.
 
 ??! !!?? a sta sad?  .
 
 
 ovo je        ludnica.
 [vsego@degiorgi tmp]$ fmt -u test.txt
 
 ovo je zakon. ma daj.  evo nesto sam tako.  prica jedna. hehe.
 
 nije normalna! zar ne? hehehe.
 
 ??! !!?? a sta sad?  .
 
 
 ovo je ludnica.
 [vsego@degiorgi tmp]$ fmt --version
 fmt (coreutils) 5.2.1
 Written by Ross Paterson.
 
 Copyright (C) 2004 Free Software Foundation, Inc.
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | 
 
 Cini mi se da fmt samo mice viskove (newlineova i razmaka), ali ne dodaje nista.
  Drugim rijecima, separator recenica mu je /[.?!] {2,}/, cime se postize da ne grijesi kod rednih brojeva, kratica, faktorijela i sl.   _________________U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima. Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
  |  | 
	
		| [Vrh] |  | 
	
		| venovako Forumaš(ica)
 
  
 
 Pridružen/a: 07. 11. 2002. (22:46:38)
 Postovi: (2F9)16
 
 
 | 
			
				|  Postano: 10:12 uto, 10. 10. 2006    Naslov: |         |  
				| 
 |  
				| Pogledah [tt]info fmt[/tt] na Sistemu i za opciju [tt]-u[/tt] veli "[b]Reduce[/b] spacing between words to one space, and spacing between sentences to two spaces."
Pogledah info fmt na Sistemu i za opciju -u veli "Reduce spacing between words to one space, and spacing between sentences to two spaces."
 Isprobah i doista reducira bjeline ako ih ima > 2, ali ne dupla jednostruke bjeline...
 
 Kad se malo razmisli, to cak ima smisla :)
 Tako npr. prolaze skracenice i redni brojevi.
 
 Modificirat cu zadatak tako da uvazi tu cinjenicu.
 Svejedno je sto pise, ovo je ionako vjezba.
 Tko je radio po starom, isto OK.
 
 Ideja zadatka nije reimplementirati [tt]fmt[/tt] (sto bi definitivno bio overkill).
 
 P.S. vsego je, as usual, superbrz na okidacu :)
 
 Isprobah i doista reducira bjeline ako ih ima > 2, ali ne dupla jednostruke bjeline...
 
 Kad se malo razmisli, to cak ima smisla
   Tako npr. prolaze skracenice i redni brojevi.
 
 Modificirat cu zadatak tako da uvazi tu cinjenicu.
 Svejedno je sto pise, ovo je ionako vjezba.
 Tko je radio po starom, isto OK.
 
 Ideja zadatka nije reimplementirati fmt (sto bi definitivno bio overkill).
 
 P.S. vsego je, as usual, superbrz na okidacu
   
 
 |  | 
	
		| [Vrh] |  | 
	
		| GauSs_ Moderator
 
  
  
 Pridružen/a: 28. 01. 2004. (21:01:17)
 Postovi: (53C)16
 Spol:
  Lokacija: 231
 
 | 
			
				|  Postano: 10:25 uto, 10. 10. 2006    Naslov: |         |  
				| 
 |  
				| ovaj [b]fmt[/b] je stvarno malo glupast
ovaj fmt je stvarno malo glupast
 evo za:
 [code:1]
 pimuf@pr1-19 ~/c_c++/rp4 0 :: fmt -u -w 98 beta.txt
 The parameters index and num have default values, which means that erase() can be called with
 just index to erase all characters after index or with no arguments to erase all characters.
 Druga recenica.  Treca recenica.
 
 Cetvrta recenica?
 pimuf@pr1-19 ~/c_c++/rp4 0 :: fmt -u -w 104 beta.txt
 The parameters index and num have default values, which means that erase() can be called with
 just index to erase all characters after index or with no arguments to erase all characters.
 Druga recenica.  Treca recenica.
 
 Cetvrta recenica?
 [/code:1]
 
 a ocito je da just moze stati u prvu liniju kada podignemo broj znakova na 104
 
 evo za:
 
  	  | Kod: |  	  | pimuf@pr1-19 ~/c_c++/rp4 0 :: fmt -u -w 98 beta.txt
 The parameters index and num have default values, which means that erase() can be called with
 just index to erase all characters after index or with no arguments to erase all characters.
 Druga recenica.  Treca recenica.
 
 Cetvrta recenica?
 pimuf@pr1-19 ~/c_c++/rp4 0 :: fmt -u -w 104 beta.txt
 The parameters index and num have default values, which means that erase() can be called with
 just index to erase all characters after index or with no arguments to erase all characters.
 Druga recenica.  Treca recenica.
 
 Cetvrta recenica?
 
 | 
 
 a ocito je da just moze stati u prvu liniju kada podignemo broj znakova na 104
 _________________ The purpose of life is to end
   
Prosle su godine kolokviji bili laksi, zar ne?
 Zadnja promjena: GauSs_; 12:46 uto, 10. 10. 2006; ukupno mijenjano 2 put/a.
 |  | 
	
		| [Vrh] |  | 
	
		| vsego Site Admin
 
  
  
 Pridružen/a: 06. 10. 2002. (22:07:09)
 Postovi: (3562)16
 Spol:
  Lokacija: /sbin/init
 
 |  | 
	
		| [Vrh] |  | 
	
		| GauSs_ Moderator
 
  
  
 Pridružen/a: 28. 01. 2004. (21:01:17)
 Postovi: (53C)16
 Spol:
  Lokacija: 231
 
 | 
			
				|  Postano: 10:40 uto, 10. 10. 2006    Naslov: |         |  
				| 
 |  
				| evo:
evo:[code:1]
 #include <iostream>
 #include <string>
 
 #include <cctype>
 
 using std::cin;
 using std::cout;
 using std::endl;
 using std::string;
 
 bool kriterij_paragraf( string const &pomoc){
 // provjerava da li se dani string sastoji samo
 // od space-ova te da li je prazan
 if( pomoc.size()==0) return true;
 if( pomoc.find_first_not_of(' ')==string::npos ) return true;
 
 return false;
 }
 
 void modificiraj( string &tekst){
 
 // modificira string tako da mijenja:
 // '. ' -> '.  ' , '? ' -> '?  ' , '! ' -> '!  '
 for( string::size_type i=0; i<tekst.size()-1; ++i){
 if( tekst[i]=='.' && tekst[i+1]==' ' ){
 tekst.replace( i, 1, ". ", 0, 2);
 }
 else if( tekst[i]=='?' && tekst[i+1]==' ' ){
 tekst.replace( i, 1, "? ", 0, 2);
 }
 else if( tekst[i]=='!' && tekst[i+1]==' ' ){
 tekst.replace( i, 1, "! ", 0, 2);
 }
 }
 
 // modificira string tako da "ubija" visetruke
 // uzastopne space-ove
 // kod pocetka recenice ostavlja 2 inace 1
 string::size_type brojac=0;
 while ( ( brojac=tekst.find("  ", brojac) ) != string::npos ){
 if( tekst[brojac-1]!='.' && tekst[brojac-1]!='?' && tekst[brojac-1]!='!' ){
 tekst.replace( brojac, 2, " ", 0, 1);
 continue;
 }
 ++brojac;
 }
 
 // modificira string tako da mijenja '  \n\n' -> '\n\n'
 brojac=0;
 while ( ( brojac=tekst.find("  \n\n", brojac) ) != string::npos ){
 tekst.replace( brojac, 3, "\n ", 0, 1);
 ++brojac;
 }
 
 // brise posljednj dva znaka u stringu koji su space-ovi
 // zbog nacina stvaranja stringa "tekst"
 // u main-u ( tekst+=pomoc+" " )
 // i gore izvedene konverzije
 tekst.erase(tekst.size()-2, 2);
 
 }
 
 int main( int argc, char *argv[]){
 
 if(argc>2){
 cout << "Nepravilan poziv programa!!!\n> Previse argumenata." << endl;
 return 1;
 }
 
 int broj=75;
 if( argc==2 ){
 string pomoc(argv[1]);
 for( string::size_type i=0; i<pomoc.size(); ++i){
 if( !isdigit(pomoc[i]) ){
 cout << "Nepravilan poziv programa!!!\n> Drugi argument nije broj." << endl;
 return 2;
 }
 }
 
 broj=atoi(argv[1]);
 }
 
 if( broj<66 || broj>132){
 cout << "Nepravilan poziv programa!!!\n> Drugi argument mora biti broj izmedju 66 i 132." << endl;
 return 3;
 }
 
 // ucitiva tekst sa standardong ulaza liniju po liniju
 // te ga lijepi na vec prije uneseni tekst
 string pomoc, tekst;
 bool paragraf=false;
 while( getline( cin, pomoc) ){
 
 // ako zadovoljava kriterije za paragraf
 // tj. sadrzi samo praznine ili je prazan
 if( kriterij_paragraf( pomoc) ){
 
 // ako je do sada uneseni tekst velicine 0, tj. na pocetku smo
 // onda zanemari sve prazne linije
 if( tekst.size()==0 ) continue;
 else{
 // inace vec postoji tekst pa je prazna
 // linija oznaka za novi paragraf
 paragraf=true;
 continue;
 }
 }
 
 // ako smo ucitali tekst (ne zadovoljava kriterije paragrafa,
 // pogledati gore funkciju) i prije je bila unesena prazna
 // linija (ili vise), tj. paragraf=true
 // onda lijepi '\n\n' na kraj "tekst"-a
 if( pomoc.size()!=0 && paragraf==true){
 tekst+="\n\n";
 paragraf=false;
 }
 
 // lijepi unesenu liniju na prije ucitani tekst
 tekst+=pomoc+" ";
 }
 
 // pogledati opis funkcije
 modificiraj( tekst);
 
 // "kida" tekst na linije velicine varijable broj
 // dodajuci '\n' character
 // prethodni pamti polozaj najblizeg space-a kojeg smo prosli
 // brojac broji koliko smo karaktera prosli
 string::size_type brojac=0, prethodni=0;
 for( string::size_type i=0; i<tekst.size(); ++i){
 
 // ako smo prosli broj karaktera a nismo se prebacili
 // u novu liniju onda se prebacujemo
 // dodavanjem '\n' charactera na mjesto
 // sa indeksom prethodni, tj. na najblizi prodjen space
 if( brojac==broj ){
 tekst.replace( prethodni, 1, "\n", 0, 1);
 brojac=0;
 
 // vracamo se na indeks prethodni+1
 // jer smo na indeksu prethodni prekinuli liniju
 i=prethodni+1;
 
 continue;
 }
 
 // ako je trenutni character space postavi prethodni
 if( tekst[i]==' ' ) prethodni=i;
 // ako je trenutni character '\n' resetiraj brojac
 // jer se tu prebacujemo u novu liniju
 else if( tekst[i]=='\n' ) brojac=0;
 
 ++brojac;
 }
 
 cout << tekst << endl;
 
 return 0;
 }
 
 [/code:1]
 
 za pocetnika u C++ valjda nije lose
 
 EDIT: dodani komentari u kod i modificirao [b]modificiraj[/b]
 
  	  | Kod: |  	  | #include <iostream>
 #include <string>
 
 #include <cctype>
 
 using std::cin;
 using std::cout;
 using std::endl;
 using std::string;
 
 bool kriterij_paragraf( string const &pomoc){
 // provjerava da li se dani string sastoji samo
 // od space-ova te da li je prazan
 if( pomoc.size()==0) return true;
 if( pomoc.find_first_not_of(' ')==string::npos ) return true;
 
 return false;
 }
 
 void modificiraj( string &tekst){
 
 // modificira string tako da mijenja:
 // '. ' -> '.  ' , '? ' -> '?  ' , '! ' -> '!  '
 for( string::size_type i=0; i<tekst.size()-1; ++i){
 if( tekst[i]=='.' && tekst[i+1]==' ' ){
 tekst.replace( i, 1, ". ", 0, 2);
 }
 else if( tekst[i]=='?' && tekst[i+1]==' ' ){
 tekst.replace( i, 1, "? ", 0, 2);
 }
 else if( tekst[i]=='!' && tekst[i+1]==' ' ){
 tekst.replace( i, 1, "! ", 0, 2);
 }
 }
 
 // modificira string tako da "ubija" visetruke
 // uzastopne space-ove
 // kod pocetka recenice ostavlja 2 inace 1
 string::size_type brojac=0;
 while ( ( brojac=tekst.find("  ", brojac) ) != string::npos ){
 if( tekst[brojac-1]!='.' && tekst[brojac-1]!='?' && tekst[brojac-1]!='!' ){
 tekst.replace( brojac, 2, " ", 0, 1);
 continue;
 }
 ++brojac;
 }
 
 // modificira string tako da mijenja '  \n\n' -> '\n\n'
 brojac=0;
 while ( ( brojac=tekst.find("  \n\n", brojac) ) != string::npos ){
 tekst.replace( brojac, 3, "\n ", 0, 1);
 ++brojac;
 }
 
 // brise posljednj dva znaka u stringu koji su space-ovi
 // zbog nacina stvaranja stringa "tekst"
 // u main-u ( tekst+=pomoc+" " )
 // i gore izvedene konverzije
 tekst.erase(tekst.size()-2, 2);
 
 }
 
 int main( int argc, char *argv[]){
 
 if(argc>2){
 cout << "Nepravilan poziv programa!!!\n> Previse argumenata." << endl;
 return 1;
 }
 
 int broj=75;
 if( argc==2 ){
 string pomoc(argv[1]);
 for( string::size_type i=0; i<pomoc.size(); ++i){
 if( !isdigit(pomoc[i]) ){
 cout << "Nepravilan poziv programa!!!\n> Drugi argument nije broj." << endl;
 return 2;
 }
 }
 
 broj=atoi(argv[1]);
 }
 
 if( broj<66 || broj>132){
 cout << "Nepravilan poziv programa!!!\n> Drugi argument mora biti broj izmedju 66 i 132." << endl;
 return 3;
 }
 
 // ucitiva tekst sa standardong ulaza liniju po liniju
 // te ga lijepi na vec prije uneseni tekst
 string pomoc, tekst;
 bool paragraf=false;
 while( getline( cin, pomoc) ){
 
 // ako zadovoljava kriterije za paragraf
 // tj. sadrzi samo praznine ili je prazan
 if( kriterij_paragraf( pomoc) ){
 
 // ako je do sada uneseni tekst velicine 0, tj. na pocetku smo
 // onda zanemari sve prazne linije
 if( tekst.size()==0 ) continue;
 else{
 // inace vec postoji tekst pa je prazna
 // linija oznaka za novi paragraf
 paragraf=true;
 continue;
 }
 }
 
 // ako smo ucitali tekst (ne zadovoljava kriterije paragrafa,
 // pogledati gore funkciju) i prije je bila unesena prazna
 // linija (ili vise), tj. paragraf=true
 // onda lijepi '\n\n' na kraj "tekst"-a
 if( pomoc.size()!=0 && paragraf==true){
 tekst+="\n\n";
 paragraf=false;
 }
 
 // lijepi unesenu liniju na prije ucitani tekst
 tekst+=pomoc+" ";
 }
 
 // pogledati opis funkcije
 modificiraj( tekst);
 
 // "kida" tekst na linije velicine varijable broj
 // dodajuci '\n' character
 // prethodni pamti polozaj najblizeg space-a kojeg smo prosli
 // brojac broji koliko smo karaktera prosli
 string::size_type brojac=0, prethodni=0;
 for( string::size_type i=0; i<tekst.size(); ++i){
 
 // ako smo prosli broj karaktera a nismo se prebacili
 // u novu liniju onda se prebacujemo
 // dodavanjem '\n' charactera na mjesto
 // sa indeksom prethodni, tj. na najblizi prodjen space
 if( brojac==broj ){
 tekst.replace( prethodni, 1, "\n", 0, 1);
 brojac=0;
 
 // vracamo se na indeks prethodni+1
 // jer smo na indeksu prethodni prekinuli liniju
 i=prethodni+1;
 
 continue;
 }
 
 // ako je trenutni character space postavi prethodni
 if( tekst[i]==' ' ) prethodni=i;
 // ako je trenutni character '\n' resetiraj brojac
 // jer se tu prebacujemo u novu liniju
 else if( tekst[i]=='\n' ) brojac=0;
 
 ++brojac;
 }
 
 cout << tekst << endl;
 
 return 0;
 }
 
 
 | 
 
 za pocetnika u C++ valjda nije lose
 
 EDIT: dodani komentari u kod i modificirao modificiraj
 _________________ The purpose of life is to end
   
Prosle su godine kolokviji bili laksi, zar ne?
 Zadnja promjena: GauSs_; 12:24 uto, 10. 10. 2006; ukupno mijenjano 5 put/a.
 |  | 
	
		| [Vrh] |  | 
	
		| venovako Forumaš(ica)
 
  
 
 Pridružen/a: 07. 11. 2002. (22:46:38)
 Postovi: (2F9)16
 
 
 | 
			
				|  Postano: 10:46 uto, 10. 10. 2006    Naslov: |         |  
				| 
 |  
				| @GauSs_:
@GauSs_:
 Za C++ pocetnika ovo je, na prvi pogled, i vise nego dobro, samo mi je malo komplicirano snaci se bez ijednog komentara.  Na ono sto sam dosad skuzio imam pokoju primjedbicu, ali komentari slijede kad proucim sve.
 
 Sto se fmt-a tice, info za -w opciju veli:
 "Fill output lines up to WIDTH characters (default 75).  `fmt' initially tries to make lines about 7% shorter than this, to give it room to balance line lengths."
 Ako to ne pise u tvom infu, moj fmt je iz coreutils-a 6.3 (da, bleeding edge, ali se isplati).
 Zato i nije ideja reimplementirat fmt, jer ima toliko carolija...
 
 Napomena:  Od velike pomoci pri kodiranju mogu biti string streamovi.
 
 Za C++ pocetnika ovo je, na prvi pogled, i vise nego dobro, samo mi je malo komplicirano snaci se bez ijednog komentara.  Na ono sto sam dosad skuzio imam pokoju primjedbicu, ali komentari slijede kad proucim sve.
 
 Sto se fmt-a tice, info za -w opciju veli:
 "Fill output lines up to WIDTH characters (default 75).  `fmt' initially tries to make lines about 7% shorter than this, to give it room to balance line lengths."
 Ako to ne pise u tvom infu, moj fmt je iz coreutils-a 6.3 (da, bleeding edge, ali se isplati).
 Zato i nije ideja reimplementirat fmt, jer ima toliko carolija...
 
 Napomena:  Od velike pomoci pri kodiranju mogu biti string streamovi.
 
 
 |  | 
	
		| [Vrh] |  | 
	
		| venovako Forumaš(ica)
 
  
 
 Pridružen/a: 07. 11. 2002. (22:46:38)
 Postovi: (2F9)16
 
 
 |  | 
	
		| [Vrh] |  | 
	
		| GauSs_ Moderator
 
  
  
 Pridružen/a: 28. 01. 2004. (21:01:17)
 Postovi: (53C)16
 Spol:
  Lokacija: 231
 
 |  | 
	
		| [Vrh] |  | 
	
		| GauSs_ Moderator
 
  
  
 Pridružen/a: 28. 01. 2004. (21:01:17)
 Postovi: (53C)16
 Spol:
  Lokacija: 231
 
 | 
			
				|  Postano: 6:52 sri, 11. 10. 2006    Naslov: |         |  
				| 
 |  
				| hmmm. nasao sam nesto sto bi sam promijenio.
hmmm. nasao sam nesto sto bi sam promijenio.
 [code:1]
 // modificira string tako da "ubija" visetruke
 // uzastopne space-ove
 // kod pocetka recenice ostavlja 2 inace 1
 string::size_type brojac=0;
 while ( ( brojac=tekst.find("  ", brojac) ) != string::npos ){
 if( tekst[brojac-1]!='.' && tekst[brojac-1]!='?' && tekst[brojac-1]!='!' ){
 tekst.replace( brojac, 2, " ", 0, 1);
 continue;
 }
 ++brojac;
 }
 
 [/code:1]
 
 sa
 
 [code:1]
 // modificira string tako da "ubija" visetruke
 // uzastopne space-ove
 // kod pocetka recenice ostavlja 2 inace 1
 string::size_type brojac=0;
 while ( ( brojac=tekst.find("  ", brojac) ) != string::npos ){
 if( tekst[brojac-1]!='.' && tekst[brojac-1]!='?' && tekst[brojac-1]!='!' ){
 tekst.erase( brojac, 1); // prije bijase tekst.replace( brojac, 2, " ", 0, 1);
 continue;
 }
 ++brojac;
 }
 [/code:1]
 
 
  	  | Kod: |  	  | // modificira string tako da "ubija" visetruke
 // uzastopne space-ove
 // kod pocetka recenice ostavlja 2 inace 1
 string::size_type brojac=0;
 while ( ( brojac=tekst.find("  ", brojac) ) != string::npos ){
 if( tekst[brojac-1]!='.' && tekst[brojac-1]!='?' && tekst[brojac-1]!='!' ){
 tekst.replace( brojac, 2, " ", 0, 1);
 continue;
 }
 ++brojac;
 }
 
 
 | 
 
 sa
 
 
  	  | Kod: |  	  | // modificira string tako da "ubija" visetruke
 // uzastopne space-ove
 // kod pocetka recenice ostavlja 2 inace 1
 string::size_type brojac=0;
 while ( ( brojac=tekst.find("  ", brojac) ) != string::npos ){
 if( tekst[brojac-1]!='.' && tekst[brojac-1]!='?' && tekst[brojac-1]!='!' ){
 tekst.erase( brojac, 1); // prije bijase tekst.replace( brojac, 2, " ", 0, 1);
 continue;
 }
 ++brojac;
 }
 
 | 
 _________________ The purpose of life is to end
   
Prosle su godine kolokviji bili laksi, zar ne? |  | 
	
		| [Vrh] |  | 
	
		| GauSs_ Moderator
 
  
  
 Pridružen/a: 28. 01. 2004. (21:01:17)
 Postovi: (53C)16
 Spol:
  Lokacija: 231
 
 | 
			
				|  Postano: 13:25 sri, 11. 10. 2006    Naslov: |         |  
				| 
 |  
				| danas je profesor rekao na predavanjima da nije pametno pisati:
danas je profesor rekao na predavanjima da nije pametno pisati:[code:1]
 for( ... i=0; i<nesto.size() ; ++i){
 ...
 }
 [/code:1]
 i u tijelu petlje mijenjati string nesto.
 
 pa sam modificirao program prema profesorovoj primjedbi i jos ga malo preuredio.
 
 sada imam dvije funkcije za istu stvar pri cemu je verzija1 stara a verzija2 nova (kao ispravnija).
 
 onaj dio sam "kidanjem" teksta sam sada stavio kao funkciju razlomi.
 kod te funkcije nije mi se dalo prepravljati po gornjoj (profesorovoj) primjedbi ( jer kod mene radi :) ).
 
 evo i mala [url=http://www.iugrina.com/tmp/test.txt]datoteka[/url] za testiranje. nemojte samo kopirati tekst
 iz datoteke vec ju download-ajte. ("Save Link As")
 
 za one koji rade pod *nix-om program mogu pokrenuti ovako:
 [code:1]$ cat test.txt | ime_programa [/code:1]
 
 
 [code:1]
 #include <iostream>
 #include <string>
 
 #include <cctype>
 
 using std::cin;
 using std::cout;
 using std::endl;
 using std::string;
 
 bool kriterij_paragraf( string const &pomoc){
 // provjerava da li se dani string sastoji samo
 // od space-ova te da li je prazan
 if( pomoc.size()==0) return true;
 if( pomoc.find_first_not_of(' ')==string::npos ) return true;
 
 return false;
 }
 
 void verzija1( string &tekst){
 // modificira string tako da mijenja:
 // '. ' -> '.  ' , '? ' -> '?  ' , '! ' -> '!  '
 for( string::size_type i=0; i<tekst.size()-1; ++i){
 if( tekst[i]=='.' && tekst[i+1]==' ' ){
 tekst.replace( i, 1, ". ", 0, 2);
 }
 else if( tekst[i]=='?' && tekst[i+1]==' ' ){
 tekst.replace( i, 1, "? ", 0, 2);
 }
 else if( tekst[i]=='!' && tekst[i+1]==' ' ){
 tekst.replace( i, 1, "! ", 0, 2);
 }
 }
 }
 
 void verzija2( string &tekst){
 string novi;
 
 // modificira string tako da mijenja:
 // '. ' -> '.  ' , '? ' -> '?  ' , '! ' -> '!  '
 string::size_type prethodni=0;
 string::size_type end=tekst.size()-1;
 for( string::size_type i=0; i<end; ++i){
 if( ( tekst[i]=='.' || tekst[i]=='!' || tekst[i]=='?' ) && tekst[i+1]==' '){
 novi+=tekst.substr( prethodni, i+1 - prethodni )+" ";
 prethodni=i+1;
 ++i;
 }
 }
 
 novi+=tekst.substr( prethodni);
 
 tekst=novi;
 }
 
 bool modificiraj( string &tekst, int verzija=2){
 
 if( verzija!=1 && verzija!=2 ) return false;
 verzija==1 ? verzija1( tekst) : verzija2( tekst);
 
 // modificira string tako da "ubija" visetruke
 // uzastopne space-ove
 // kod pocetka recenice ostavlja 2 inace 1
 string::size_type brojac=0;
 while ( ( brojac=tekst.find("  ", brojac) ) != string::npos ){
 if( tekst[brojac-1]!='.' && tekst[brojac-1]!='?' && tekst[brojac-1]!='!' ){
 tekst.erase( brojac, 1);
 continue;
 }
 ++brojac;
 }
 
 // modificira string tako da mijenja '  \n\n' -> '\n\n'
 brojac=0;
 while ( ( brojac=tekst.find("  \n\n", brojac) ) != string::npos ){
 tekst.replace( brojac, 3, "\n ", 0, 1);
 ++brojac;
 }
 
 // modificira string tako da mijenja '\n ' -> '\n'
 brojac=0;
 while ( ( brojac=tekst.find("\n ", brojac) ) != string::npos ){
 tekst.replace( brojac, 2, "\n", 0, 1);
 ++brojac;
 }
 
 // brise posljednj dva znaka u stringu koji su space-ovi
 // zbog nacina stvaranja stringa "tekst"
 // u main-u ( tekst+=pomoc+" " )
 // i gore izvedene konverzije
 if( tekst[tekst.size()-2]==' ' ){
 tekst.erase( tekst.size()-2, 2 );
 }
 // odnosno samo zadnji znak ako korisnik nije zavrsio s . ? !
 else{
 tekst.erase( tekst.size()-1, 1);
 }
 
 // brise prvi znak teksta ako je space
 if( tekst[0]==' ' ){
 tekst.erase( 0, 1);
 }
 
 return true;
 }
 
 void razlomi( string &tekst, int broj){
 // "kida" tekst na linije velicine varijable broj
 // dodajuci '\n' character
 // prethodni pamti polozaj najblizeg space-a kojeg smo prosli
 // brojac broji koliko smo karaktera prosli
 string::size_type brojac=0, prethodni=0;
 for( string::size_type i=0; i<tekst.size(); ++i){
 
 // ako smo prosli broj karaktera a nismo se prebacili
 // u novu liniju onda se prebacujemo
 // dodavanjem '\n' charactera na mjesto
 // sa indeksom prethodni, tj. na najblizi prodjen space
 if( brojac==broj ){
 tekst.replace( prethodni, 1, "\n", 0, 1);
 brojac=0;
 
 // vracamo se na indeks prethodni+1
 // jer smo na indeksu prethodni prekinuli liniju
 i=prethodni+1;
 
 continue;
 }
 
 // ako je trenutni character space postavi prethodni
 if( tekst[i]==' ' ) prethodni=i;
 // ako je trenutni character '\n' resetiraj brojac
 // jer se tu prebacujemo u novu liniju
 else if( tekst[i]=='\n' ) brojac=0;
 
 ++brojac;
 }
 }
 
 int main( int argc, char *argv[]){
 
 if(argc>2){
 cout << "Nepravilan poziv programa!!!\n> Previse argumenata." << endl;
 return 1;
 }
 
 int broj=75;
 if( argc==2 ){
 string pomoc(argv[1]);
 for( string::size_type i=0; i<pomoc.size(); ++i){
 if( !isdigit(pomoc[i]) ){
 cout << "Nepravilan poziv programa!!!\n> Drugi argument nije broj." << endl;
 return 2;
 }
 }
 
 broj=atoi(argv[1]);
 }
 
 if( broj<66 || broj>132){
 cout << "Nepravilan poziv programa!!!\n> Drugi argument mora biti broj izmedju 66 i 132." << endl;
 return 3;
 }
 
 // ucitiva tekst sa standardong ulaza liniju po liniju
 // te ga lijepi na vec prije uneseni tekst
 string pomoc, tekst;
 bool paragraf=false;
 while( getline( cin, pomoc) ){
 
 // ako zadovoljava kriterije za paragraf
 // tj. sadrzi samo praznine ili je prazan
 if( kriterij_paragraf( pomoc) ){
 
 // ako je do sada uneseni tekst velicine 0, tj. na pocetku smo
 // onda zanemari sve prazne linije
 if( tekst.size()==0 ) continue;
 else{
 // inace vec postoji tekst pa je prazna
 // linija oznaka za novi paragraf
 paragraf=true;
 continue;
 }
 }
 
 // ako smo ucitali tekst (ne zadovoljava kriterije paragrafa,
 // pogledati gore funkciju) i prije je bila unesena prazna
 // linija (ili vise), tj. paragraf=true
 // onda lijepi '\n\n' na kraj "tekst"-a
 if( pomoc.size()!=0 && paragraf==true){
 tekst+="\n\n";
 paragraf=false;
 }
 
 // lijepi unesenu liniju na prije ucitani tekst
 tekst+=pomoc+" ";
 }
 
 modificiraj( tekst);
 razlomi( tekst, broj);
 
 cout << tekst << endl;
 
 return 0;
 }
 
 [/code:1]
 
  	  | Kod: |  	  | for( ... i=0; i<nesto.size() ; ++i){
 ...
 }
 
 | 
 i u tijelu petlje mijenjati string nesto.
 
 pa sam modificirao program prema profesorovoj primjedbi i jos ga malo preuredio.
 
 sada imam dvije funkcije za istu stvar pri cemu je verzija1 stara a verzija2 nova (kao ispravnija).
 
 onaj dio sam "kidanjem" teksta sam sada stavio kao funkciju razlomi.
 kod te funkcije nije mi se dalo prepravljati po gornjoj (profesorovoj) primjedbi ( jer kod mene radi
  ). 
 evo i mala datoteka za testiranje. nemojte samo kopirati tekst
 iz datoteke vec ju download-ajte. ("Save Link As")
 
 za one koji rade pod *nix-om program mogu pokrenuti ovako:
 
  	  | Kod: |  	  | $ cat test.txt | ime_programa | 
 
 
 
  	  | Kod: |  	  | #include <iostream>
 #include <string>
 
 #include <cctype>
 
 using std::cin;
 using std::cout;
 using std::endl;
 using std::string;
 
 bool kriterij_paragraf( string const &pomoc){
 // provjerava da li se dani string sastoji samo
 // od space-ova te da li je prazan
 if( pomoc.size()==0) return true;
 if( pomoc.find_first_not_of(' ')==string::npos ) return true;
 
 return false;
 }
 
 void verzija1( string &tekst){
 // modificira string tako da mijenja:
 // '. ' -> '.  ' , '? ' -> '?  ' , '! ' -> '!  '
 for( string::size_type i=0; i<tekst.size()-1; ++i){
 if( tekst[i]=='.' && tekst[i+1]==' ' ){
 tekst.replace( i, 1, ". ", 0, 2);
 }
 else if( tekst[i]=='?' && tekst[i+1]==' ' ){
 tekst.replace( i, 1, "? ", 0, 2);
 }
 else if( tekst[i]=='!' && tekst[i+1]==' ' ){
 tekst.replace( i, 1, "! ", 0, 2);
 }
 }
 }
 
 void verzija2( string &tekst){
 string novi;
 
 // modificira string tako da mijenja:
 // '. ' -> '.  ' , '? ' -> '?  ' , '! ' -> '!  '
 string::size_type prethodni=0;
 string::size_type end=tekst.size()-1;
 for( string::size_type i=0; i<end; ++i){
 if( ( tekst[i]=='.' || tekst[i]=='!' || tekst[i]=='?' ) && tekst[i+1]==' '){
 novi+=tekst.substr( prethodni, i+1 - prethodni )+" ";
 prethodni=i+1;
 ++i;
 }
 }
 
 novi+=tekst.substr( prethodni);
 
 tekst=novi;
 }
 
 bool modificiraj( string &tekst, int verzija=2){
 
 if( verzija!=1 && verzija!=2 ) return false;
 verzija==1 ? verzija1( tekst) : verzija2( tekst);
 
 // modificira string tako da "ubija" visetruke
 // uzastopne space-ove
 // kod pocetka recenice ostavlja 2 inace 1
 string::size_type brojac=0;
 while ( ( brojac=tekst.find("  ", brojac) ) != string::npos ){
 if( tekst[brojac-1]!='.' && tekst[brojac-1]!='?' && tekst[brojac-1]!='!' ){
 tekst.erase( brojac, 1);
 continue;
 }
 ++brojac;
 }
 
 // modificira string tako da mijenja '  \n\n' -> '\n\n'
 brojac=0;
 while ( ( brojac=tekst.find("  \n\n", brojac) ) != string::npos ){
 tekst.replace( brojac, 3, "\n ", 0, 1);
 ++brojac;
 }
 
 // modificira string tako da mijenja '\n ' -> '\n'
 brojac=0;
 while ( ( brojac=tekst.find("\n ", brojac) ) != string::npos ){
 tekst.replace( brojac, 2, "\n", 0, 1);
 ++brojac;
 }
 
 // brise posljednj dva znaka u stringu koji su space-ovi
 // zbog nacina stvaranja stringa "tekst"
 // u main-u ( tekst+=pomoc+" " )
 // i gore izvedene konverzije
 if( tekst[tekst.size()-2]==' ' ){
 tekst.erase( tekst.size()-2, 2 );
 }
 // odnosno samo zadnji znak ako korisnik nije zavrsio s . ? !
 else{
 tekst.erase( tekst.size()-1, 1);
 }
 
 // brise prvi znak teksta ako je space
 if( tekst[0]==' ' ){
 tekst.erase( 0, 1);
 }
 
 return true;
 }
 
 void razlomi( string &tekst, int broj){
 // "kida" tekst na linije velicine varijable broj
 // dodajuci '\n' character
 // prethodni pamti polozaj najblizeg space-a kojeg smo prosli
 // brojac broji koliko smo karaktera prosli
 string::size_type brojac=0, prethodni=0;
 for( string::size_type i=0; i<tekst.size(); ++i){
 
 // ako smo prosli broj karaktera a nismo se prebacili
 // u novu liniju onda se prebacujemo
 // dodavanjem '\n' charactera na mjesto
 // sa indeksom prethodni, tj. na najblizi prodjen space
 if( brojac==broj ){
 tekst.replace( prethodni, 1, "\n", 0, 1);
 brojac=0;
 
 // vracamo se na indeks prethodni+1
 // jer smo na indeksu prethodni prekinuli liniju
 i=prethodni+1;
 
 continue;
 }
 
 // ako je trenutni character space postavi prethodni
 if( tekst[i]==' ' ) prethodni=i;
 // ako je trenutni character '\n' resetiraj brojac
 // jer se tu prebacujemo u novu liniju
 else if( tekst[i]=='\n' ) brojac=0;
 
 ++brojac;
 }
 }
 
 int main( int argc, char *argv[]){
 
 if(argc>2){
 cout << "Nepravilan poziv programa!!!\n> Previse argumenata." << endl;
 return 1;
 }
 
 int broj=75;
 if( argc==2 ){
 string pomoc(argv[1]);
 for( string::size_type i=0; i<pomoc.size(); ++i){
 if( !isdigit(pomoc[i]) ){
 cout << "Nepravilan poziv programa!!!\n> Drugi argument nije broj." << endl;
 return 2;
 }
 }
 
 broj=atoi(argv[1]);
 }
 
 if( broj<66 || broj>132){
 cout << "Nepravilan poziv programa!!!\n> Drugi argument mora biti broj izmedju 66 i 132." << endl;
 return 3;
 }
 
 // ucitiva tekst sa standardong ulaza liniju po liniju
 // te ga lijepi na vec prije uneseni tekst
 string pomoc, tekst;
 bool paragraf=false;
 while( getline( cin, pomoc) ){
 
 // ako zadovoljava kriterije za paragraf
 // tj. sadrzi samo praznine ili je prazan
 if( kriterij_paragraf( pomoc) ){
 
 // ako je do sada uneseni tekst velicine 0, tj. na pocetku smo
 // onda zanemari sve prazne linije
 if( tekst.size()==0 ) continue;
 else{
 // inace vec postoji tekst pa je prazna
 // linija oznaka za novi paragraf
 paragraf=true;
 continue;
 }
 }
 
 // ako smo ucitali tekst (ne zadovoljava kriterije paragrafa,
 // pogledati gore funkciju) i prije je bila unesena prazna
 // linija (ili vise), tj. paragraf=true
 // onda lijepi '\n\n' na kraj "tekst"-a
 if( pomoc.size()!=0 && paragraf==true){
 tekst+="\n\n";
 paragraf=false;
 }
 
 // lijepi unesenu liniju na prije ucitani tekst
 tekst+=pomoc+" ";
 }
 
 modificiraj( tekst);
 razlomi( tekst, broj);
 
 cout << tekst << endl;
 
 return 0;
 }
 
 
 | 
 _________________ The purpose of life is to end
   
Prosle su godine kolokviji bili laksi, zar ne? |  | 
	
		| [Vrh] |  | 
	
		| venovako Forumaš(ica)
 
  
 
 Pridružen/a: 07. 11. 2002. (22:46:38)
 Postovi: (2F9)16
 
 
 |  | 
	
		| [Vrh] |  | 
	
		| GauSs_ Moderator
 
  
  
 Pridružen/a: 28. 01. 2004. (21:01:17)
 Postovi: (53C)16
 Spol:
  Lokacija: 231
 
 |  | 
	
		| [Vrh] |  | 
	
		| venovako Forumaš(ica)
 
  
 
 Pridružen/a: 07. 11. 2002. (22:46:38)
 Postovi: (2F9)16
 
 
 |  | 
	
		| [Vrh] |  | 
	
		| mdoko Forumaš(ica)
 
  
  
 Pridružen/a: 30. 11. 2002. (22:17:12)
 Postovi: (71A)16
 Spol:
  Lokacija: Heriot-Watt University, Edinburgh
 
 |  | 
	
		| [Vrh] |  | 
	
		|  |