Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- char ascii(char *niz)
- {
- try // provjeri dal je niz ustvari NULL pokazivac, ako je baci iznimku
- {
- if(niz == NULL) throw 1;
- }
- catch (int e)
- {
- cout<<"errr, prazan string"<<endl;
- return 0;
- }
- unsigned int x[128] = { 0 };
- int i = 0;
- try
- {
- while (*niz!=0) // idemo kroz niz, prekidamo ako je null byte (kraj stringa)
- {
- try
- {
- if((int) *niz < 0) // ako je ascii code za trenutni znak negativan -> nije u ascii tablici...
- throw 3;
- x[(int) *niz]++; // povecavamo broj pojavljivanja ascii znaka
- niz++; // pomicemo se na sljedecu mem lokaciju
- i++; // brojac za velicinu niza
- }
- catch (int e)
- {
- cout<<"err, nije ascii..."<<endl;
- return 0;
- }
- }
- if(i > 500)
- throw 2;
- }
- catch (int e)
- {
- cout<<"errr, preveliko"<<endl;
- return 0;
- }
- unsigned short max, skoro_max, i_max, i_skoro;
- max = skoro_max = i_max = i_skoro = 0;
- for(i = 127;i >= 0;i--) // pronalazimo znak koji se najcesce pojavljuje
- {
- if(x[i] > max)
- {
- max = x[i]; // broj ponavljanja najcesceg znaka
- i_max = i; // ascii code znaka koji se najcesce pojavljuje
- }
- }
- for(i = 127;i >= 0;i--)
- {
- if(x[i] > skoro_max && x[i] < max)
- {
- skoro_max = x[i]; // broj ponavljanja 2. najcesceg znaka
- i_skoro = i; // ascii code znaka koji se 2. najcesce pojavljuje
- }
- }
- if(skoro_max == 0)
- // ako se svi znakovi jednako cesto ponavljaju (samo je jedan ascii znak u stringu) vrati njegovu vrijednost
- // inace vrati znak koji se 2. najcesce ponavlja...
- return i_max;
- else
- return i_skoro;
- }
- int main(int argc,char *argv[])
- {
- cout<<ascii(argv[1])<<endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement