Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //ZSR 10
- //zadatak 1
- #include <stdio.h>
- int PronadjiPosljednji (const char* s1,const char* s2) {
- const char* pom1;
- const char* pom2;
- const char* poc=s1;
- const char* pamti=0;
- while (*s1!='\0') {
- pom1=s1;
- pom2=s2;
- while (*pom1==*pom2) {
- pom1++;
- pom2++;
- if (*pom1=='\0' || *pom2=='\0') break;
- }
- if (*pom2=='\0') pamti=s1;
- s1++;
- }
- if(pamti==0) return -1;
- return pamti-poc;
- }
- int main() {
- const char *n = "Danas je divan dan!";
- printf ("%d ", PronadjiPosljednji(n, "Divan")); //-1 (nema)
- printf ("%d", PronadjiPosljednji(n, "divan")); //9
- return 0;
- }
- //zadatak 2
- #include <stdio.h>
- int PronadjiPosljednji (const char* s1,const char* s2)
- {
- const char* pom1;
- const char* pom2;
- const char* poc=s1;
- const char* pamti=0;
- char temp1,temp2;
- while (*s1!='\0') {
- pom1=s1;
- pom2=s2;
- if (*pom1>='A' && *pom1<='Z') temp1=*pom1+32;
- else temp1=*pom1;
- if (*pom2>='A' && *pom2<='Z') temp2=*pom2+32;
- else temp2=*pom2;
- while (temp1==temp2) {
- pom1++;
- pom2++;
- if (*pom1>='A' && *pom1<='Z') temp1=*pom1+32;
- else temp1=*pom1;
- if (*pom2>='A' && *pom2<='Z') temp2=*pom2+32;
- else temp2=*pom2;
- if (*pom1=='\0' || *pom2=='\0') break;
- }
- if (*pom2=='\0') pamti=s1;
- s1++;
- }
- if(pamti==0) return -1;
- return pamti-poc;
- }
- int main()
- {
- printf("ZSR 10, Zadatak 2");
- return 0;
- }
- //zadatak 3
- #include <stdio.h>
- char* IzbaciTekst (char* Str,const char* tekst)
- {
- char* pom1;
- const char* pom2=tekst;
- char* pocetak;
- char* pok=Str;
- if (*pom2=='\0') return pok;
- while (*Str!='\0') {
- pom1=Str;
- pocetak=Str;
- pom2=tekst;
- while (*pom1==*pom2) {
- pom1++;
- pom2++;
- if (*pom1=='\0' || *pom2=='\0') break;
- }
- if (*pom2=='\0') {
- while(*pocetak++=*pom1++);
- Str=pok;
- //bitno da se ne krahira
- continue;
- }
- Str++;
- }
- return pok;
- }
- int main()
- {
- //AT4 Ne treba nista uraditi.
- char niz[] = "aaaabcbcbcbc";
- printf("'%s'\n", IzbaciTekst(niz, ""));
- return 0;
- }
- //zadatak 4
- #include <stdio.h>
- char* IzbaciTekst (char* Str, const char*tekst, int cs)
- {
- //deklaracija
- char* pom1=Str;
- const char* pom2=tekst;
- char* pok=Str;
- char temp1,temp2;
- char* pocetak;
- //ako je tekst prazan string
- if (*pom2=='\0') return pok;
- if (cs) {
- while (*Str!='\0') {
- pom1=Str;
- pom2=tekst;
- pocetak=Str;
- while (*pom1==*pom2) {
- pom1++;
- pom2++;
- if (*pom1=='\0' || *pom2=='\0') break;
- }
- if (*pom2=='\0') {
- while (*pocetak++=*pom1++);
- Str=pok;
- continue;
- }
- Str++;
- }
- } else {
- while (*Str!='\0') {
- pom1=Str;
- pom2=tekst;
- pocetak=Str;
- if(*pom1>='A' && *pom1<='Z') temp1=*pom1+32;
- else temp1=*pom1;
- if (*pom2>='A' && *pom2<='Z') temp2=*pom2+32;
- else temp2=*pom2;
- while (temp1==temp2) {
- pom1++;
- pom2++;
- if(*pom1>='A' && *pom1<='Z') temp1=*pom1+32;
- else temp1=*pom1;
- if (*pom2>='A' && *pom2<='Z') temp2=*pom2+32;
- else temp2=*pom2;
- if (*pom1=='\0' || *pom2=='\0') break;
- }
- if (*pom2=='\0') {
- while (*pocetak++=*pom1++);
- Str=pok;
- continue;
- }
- Str++;
- }
- }
- return pok;
- }
- int main()
- {
- char niz[] = "RI ri rI Ri kurs KURS kUrS je najbolji smjer";
- printf("'%s'", IzbaciTekst(niz, "RI KURS", 0));
- return 0;
- }
- //zadatak 5
- #include <stdio.h>
- void NtaRijec (const char* Str, char* rijec, int n)
- {
- int br=0;
- int razmak=1;
- while (*Str!='\0') {
- if (!( (*Str>='A' && *Str<='Z') || (*Str>='a' && *Str<='z') ) ) razmak=1;
- else if (razmak) {
- razmak=0;
- br++;
- if (br==n) {
- while((*Str>='A' && *Str<='Z') || (*Str>='a' && *Str<='z')) {
- *rijec++=*Str++;
- }
- *rijec='\0';
- return;
- }
- }
- Str++;
- }
- if (n>br) *rijec='\0';
- }
- int main()
- {
- printf("ZSR 10, Zadatak 5");
- return 0;
- }
- //zadatak 6
- #include <stdio.h>
- char* ZamijeniTekst (char* Str, const char* sta, const char* sa_cim, int cs)
- {
- //deklaracija varijabli
- int br1=0,br2=0;
- const char* pom1=sta;
- char* pom=Str;
- char* pocetak=Str;
- const char* pom2=sa_cim;
- char* kraj=Str;
- char* poc=Str;
- int pomak=0;
- char temp1,temp2;
- //racunanje pomaka
- while (*kraj!='\0') kraj++;
- while (*pom1!='\0') {
- br1++;
- pom1++;
- }
- while (*pom2!='\0') {
- br2++;
- pom2++;
- }
- pomak=br2-br1;
- //ako je cs
- if (cs) {
- while (*Str!='\0') {
- pom1=sta;
- pom=Str;
- pom2=sa_cim;
- poc=Str;
- while(*pom1==*pom) {
- pom1++;
- pom++;
- if (*pom1=='\0' || *pom=='\0') break;
- }
- if (*pom1=='\0') {
- //ako je rijec koja mijenja veca od rijeci koju mijenjamo
- if (pomak>0) {
- while (kraj>=pom) {
- *(kraj+pomak)=*kraj;
- kraj--;
- }
- while (*kraj!='\0') kraj++;
- while (*pom2!='\0') {
- *poc=*pom2;
- poc++;
- pom2++;
- }
- if(poc==kraj) *poc='\0';
- } else if (pomak==0) { //ako su rijeci iste duzine
- while (*pom2!='\0') {
- *poc=*pom2;
- poc++;
- pom2++;
- }
- if (poc==kraj) *poc='\0';
- } else if (pomak<0) { //ako je rijec koji mijenjamo duza od one koja se mijenja
- while (*pom2!='\0') {
- *poc=*pom2;
- poc++;
- pom2++;
- }
- if (poc==kraj) *poc='\0';
- while (*poc++=*pom++);
- }
- }
- Str++;
- }
- } else {
- while (*Str!='\0') {
- pom1=sta;
- pom=Str;
- pom2=sa_cim;
- poc=Str;
- if(*pom1>='A' && *pom1<='Z') temp1=*pom1+32;
- else temp1=*pom1;
- if (*pom>='A' && *pom<='Z') temp2=*pom+32;
- else temp2=*pom;
- while(temp1==temp2) {
- pom1++;
- pom++;
- if(*pom1>='A' && *pom1<='Z') temp1=*pom1+32;
- else temp1=*pom1;
- if (*pom>='A' && *pom<='Z') temp2=*pom+32;
- else temp2=*pom;
- if (*pom1=='\0' || *pom=='\0') break;
- }
- if (*pom1=='\0') {
- if (pomak>0) {
- while (kraj>=pom) {
- *(kraj+pomak)=*kraj;
- kraj--;
- }
- while (*kraj!='\0') kraj++;
- while (*pom2!='\0') {
- *poc=*pom2;
- poc++;
- pom2++;
- }
- if(poc==kraj) *poc='\0';
- } else if (pomak==0) {
- while (*pom2!='\0') {
- *poc=*pom2;
- poc++;
- pom2++;
- }
- if (poc==kraj) *poc='\0';
- } else if (pomak<0) {
- while (*pom2!='\0') {
- *poc=*pom2;
- poc++;
- pom2++;
- }
- if (poc==kraj) *poc='\0';
- while (*poc++=*pom++);
- }
- }
- Str++;
- }
- }
- return pocetak;
- }
- int main()
- {
- printf("ZSR 10, Zadatak 6");
- return 0;
- }
- //zadatak 7
- #include <stdio.h>
- char* ZamijeniRijec (char* Str, const char* sta, const char* sa_cim, int cs)
- {
- //deklaracija
- char* pocetak=Str;
- char* poc=Str;
- char* poc1=Str;
- const char* pom1=sta;
- const char* pom2=sa_cim;
- char* kraj=Str;
- int pomak=0,br1=0,br2=0;
- char temp1,temp2;
- //trazenje kraja
- while (*kraj!='\0') kraj++;
- while (*sta!='\0') {
- br1++;
- sta++;
- }
- sta=pom1;
- while (*sa_cim!='\0') {
- br2++;
- sa_cim++;
- }
- sa_cim=pom2;
- pomak=br2-br1;
- if (cs) {
- while (*Str!='\0') {
- pom2=sa_cim;
- pom1=sta;
- poc=Str;
- poc1=Str;
- while (*poc==*pom1) {
- poc++;
- pom1++;
- if (*pom1=='\0' || *poc=='\0') break;
- }
- if (*pom1=='\0' && (*poc==' ' || *poc=='\0') && (poc1==pocetak || (*(poc1-1)==' ' ) ) ) {
- if (pomak==0) {
- while (*pom2!='\0') {
- *poc1=*pom2;
- poc1++;
- pom2++;
- }
- }
- if (pomak<0) {
- while (*pom2!='\0') {
- *poc1=*pom2;
- poc1++;
- pom2++;
- }
- while (*poc++==*poc1++);
- }
- if (pomak>0) {
- while (kraj>=poc) {
- *(kraj+pomak)=*kraj;
- kraj--;
- }
- while (*kraj!='\0') kraj++;
- while (*pom2!='\0') {
- *poc1=*pom2;
- poc1++;
- pom2++;
- }
- }
- }
- Str++;
- }
- } else {
- while (*Str!='\0') {
- poc1=Str;
- poc=Str;
- pom1=sta;
- pom2=sa_cim;
- if (*poc>='A' && *poc<='Z') temp1=*poc+32;
- else temp1=*poc;
- if (*pom1>='A' && *pom1<='Z') temp2=*pom1+32;
- else temp2=*pom1;
- while (temp1==temp2) {
- poc++;
- pom1++;
- if (*poc=='\0' || *pom1=='\0') break;
- if (*poc>='A' && *poc<='Z') temp1=*poc+32;
- else temp1=*poc;
- if (*pom1>='A' && *pom1<='Z') temp2=*pom1+32;
- else temp2=*pom1;
- }
- if (*pom1=='\0' && ( !( (*poc>='A' && *poc<='Z') || (*poc>='a' && *poc<='z') ) ) && (poc1==pocetak || (*(poc1-1)==' ') ) ) {
- if (pomak==0) {
- while (*pom2!='\0') {
- *poc1=*pom2;
- poc1++;
- pom2++;
- }
- }
- if (pomak>0) {
- while (kraj>=poc) {
- *(kraj+pomak)=*kraj;
- kraj--;
- }
- while (*kraj!='\0') kraj++;
- while (*pom2!='\0') {
- *poc1=*pom2;
- poc1++;
- pom2++;
- }
- }
- if (pomak<0) {
- while (*pom2!='\0') {
- *poc1=*pom2;
- poc1++;
- pom2++;
- }
- while (*poc1++=*poc++);
- }
- }
- Str++;
- }
- }
- return pocetak;
- }
- int main()
- {
- char tekst[100] = " CAJ. Pije caj iz ocaja mali zeko!";
- ZamijeniRijec (tekst, "caj", "mlijeko", 0); //cs = 1
- printf ("'%s'", tekst);
- return 0;
- }
- //zadatak 8
- #include <stdio.h>
- int Periodican (const char* string)
- {
- int per=0;
- char period[200];
- const char* p=string;
- char* q=period;
- char znak=*string;
- *q=*string;
- p++;
- q++;
- while (*p!=znak && *p!='\0') {
- *q=*p;
- q++;
- p++;
- }
- *q='\0';
- per=q-period;
- q=period;
- while (*string!='\0') {
- if (*q=='\0') {
- q=period;
- continue;
- }
- if (*string!=*q) return 0;
- string++;
- q++;
- }
- return per;
- }
- int main()
- {
- printf("ZSR 10, Zadatak 8");
- char a[] = "ababab", b[] = "abcabca", c[]="DanasDanasDa";
- printf("%d %d %d", Periodican(a), Periodican(b), Periodican(c));
- return 0;
- }
- //zadatak 9
- #include <stdio.h>
- char* kompresuj(char* s)
- {
- int bru,i,br,pomi,br_cif;
- char znak;
- char string[12];
- char* pocetak=s;
- char* sb=string;
- char* kraj=s;
- char* pom=s;
- char* poc=s;
- //duplanje uzvicnika
- while (*s!='\0') {
- if (*s=='!') {
- bru=0;
- while (*s=='!') {
- s++;
- bru++;
- }
- kraj=s;
- pom=s;
- while (*kraj!='\0') kraj++;
- while (kraj>=s) {
- *(kraj+bru)=*kraj;
- kraj--;
- }
- for (i=0; i<bru; i++) *pom++='!';
- s=s+bru-1;
- }
- s++;
- }
- //kompresovanje cifara
- s=pocetak;
- char cifra;
- while (*s!='\0') {
- if (*s>='0' && *s<='9') {
- cifra=*s;
- while(*kraj!='\0') kraj++;
- while (kraj>=s) {
- *(kraj+2)=*kraj;
- kraj--;
- }
- *s++='!';
- *s++=cifra;
- *s='1';
- }
- s++;
- }
- s=pocetak;
- while (*s!='\0') {
- br=0;
- znak=*s;
- pom=s;
- poc=s;
- while (*pom==znak && znak!='!') {
- pom++;
- br++;
- }
- if (br>3 && br<10) {
- *poc++='!';
- *poc++=znak;
- *poc++=br+'0';
- while (*poc++=*pom++);
- }
- if (br>=10) {
- pomi=br;
- //prebrojavanje cifara
- do {
- pomi/=10;
- sb++;
- } while (pomi!=0);
- *sb--='\0';
- //stavljanje cifara u pomocni string
- do {
- *sb=br%10+'0';
- sb--;
- br=br/10;
- } while (br!=0);
- sb++;
- //kopiranje pomocnog stringa
- *poc++='!';
- *poc++=znak;
- while(*sb!='\0') {
- *poc=*sb;
- poc++;
- sb++;
- }
- while (*poc++=*pom++);
- }
- s++;
- }
- return pocetak;
- }
- char* dekompresuj (char* s)
- {
- char* pocetak=s;
- char* pom;
- char* poc=s;
- char* kraj=s;
- char znak;
- int br,br_cif;
- int i;
- //izbavicanje duplih uzvicnika
- while (*s!='\0') {
- br=0;
- br_cif=0;
- if (*s=='!' && *(s+1)=='!') {
- poc=s+1;
- pom=s+2;
- while(*poc++=*pom++);
- }
- if (*s=='!' && *(s+2)>='0' && *(s+2)<='9') {
- znak=*(s+1);
- pom=s+2;
- kraj=s;
- while(*pom>='0' && *pom<='9') {
- br=br*10+*pom-'0';
- pom++;
- br_cif++;
- }
- while (*kraj!='\0') kraj++;
- while (kraj>s) {
- *(kraj+br-br_cif-2)=*kraj;
- kraj--;
- }
- poc=s;
- for(i=0; i<br; i++) *poc++=znak;
- }
- s++;
- }
- return pocetak;
- }
- int main()
- {
- /* Razmaci */
- char tekst[100] = "! 10Tekst!a6! 16";
- printf("'%s'", dekompresuj(tekst));
- return 0;
- }
- //zadatak 10
- #include <stdio.h>
- char* prebroji (char* tekst, char* slova)
- {
- *slova='\0';
- char* pocetak=slova;
- char* poc=tekst;
- int i;
- char brojac[26]= {0};
- char temp;
- int max,maxi=0;
- while (*tekst!='\0') {
- if ( (*tekst>='a' && *tekst<='z') || (*tekst>='A' && *tekst<='Z') ) {
- if (*tekst>='a' && *tekst<='z') temp=*tekst-32;
- else temp=*tekst;
- brojac[temp-'A']++;
- }
- tekst++;
- }
- tekst=poc;
- max=brojac[0];
- while (*tekst!='\0') {
- max=brojac[0];
- maxi=0;
- for (i=0; i<26; i++) {
- if (brojac[i]>max) {
- max=brojac[i];
- maxi=i;
- }
- }
- //ideja
- brojac[maxi]=0;
- if (max!=0) {
- *slova=maxi+'A';
- slova++;
- }
- tekst++;
- }
- *slova='\0';
- return pocetak;
- }
- int main()
- {
- /* AT9: ne smije se koristiti pomocni niz */
- /* N1 - velika slova */
- /* N2 - brojevi i znakovi */
- /* N3 - mala slova */
- #define N1 (26 * 245)
- #define N2 (33 * 120)
- #define N3 (26 * 127)
- char tekst[N1 + N2 + N3 + 1] = "";
- int i;
- /* popunjavamo niz 'tekst' formatom:
- ABCD... !"#$ ... 0123456789:;<=>?@... abcd...z
- */
- for (i = 0; i < N1; ++i)
- tekst[i] = i % 26 + 65; /* ABC...Z */
- for (i = N1; i < N1 + N2; ++i)
- tekst[i] = i % 33 + 32; /* !"...?@ */
- for (i = N1 + N2; i < N1 + N2 + N3; ++i)
- tekst[i] = i % 26 + 97; /* abc...z */
- char slova[27]; /* za nul-granicnik */
- prebroji(tekst, slova);
- printf("Alphabet: '%s'", slova); /* cijeli engl. alfabet */
- return 0;
- }
- //zadatak 11
- #include <stdio.h>
- char* izbaci_maxbroj(char* s)
- {
- char* pocetak=s;
- char* pom;
- char* pom1;
- char* poc;
- int broj=0;
- int broj1=0;
- char sbr[100];
- char* sb=sbr;
- int pomocni=0;
- int predznak=1;
- while (*s!='\0') {
- pom=s;
- broj=0;
- predznak=1;
- while (*s>='0' && *s<='9') {//bitno
- if (pom!=pocetak && *(pom-1)=='-') predznak=-1;
- if (pom==pocetak && *pocetak=='-') predznak=-1;
- broj=broj*10+ (*s-'0');
- s++;
- }
- broj=broj*predznak;
- if (broj>broj1) broj1=broj;
- if (*s=='\0') break;
- s++;
- }
- s=pocetak;
- pomocni=broj1;
- while (pomocni!=0) {
- pomocni=pomocni/10;
- sb++;
- }
- sb++;
- //bitno
- *sb='\0';
- sb--;
- do {
- *sb=broj1%10+'0';
- broj1=broj1/10;
- sb--;
- } while (broj1!=0);
- sb++;
- while (*s!='\0') {
- pom=s;
- pom1=sb;
- poc=s;
- while (*pom==*pom1) {
- pom1++;
- pom++;
- if (*pom=='\0' || *pom1=='\0') break;
- }
- if (*pom1=='\0') {
- while (*poc++=*pom++);
- }
- s++;
- }
- return pocetak;
- }
- int main()
- {
- /* AT7: Negativni brojevi */
- char tekst[] = "-765 je manje od -432 koji je veci od -433 i -1234";
- printf("%s", izbaci_maxbroj(tekst));
- return 0;
- }
- //zadatak 15
- #include <stdio.h>
- void cenzura (char* s,char* rijeci)
- {
- char* pom=s;
- char* pocetaks=s;
- char* poc=s;
- int cenzurisi=0;
- int neslovo=1;
- char* q=rijeci;
- char* kraj=s;
- char* pocetak=rijeci;
- int br=0;
- int i;
- while (*s!='\0') {
- if ( !( (*s>='A' && *s<='Z') || (*s>='a' && *s<='z') ) ) {
- neslovo=1;
- } else if (neslovo) {
- pom=s;
- poc=s;
- q=pocetak;
- cenzurisi=0;
- while (*q!='0' && *pom!='\0') {
- pom=s;
- br=0;
- while (*pom==*q) {
- if ( ( !( (*pom>='A' && *pom<='Z') || (*pom>='a' && *pom<='z') ) ) && (*q=='\0' || *q==' ') ) {
- cenzurisi=1;
- break;
- }
- br++;
- pom++;
- q++;
- }
- if (cenzurisi) break;
- if (*q=='\0') break;
- q++;
- }
- if (cenzurisi) {
- if (br>3) {
- for (i=0; i<3; i++) *poc++='*';
- while (*poc++=*pom++);
- }
- if (br==3) {
- for (i=0; i<3; i++) *poc++='*';
- }
- if (br<3) {
- kraj=s;
- while (*kraj!='\0') kraj++;
- while (kraj>pom) {
- *(kraj+3-br)=*kraj;
- kraj--;
- }
- for (i=0; i<3; i++) *poc++='*';
- }
- }
- }
- s++;
- }
- }
- int main()
- {
- char _cenzura[] = "e webmail vAm";
- char _tekst[50] = "Poslao sam Vam e-mail na webmail.";
- cenzura(_tekst,_cenzura);
- printf("'%s'",_tekst);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement