Programiranje u C-u - od svega pomalo izdvojena tema

poruka: 1.661
|
čitano: 387.273
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Evo ako netko moze pomoci nekako... dobio sam pripremu za laboratorijsku vjezbu koja glasi:

 

Napišite program u kojem se u glavnoj funkciji redom učitavaju riječi od kojih se sastavlja rečenica. 

Pri tome svaka učitana riječ,osim prve, treba ispunjavati slijedeće uvjete: 

-  ako je prvo slovo prethodne riječi bio samoglasnik – onda prvo slovo učitane riječi također treba biti 

samoglasnik, 

-  ako je prvo slovo prethodne riječi bio suglasnik – tada prvo slovo učitane riječi također treba biti 

suglasnik. 

Ako riječ ne ispunjava navedene uvjete – napisati odgovarajuću poruku i zatražiti novu riječ. 

Može se dodavati riječ koja se sastoji od samo jednog slova, ali onda ono mora biti samoglasnik. Broj se 

isto smatra riječju. Prije dodavanja riječi treba dodati jedan razmak. 

Mogu se dodavati i interpunkcijski znaci (, : ; ! ?), ali onda se oni dodaju neposredno iza riječi (bez 

razmaka). Brojevi i interpunkcijski znaci se dodaju bez uvjeta i na njih se ne odnose prethodno navedeni 

uvjeti. Program završava kada se unese točka (.) koju također treba dodati.  

 

Za rečenicu deklarirati pokazivač znakovnog tipa kojemu se inicijalno dinamički alocira dovoljno memorije 

za prihvat prve riječi. Svaka slijedeća riječ se rečenici dodaje u funkciju sa slijedećim prototipom: 

int  dodaj_rijec( char* recenica, char *rijec); 

 

U funkciji se riječ dodaje prema navedenim pravilima, pri čemu se prethodno dinamički realocira potrebna 

memorija za cijelu trenutnu rečenicu uključujući novu riječ ili znak. 

Funkcija vraća ukupni broj znakova trenutno sastavljene rečenice. 

U glavnom programu pozivati navedenu funkciju, a na kraju ispisati cijelu sastavljenu rečenicu, broj riječi 

od kojih je sastavljena i ukupni broj znakova.

 

Ukratko - gdje i kako i s cim uopce poceti.... ? Ovo je katastrofalan zadatak...

Kaj ce mi potpis kad ga ionak nitko nece gledat?!
Moj PC  
0 0 hvala 0
17 godina
moderator
online
Re: Programiranje u C-u - od svega pomalo
dj_chapz kaže...
Ukratko - gdje i kako i s cim uopce poceti.... ? Ovo je katastrofalan zadatak...

Što je programiranje? Razlaganje složenog problema na jednostavnije probleme i rješavanje svakog od tih jednostavnih problema.

 

S čim početi? Ono, ideš korak po korak. Prvo počneš s "Hello world", pa si deklariraš varijablu za držanje rečenice, rezerviraš memoriju, napišeš kostur funkcije dodaj_rijec, u funkciji dodaj riječ napraviš ono što piše - da ti dodaje riječ na kraj. Kad si s tim gotovo, onda se ideš pozabaviti s uvjetima - kad dodati, kad ne. Dakle, ideš korak po korak.

 

Kako bi ti skuhao kavu? Znaš da za to moraš staviti vodu na vatru. Što ćeš s vodom? Pustiti iz pipe u lončić. Što ćeš s vatrom? Uključiti peć. Ako je plinska, snisnut ćeš i okrenuti gumb i kliknuti na gumb za bacanje iskre ili uzeti upaljač pa zapaliti vatru. I vidiš sad kako smo od vode i vatre došli do svega ostaloga?

15 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Hmmm... Pomoglo je. Krenuo sam i uspio sam to poslozit onak ugrubo kako bi izgledalo... A vidjet cemo kako ce to na kraju ispast. Hvala!

Kaj ce mi potpis kad ga ionak nitko nece gledat?!
Moj PC  
0 0 hvala 0
13 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Imam "mali" problem u slijedecem programu.

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int alocirano=0;
int popunjeno=0;

void dodaj(char *recenica, char *rijec){

    printf("Dodaj rijec:");
    gets(rijec);
    recenica=realloc(recenica,(strlen(recenica)+strlen(rijec)+1));
    strcat(recenica,rijec);
    strcat(recenica," ");
    alocirano+=strlen(recenica)+strlen(rijec)+1;
    popunjeno+=strlen(recenica)+1;
    printf("Alocirano: %d,  popunjeno: %d\n", alocirano, popunjeno);

}
int main(){
    char *recenica=NULL;
    recenica=(char*)malloc(10*sizeof(char));
    char rijec[20];

    printf("Unesi rijec:");
    gets(rijec);
    strcpy(recenica, rijec);
    strcat(recenica," ");
    alocirano+=10*sizeof(char);
    popunjeno+=strlen(recenica)+1;
    printf("Alocirano: %d,  popunjeno: %d\n", alocirano, popunjeno);
    while(strchr(rijec,'.')==NULL){
    dodaj(recenica, rijec);}

   
    puts(recenica);



    return 0;
}

 

 

Dakle ovaj program bi trebao trazit upis rijeci u main funkciji i onda pozvati funkciju dodaj koja ce dodati rijeci i dinamicki realocirat memoriju za recenicu(inicijalna alokacija je u main funkciji) i prekinut petlju unosa stringova unosom tocke. Problem je u tome sto zadnji ispis recenice ne radi kako bi trebao. Ispise zadnje dvije rijeci i to je to.

 

Pretpostavljam da je problem u alokaciji, odnosno da ili prebrise prethodne unose u stringu, ili da ih zagubi nekako, ali ne znam na koji nacin da to popravim. Meni sve izgleda u redu, ali tijekom procesa debugiranja otkrio sam da se stringovima koje unesem dodaju nekakvi cudni znakovi koji poprilicno inkrementiraju velicinu samog stringa ali se ne ispisuju(tipa: "<<" repeats 16 times je pisalo u debugeru pod string recenica izmedju dvije unesene rijeci). Jeli to normalno i ako nije kako da to fixam?

 
0 0 hvala 0
17 godina
offline
Programiranje u C-u - od svega pomalo

Izbaci realloc funkciju u funkciji dodaj i program će raditi, dok ima mjesta u rezerviranoj memoriji za recenica.

Problem je u tome što izgleda strcat stavlja drugi niz na kraj realocirane memorije.

Poruka je uređivana zadnji put sub 17.12.2011 16:52 (Floki).
 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo

