Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- /* Standardna funkcija za unos stringa. vel = velicina stringa*/
- void unesi(char* string, int vel) /*U nasem slucaju, pokazivac "string" na varijablu tipa char uzima adresu pocetnog elementa niza "a" pa samim tim on pokazuje na prvi element niza.*/
- {
- int i=0;
- do
- {
- *string++ = getchar(); /*Prvom elementu se pridruzuje onaj znak koji unesemo te nakon toga pokazivac pokazuje na slijedece mjesto u memoriji, a kako deklaracijom niza zauzmemo onoliko prostora u memoriji koliko nam je potrebno za citav niz to nam omogucuje da u memoriji poredamo elemente niza jedan do drugog pa ce ovim postupkom pokazivac pokazivati na slijedeci element niza. Dakle unos se u stvari vrsi znak po znak. */
- i++; /*Nakon svakog pojedinacnog znaka varijabla "i" se povecava za 1 te broji koliko smo znakova do sad unijeli.*/
- if (i==vel) break; /*Da ne bi pokazivac pokazivao na neko nepoznato mjesto u memoriji (kako smo rezervisali onoliko prostora koliko nam je potrebno za niz a ne vise, neki drugi program je mogao rezervisati prostor koji se nalazi pored samog niza) te samim tim doveo i do moguceg rusenja programa i sl. petlja se automatski prekida ukoliko je "i" jednako velicini niza. */
- }
- while (*(string-1) != '\n'); /*Ili se prekida na enter. */
- *(string-1) = '\0'; /*Na kraju, preko znaka za novi red (koji smo unijeli enterom) stavljamo znak koji oznacava kraj stringa (odnosno niza znakova). */
- }
- int izbroji(char* string, char znak)
- {
- int b=0; /*Deklarisemo varijablu "b" koja ce nam sluziti kao brojac. */
- while (*string!='\0') /*Sve dok dereferencirana vrijednost pokazivaca string ne bude jednaka znaku koji oznacava kraj stringa (odnosno niza znakova) izvrsava se dio koda unutar petlje. */
- {
- if (*string++ == znak) /*Ukoliko je dereferencirana vrijednost pokazivaca "string" upravo ona koju trazimo, vrijednost varijable "b", tipa integer, se poveca za 1. Nakon provjere, a prije povecavanja vrijednosti varijable, pokazivac se "poveca" za 1, odnosno pokazuje na slijedece mjesto u memoriji. */
- b++;
- }
- return b;
- }
- int samogl(char*string)
- {
- int d=0;
- while (*string++!='\0') /*Sve isto kao i gore samo sto u ovom slucaju znamo koje to znakove treba prebrojati. */
- {
- if ((*string=='A') || (*string=='E') || (*string=='I') || (*string=='O') || (*string=='U') || (*string=='a') || (*string=='e') || (*string=='i') || (*string=='o') || (*string=='u'))
- d++;
- }
- return d;
- }
- int duzina(char *string)
- {
- int s=0; /*Isto kao i u prethodne dvije funkcije samo sto nemamo nikakvog uslova koji treba biti ispunjen kako bi se brojac povecao za 1 te na taj nacin ustvari brojimo na koliko ce mjesta pokazivac "string" pokazivati prije nego bude pokazivao na "\0". */
- while (*string++!='\0') s++;
- return s;
- }
- int main()
- {
- char a[80], c; /*"a[80]" - Deklarisemo niz od 80 znakova; "c" - Deklarisemo varijablu koja ce cuvati samo 1 znak."
- printf ("\nUnesite jednu rijec do 80 znakova (ENTER za kraj): ");
- unesi(a, 80); /*Pozivamo funkciju za unos stringa, proslijedjujemo joj niz a (odnosno adresu njegovog prvog elementa) i njegovu velicinu.*/
- printf ("\nKoji znak treba prebrojati: ");
- scanf ("%c", &c);
- printf ("\n\nBroj znakova %c je: %d\n",c,izbroji(a,c));
- printf("Unesena recenica/rijec sadrzi %d znakova.", duzina(a));
- printf("\nBroj samoglasnika je: %d", samogl(a));
- return 0;
- }
Add Comment
Please, Sign In to add comment