Vrsi li strcat realokaciju memorije? {#} Ja nigdje spomena o tome nisam nasao.

My computer once beat me at chess, but we got even after a round of boxing.
14 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
rustweaver kaže...

Vrsi li strcat realokaciju memorije? {#} Ja nigdje spomena o tome nisam nasao.

Ne. Prethodno moraš provjeriti da li će u bufferu biti dovoljno mjesta.

http://www.chess.com/livechess/profile/Tracer1808
15 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo

Tak sam do sada i mislio. Malo me je zbunio flokijev post. Bit ce da ga nisam dobro skuzio...

My computer once beat me at chess, but we got even after a round of boxing.
17 godina
offline
Re: Programiranje u C-u - od svega pomalo
rustweaver kaže...

Tak sam do sada i mislio. Malo me je zbunio flokijev post. Bit ce da ga nisam dobro skuzio...

ovdje se dešava da funkcija strcat prilijepi drugi niz na kraju realocirane memorije

14 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Zna li itko kako se moze modifikovati niz:

 

0

456

0

0

5

 

u

 

456

5

0

0

0

 

 

Brojevi razliciti od 0 trebaju biti na vrhu a 0 nazad.

Poruka je uređivana zadnji put sub 31.12.2011 19:35 (the. Shelby).
 
0 0 hvala 0
13 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Misliš sortirati? Googlaj "insertion sort"... Imaš i funkciju qsort ako samo želiš da ti se sortira poznati kontejner.

 
1 0 hvala 0
17 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Moze mala pomoc? Nisam dugo radio u C-u, malo sam zahrdao. Imam polje struktura i zelio bih ih sortirati po float clanu. Za to bih koristio qsort f-ju iz stdlib.h biblioteke. Ovo imam zasada:

 

typedef struct
{
    char znak_struct;
    long broj_ponavljanja;
    float vjerojatnost_znaka;

}ArrayStructChar[256];

int struct_cmp_probability(const void *elem1, const void *elem2)
{
    ArrayStructChar *ielem1 = (ArrayStructChar *)elem1;
    ArrayStructChar *ielem2 = (ArrayStructChar *)elem2;
    return (int)(100.f*ielem1->vjerojatnost_znaka - 100.f*ielem2->vjerojatnost_znaka);
}

 

Dakle, struktura i f-ja za usporedivanje dvaju struktura po floatu. No, ovo ne radi, ako netko zna rjesenje problema?

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
 
0 0 hvala 0
17 godina
moderator
online
Re: Programiranje u C-u - od svega pomalo
1domagoj1 kaže...

Moze mala pomoc? Nisam dugo radio u C-u, malo sam zahrdao. Imam polje struktura i zelio bih ih sortirati po float clanu. Za to bih koristio qsort f-ju iz stdlib.h biblioteke. Ovo imam zasada:

 

typedef struct
{
    char znak_struct;
    long broj_ponavljanja;
    float vjerojatnost_znaka;

}ArrayStructChar[256];

int struct_cmp_probability(const void *elem1, const void *elem2)
{
    ArrayStructChar *ielem1 = (ArrayStructChar *)elem1;
    ArrayStructChar *ielem2 = (ArrayStructChar *)elem2;
    return (int)(100.f*ielem1->vjerojatnost_znaka - 100.f*ielem2->vjerojatnost_znaka);
}

 

Dakle, struktura i f-ja za usporedivanje dvaju struktura po floatu. No, ovo ne radi, ako netko zna rjesenje problema?

Zašto imaš [256] kod definiranja tipa? To se smije/može? Nisam baš radio sa strukturama, a još manje s poljima struktura... Zar, ako se to može, to ne znači da onda više nemaš tip pa pojedinačni element strukture? Znači, da onda u funkciji struct_cmp_probability zapravo jedan element typecastaš u čitavo polje struktura?

 

BTW zašto si u funkciji struct_cmp_probability jednostavno ne ispišeš na ekran 100.f*ielem1->vjerojatnost_znaka i 100.f*ielem2->vjerojatnost_znaka? I možda povratnu vrijednost? Pa da točno znaš s kojim podacima ti ta funkcija barata i što vraća?

14 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo
mbaksa kaže...
1domagoj1 kaže...

Moze mala pomoc? Nisam dugo radio u C-u, malo sam zahrdao. Imam polje struktura i zelio bih ih sortirati po float clanu. Za to bih koristio qsort f-ju iz stdlib.h biblioteke. Ovo imam zasada:

 

typedef struct
{
    char znak_struct;
    long broj_ponavljanja;
    float vjerojatnost_znaka;

}ArrayStructChar[256];

int struct_cmp_probability(const void *elem1, const void *elem2)
{
    ArrayStructChar *ielem1 = (ArrayStructChar *)elem1;
    ArrayStructChar *ielem2 = (ArrayStructChar *)elem2;
    return (int)(100.f*ielem1->vjerojatnost_znaka - 100.f*ielem2->vjerojatnost_znaka);
}

 

Dakle, struktura i f-ja za usporedivanje dvaju struktura po floatu. No, ovo ne radi, ako netko zna rjesenje problema?

Zašto imaš [256] kod definiranja tipa? To se smije/može? Nisam baš radio sa strukturama, a još manje s poljima struktura... Zar, ako se to može, to ne znači da onda više nemaš tip pa pojedinačni element strukture? Znači, da onda u funkciji struct_cmp_probability zapravo jedan element typecastaš u čitavo polje struktura?

To je malo nespretno napisano. Prije svega, typedef nije potreban. To bi trebalo biti npr. ovako;

 

struct MyStruct
{
    char znak_struct;
    long broj_ponavljanja;
    float vjerojatnost_znaka;
};

...
struct MyStruct ArrayStructChar[256];

 

Znači, riječ je tek o deklaraciji globalnog polja struktura. A što se tiče boldanog komenatara.. Ovaj quick sort kakvog Domagoj traži kao parametar ima pokazivač na funkciju koju koristi za uspoređivanje, tako da ta funkcija ne treba ništa ispisivati već samo definirati na koji način usporediti dva podataka. Kako se ne zna o kojim tipovima podataka će biti riječ zato su parametri tipa void*.

 

A poziv quick sorta bi trebao ići nekako ovako;

 

qsort (ArrayStructChar, 256, sizeof(struct MyStruct), struct_cmp_probability);

http://www.chess.com/livechess/profile/Tracer1808
Poruka je uređivana zadnji put sri 4.1.2012 13:37 (TracerCPP).
17 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Pa, moze se. Definitivno nije u tome problem, jer ja s tim poljem struktura radim i upisujem i ispisujem vrijednosti iz njega.

 

Problem mi je u toj f-ji za usporedbu, nisam drugo radio u C-u, evo malo sam izmjenio, pogreska mi je valjda negdje u typecastanju, zbilja ne bih znao:
int struct_cmp_probability(const void *elem1, const void *elem2)
{
    struct ArrayStructChar *ielem1 = (struct ArrayStructChar *)elem1;
    struct ArrayStructChar *ielem2 = (struct ArrayStructChar *)elem2;
    return (int)(100.f*ielem1->vjerojatnost_znaka - 100.f*ielem2->vjerojatnost_znaka);
}

Znaci, pogledao bi ja sto mi ispisuje, ali se kompajler buni: "dereferencing pointer to incomplete type" - na ovoj liniji s returnom. To bi znacilo da pokusavam dereferencirati pointer na neku strukturu koja nije definirana, a to mi nije bas jasno, posto ja radim s tim strukturama.

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
 
0 0 hvala 0
14 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo

To je zato jer nisi uveo tip za strukturu već naziv polja koristiš kao tip;

 

ArrayStructChar je naziv polja. Tebi treba naziv strukture.

 

int struct_cmp_probability(const void *elem1, const void *elem2)
{
    struct MyStruct *ielem1 = (struct MyStruct *)elem1;
    struct MyStruct *ielem2 = (struct MyStruct *)elem2;
    return (int)(100.f*ielem1->vjerojatnost_znaka - 100.f*ielem2->vjerojatnost_znaka);
}

http://www.chess.com/livechess/profile/Tracer1808
Poruka je uređivana zadnji put sri 4.1.2012 13:55 (TracerCPP).
17 godina
moderator
online
Re: Programiranje u C-u - od svega pomalo
1domagoj1 kaže...

Pa, moze se.

To nema veze s tvojom situacijom. U tom primjeru definirana je struktura Employee i deklarirana varijabla, tj. polje struktura s 5 članova tipa Employee nazvana employee. Napravi to u svom programu pa će kompajliranje proći. Drugim riječima, napravi ovo što ti je Tracer napisao.

 

 

1domagoj1 kaže...

Znaci, pogledao bi ja sto mi ispisuje, ali se kompajler buni: "dereferencing pointer to incomplete type" - na ovoj liniji s returnom. To bi znacilo da pokusavam dereferencirati pointer na neku strukturu koja nije definirana, a to mi nije bas jasno, posto ja radim s tim strukturama.

 

Zašto odmah nisi napisao što ti kompajler javlja?

Poruka je uređivana zadnji put sri 4.1.2012 13:57 (mbaksa).
17 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Razlika je između deklaracije tipa i instanciranja varijable...

 

struct TipStructa
{
    char znak_struct;
    long broj_ponavljanja;
    float vjerojatnost_znaka;

}ArrayStructChar[256];

int struct_cmp_probability(const void *elem1, const void *elem2)
{
    TipStructa *ielem1 = (TipStructa *)elem1;
    TipStructa *ielem2 = (TipStructa *)elem2;
    return (int)(100.f*ielem1->vjerojatnost_znaka - 100.f*ielem2->vjerojatnost_znaka);
}

Moj PC  
0 0 hvala 1
17 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

// Cekajte da procitam sve :D

...

 

EDIT:

mbaksa kaže...
...

 

Zašto odmah nisi napisao što ti kompajler javlja?

Jer sam kasnije promjenio bio nesto, vise se ne sjecam, pa mi je onda poceo dojavljivati tu gresku, prvotno nije.

 

EDIT2: Sortiranje mi nije valjalo, evo i to rijesih sada. Hvala svima.

int struct_cmp_probability(const void *elem1, const void *elem2)
{
    struct TipStructa *ielem1 = (struct TipStructa *)elem1;
    struct TipStructa *ielem2 = (struct TipStructa *)elem2;

    if (ielem1->vjerojatnost_znaka < ielem2->vjerojatnost_znaka)
        return -1;
    return ielem1->vjerojatnost_znaka > ielem2->vjerojatnost_znaka;
}

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
Poruka je uređivana zadnji put sri 4.1.2012 14:22 (1domagoj1).
 
0 0 hvala 0
14 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Moze li mi netko dati link na neku skriptu ili stranice gdje bi mogao naci rijesene zadatke s funkcijama i matricama?

 

Hvala unaprijed..

 

Ili ako netko ima na kompu, ako mu se da da uploada pa mi da link..

Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

  while(x!=25) {
                  srand ( time(0) );
                  int y=rand()%10+1;
                  printf ("%d", y);
                  x++;
                  } 
Stalno isti brojevi.

Kako da više puta generiram random broj?
Hvala!

 

Vrijeme je za promjene...
 
0 0 hvala 0
17 godina
moderator
online
Re: Programiranje u C-u - od svega pomalo
BenjamiX kaže...

  while(x!=25) {
                  srand ( time(0) );
                  int y=rand()%10+1;
                  printf ("%d", y);
                  x++;
                  } 
Stalno isti brojevi.

Kako da više puta generiram random broj?
Hvala!

  • srand se koristi na početku programa! ta funkcija resetira generiranje random brojeva, a s ozbirom da se petlja vrlo brzo izvede, time(0) je u svakoj iteraciji isti broj, što znači da generiranje random brojeva uvijek ima isti seed i uvijek počne od istih brojeva. Da si u petlji imao nekakvu pauzu, vidio bi da bi ipak bili drugačiji brojevi. da si odvrtio petlju do recimo 2500, vidio bi da bi se i tada počeli pojavljivati različiti brojevi
  • ako je cilj da petlja dođe do neke vrijednosti, onda se ne koristi operator !=, nego se koristi operator <   - rezultat je u osnovi isti (osim ako ne dođe do neke greške ili imaš kod za koji postoji mogućnost da bi uvećao x za dva pa bi postojala mogućnost da se preskoči granica), ali logika nije
  • koristiš krivu petlju - za ovo što si napisao, koristi se petlja for.
15 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Evo dva lagana pitanja medutim nisam uspio izgooglati odgovor.

kako ispisivati decimalne brojeve,tipa 5/2 da ispise 2.5?

i drugo kako dati korisniku mogucnosti izbora,npr. dobije a b i c opciju ako upise a onda dijeli brojeve ako upise b onda zbraja a ako izabere c onda oduzima.

Hvala

RazorNapster
Moj PC  
0 0 hvala 0
17 godina
moderator
online
Re: Programiranje u C-u - od svega pomalo
Barnie kaže...

Evo dva lagana pitanja medutim nisam uspio izgooglati odgovor.

kako ispisivati decimalne brojeve,tipa 5/2 da ispise 2.5?

5./2

(float)5/2

 

Fora je da će (među?)rezultat biti istog tipa kao prvi (ili lijevi; prvi je ujedno i lijevi?) član pa ako je prvi član int kao u izrazu 5/2, i rezultat će biti int. Ako je float, kao u primjerima koje sam ja napisao, onda će i rezultat biti float.

 

Barnie kaže...
i drugo kako dati korisniku mogucnosti izbora,npr. dobije a b i c opciju ako upise a onda dijeli brojeve ako upise b onda zbraja a ako izabere c onda oduzima.

int izbor;

 

do {

  cout << "Upisi: 0) izlaz   1) zbrajanje   2) oduzimanje ...";

  cin >> izbor;

 

  switch (izbor) {

    case 1: tu sad ide zbrajanje; break;

    case 2: tu sad ide oduzimanje; break;

    ...

  }

 

} while (izbor != 0);

16 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Zanima me kako napisati kod  koji ce provjeriti prilikom pokretanja aplikacije OS na kojem se nalazi?

Dakle htio bi da aplikacija prilikom pokretanja napravi provjeru OS-a na kojem se nalazi te zavisno od OS-a da izvrsi jedan ili drugi kod.

Naprimjer ako je OS windows xp ispisi: Vi koristite windows xp

Ako je OS windows 7 ispisi: Vi koristite windows 7.

Znaci zanima me samo kako napraviti u aplikaciji tu provjeru?

 
0 0 hvala 0
17 godina
moderator
online
Re: Programiranje u C-u - od svega pomalo
Makavelii kaže...

Zanima me kako napisati kod  koji ce provjeriti prilikom pokretanja aplikacije OS na kojem se nalazi?

Jedna WinAPI funkcija: http://msdn.microsoft.com/en-us/library/ms724451

13 godina
neaktivan
offline
Programiranje u C-u - od svega pomalo

Zdravo. Da li moze neko da mi uradi dva zadataka iz programiranja.....?

 

1* Podaci o porodicama se sastoje od prezimena, imena ulice i broja.

a) napisati strukturu za cuvanje podataka o osobama

b)u glavnom programu ucitati niz od 6 prezimena osoba i njihovih adresa

c)odstampati osobe koje zive na parnoj strani ulice

 

 

 

2*

Napisat program koji učitava broj n i niz od n realnih brojeva a zatim broj k  i ispituje da či se broj k nalazi u datom nizu i ako se stampa njegovo mjesto u nizu.

 
0 0 hvala 0
13 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo

Počni pa gdje zapneš javi, ne misliš valjda da bi neko riješavao zadatke?

13 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo

struct adresa

{

   char prezime [20];

   char imena [20];

   int br;

}

 

   int main()

 

{

 

   int i;

   struct adresa a[6];

   for(i=0; i<6; i++)

 

   {

 

     scanf("%s", &a[i].prezime);

     scanf("%s", &a[i].imena);

     scanf("%d", &a[i].br);

   }

 

 

   for (i=0; i<6; i++)

   if  (a[i].br%2==0)

   printf("%s; %s ;%d\n", a[i].prezime, a[i].imena, a[i].br );

   else

   printf("Greska");

 

   return 0;

}

13 godina
neaktivan
offline
Re: Programiranje u C-u - od svega pomalo

Ajd bar ti nešto radiš, kod nije loš, malo još popravi intendanciju.
  printf("%s; %s ;%d\n", a[i].prezime, a[i].imena, a[i].br );

Ovo nije dobro!

Formate upisa ne odvajaš sa ; !, pišeš jednostavno:
"%s %s %d\n"

Poruka je uređivana zadnji put uto 17.1.2012 15:13 (royalhero).
Nova poruka
E-mail:
Lozinka:
 
vrh stranice