-=[programiranje 1 - zadaci uz seminarski]=-


Zadaci iz Programiranja 1 - Školska 2006/07


Nina Stepanović - broj indeksa 06/121


Polazni tekstovi:

  1. 81pol-050517-01.txt
  2. crnjanski-dnevnik06.txt
  3. med05-genetika.txt
  4. pav34-popa02.txt

Rezultujući tekstovi:

  1. 81pol-050517-01.def
  2. crnjanski-dnevnik06.def
  3. med05-genetika.def
  4. pav34-popa02.def

Funkcije: 1.1, 1.2, 1.3, 1.4, 1.5

Nizovi: 2.1, 2.2, 2.3, 2.4, 2.5

Niske: 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7

Datoteke: 4.1*, 4.2*, 4.3*, 4.4*, 4.5*

*zadaci preuzeti od drugih studenata


<< Vrati se na glavnu stranu

NAPOMENA


Zadatak broj 1.1:

Sastaviti funkciju karakter koja vraća vrednost 0 ako tekst seminarskog sadrži samo dozvoljene ASCII- karaktere (LF, CR i grafičke karaktere od 32-127 koji se koriste u AURORA-kodu), a inače 1. Sastaviti main-funkciju koja testira funkciju karakter.

#include <stdio.h>
int karakter(void);
main()
{printf("Funkcija karakter je vratila vrednost %d", karakter());}
int karakter(void)
{   int c;
    while((c=getchar())!=EOF) if ((c!=10) && (c!=13) && (c<32 || c>126)) return 1;
    return 0;
}

Rezultat testiranja programa:
z11.txt

Povratak na vrh ^^

Zadatak broj 1.2:

Sastaviti funkciju slovo koja vraća 0 ako se u tekstu seminarskog nalaze samo dozvoljeni (prema Uputstvu) alfabetski grafički karakteri izvan srednjih zagrada [ i ], a inače vraća 1. (Na primer, karakteri q i w nisu dozvoljeni). Sastaviti main-funkciju koja testira funkciju slovo.


#include <stdio.h>
int slovo(void);
main()
{printf("Funkcija slovo je vratila vrednost %d", slovo());}
int slovo(void)
{   int c; short out;
    while((c=getchar())!=EOF)
    { if (c=='[') out=0;
      else if (c==']') out=1;
      else if (out && (c=='X'||c=='Y'||c=='Q'||c=='W'||c=='q'||c=='w')) return 1;}
    return 0;
}

Rezultat testiranja programa:
z12.txt

Povratak na vrh ^^

Zadatak broj 1.3:

Sastaviti funkciju zagrada koja vraća 0 ako je broj otvorenih srednjih zagrada [ jednak broju zatvorenih srednjih zagrada ], a inače vraća 1. Sastaviti main-funkciju koja testira funkciju zagrada.


#include <stdio.h>
int zagrada(void);
main()
{printf("Funkcija zagrada je vratila vrednost %d", zagrada());}
int zagrada(void)
{   int c, bro=0, brz=0;
    while((c=getchar())!=EOF)
    { if (c=='[') bro++;
      else if (c==']') brz++;}
    if (bro!=brz) return 1; 
    return 0;
}

Rezultat testiranja programa:
z13.txt

Povratak na vrh ^^

Zadatak broj 1.4:

Sastaviti funkciju jednako koja ispituje da li je otvorena srednja zagrada [ zatvorena zagradom ]. Ako je ispunjen ovaj uslov, funkcija vraća 0, a inaće vraća 1. Sastaviti main funkciju koja testira funkciju jednako. Voditi računa da zagrade mogu biti umetnute kao, npr, u primeru 10. iz Uputstva.


#include <stdio.h>
int jednako(void);
main()
{printf("Funkcija jednako je vratila vrednost %d", jednako());}
int jednako(void)
{   int c; char pre=0; short z=1;
    while((c=getchar())!=EOF)
    { if (z)
         {if (c=='[' && pre!='\\') z=0;}
      else if (c=='[' && pre!='\\') return 1;
      else if (c==']') z=1;
      pre=c;}
      if (z) return 0;
      return 1;      
}

Rezultat testiranja programa:
z14.txt

Povratak na vrh ^^

Zadatak broj 1.5:

Sastaviti funkciju etiketa koja vraća broj unetih etiketa u tekst seminarskog rada. Sastaviti main-funkciju koja testira funkciju etiketa.


#include <stdio.h>
int etiketa(void);
main()
{printf("Funkcija etiketa je vratila vrednost %d", etiketa());}
int etiketa(void)
{   int c,e=0; char pre=0; short z=1;
    while((c=getchar())!=EOF)
    { if (z)
         {if (c=='[' && pre!='\\') z=0;}
      else if (c==']'){ z=1; if (pre!='[') e++;}
      pre=c;}
      return e;
}

Rezultat testiranja programa:
z15.txt

Povratak na vrh ^^

Zadatak broj 2.1:

Sastaviti funkciju prebroj koja izračunava koliko je puta koji karakter upotrebljen u tekstu. Sastaviti main-funkciju koja testira funkciju prebroj tako što ispisuje spisak karaktera koji su upotrebljeni bar jednom u tekstu i frekvenciju njihovog pojavljivanja.


#include <stdio.h>
void prebroj(unsigned u_niz[]);
main()
{     unsigned i,a[128];
      prebroj(a);
      for(i=32;i<127;i++) if (a[i]>0)
      printf("\n%c se pojavilo %u put%s.",i,a[i],(a[i]>1)? "a" : "");
}
void prebroj(unsigned a[])
{    unsigned i,c;
     for(i=0;i<128;i++) a[i]=0;
     while((c=getchar())!=EOF) a[c]++;}

Rezultat testiranja programa:
z21.txt

Povratak na vrh ^^

Zadatak broj 2.2:

Isto kao 2.1, samo što se ne pravi razlika između velikih i malih slova engleske abecede. (funkcija prebroji).


#include <stdio.h>
void prebroji(unsigned u_niz[]);
main()
{     unsigned i,a[128];
      prebroji(a);
      for(i=32;i<127;i++) if (a[i]>0)
      printf("\n%c se pojavilo %u put%s.",i,a[i],(a[i]>1)? "a" : "");
}
void prebroji(unsigned a[])
{    unsigned i,c;
     for(i=0;i<128;i++) a[i]=0;
     while((c=getchar())!=EOF)
      {if(c>='a' && c<='z') a[c+'A'-'a']++;
       else a[c]++;}
}

Rezultat testiranja programa:
z22.txt

Povratak na vrh ^^

Zadatak broj 2.3:

Sastaviti funkciju slova koja prebrojava alfabetske karaktere koji nisu ograđeni srednjim zagradama. Sastaviti main-funkciju koja ispisuje rezultat rada ove funkcije.


#include <stdio.h>
#define VZX 0
#define VLX 17
#define VNX 23
#define VDY 24
#define VSX 27
#define VDX 28
#define VCX 29
#define VCY 30

#define MZX VZX + 32
#define MLX VLX + 32
#define MNX VNX + 32
#define MDY VDY + 32
#define MSX VSX + 32
#define MDX VDX + 32
#define MCX VCX + 32
#define MCY VCY + 32

void slova(unsigned u_niz[]);
main()
{    unsigned i,a[63];
     slova(a);
     for(i=0;i<63;i++)
     if (a[i]){
       putchar('\n');
       if     (i==VZX) printf("Zx");
       else if(i==VLX) printf("Lx");
       else if(i==VNX) printf("Nx");
       else if(i==VDY) printf("Dy");
       else if(i==VSX) printf("Sx");
       else if(i==VDX) printf("Dx");
       else if(i==VCX) printf("Cx");
       else if(i==VCY) printf("Cy");
       else if(i==MZX) printf("zx");
       else if(i==MLX) printf("lx");
       else if(i==MNX) printf("nx");
       else if(i==MDY) printf("dy");
       else if(i==MSX) printf("sx");
       else if(i==MDX) printf("dx");
       else if(i==MCX) printf("cx");
       else if(i==MCY) printf("cy");
       else putchar(i+64);
       printf(" se pojavilo %u put%s.",a[i],(a[i]>1)? "a" : "");}
}
void slova(unsigned a[])
{    unsigned i,c,pre,out=1;
     for(i=0;i<63;i++) a[i]=0;
     pre=getchar(); if(pre=='[') out=0;
     while(pre!=EOF){
       c=getchar();
       if (out && ((pre>='A' && pre<='Z')||(pre>='a' && pre<='z'))
       && pre!='Q' && pre!='W' && pre!='X' && pre!='Y'
       && pre!='q' && pre!='w' && pre!='x' && pre!='y')   
         switch (c){
                 case 'x':
                   if      (pre=='Z') a[VZX]++;
                   else if (pre=='L') a[VLX]++;
                   else if (pre=='N') a[VNX]++;
                   else if (pre=='S') a[VSX]++;
                   else if (pre=='D') a[VDX]++;
                   else if (pre=='C') a[VCX]++;
                   else if (pre=='z') a[MZX]++;
                   else if (pre=='l') a[MLX]++;
                   else if (pre=='n') a[MNX]++;
                   else if (pre=='s') a[MSX]++;
                   else if (pre=='d') a[MDX]++;
                   else if (pre=='c') a[MCX]++;
                   break;
                 case 'y':
                   if      (pre=='D') a[VDY]++;
                   else if (pre=='C') a[VCY]++;
                   else if (pre=='d') a[MDY]++;
                   else if (pre=='c') a[MCY]++;
                   break;
                 default :
                   a[pre-64]++;}
       if (c=='[' && pre!='\\') out=0;
       else if (c==']') out=1;
       pre=c;}}

Rezultat testiranja programa:
z23.txt

Povratak na vrh ^^

Zadatak broj 2.4:

Sastaviti funkciju interpunkt koja prebrojava interpunkcijske karaktere koji su se pojavili u tekstu izvan etiketa. Srednje zagrade se ne računaju osim u slučaju da čine deo teksta. (Videti primer 10. u Uputstvu).


#include <stdio.h>
#include <ctype.h>
void interpunkt(unsigned u_niz[]);
main()
  {unsigned a[128],i;
  interpunkt(a);
   for(i=0;i<128;i++) if(ispunct(i) && a[i]) 
   printf("\nZnak %c se pojavio %u put%s.",i,a[i],(a[i]>1)? "a" : "");
      }
void interpunkt(unsigned a[])
  {  unsigned c,pre=0,out=1,i;
     for(i=0;i<128;i++)a[i]=0;
     while((c=getchar())!=EOF){
       if (c=='[' && pre!='\\') out=0;
       if (out && ispunct(c) && c!='\\') a[c]++;
       if (out==0 && c==']') out=1;
       pre=c;}}
Rezultat testiranja programa:
z24.txt

Povratak na vrh ^^

Zadatak broj 2.5:

Sastaviti funkciju reci koja izračunava raspodelu po dužini reči u tekstu seminarskog. Kao reči se uzimaju nizovi alfabetskih karaktera koji se ne nalaze unutar etiketa. Npr. u tekstu Od toga [dig 17] sedamnaest [] vrsta pripada papratima ([fl_la Pteridophyta] Pterodofita []) ima sedam reči. Dužina reči Od je 2, dužina toga je 4, dužina reči sedamnaest je 10, itd.


#include <stdio.h>
#include <ctype.h>
#define MAX 30
void reci(unsigned u_niz[], unsigned maksimalna_duzina);
main()
{
      unsigned a[MAX],i;
      reci(a,MAX);
      for(i=0;i<MAX;i++) if(a[i]) printf("\nBroj reci duzine %u je %u.",i+1,a[i]);
}
void reci(unsigned a[], unsigned n)
{
     unsigned c,pre=0,out=1,in=0,i,d=0;
     for(i=0;i<n;i++) a[i]=0;
     while(pre!=EOF)
     {  c=getchar();
        if(c=='[' && pre!='\\') out=0;
        if(out)
          {if(in)
             {if(ispunct(c)|| c==' ' || c==EOF){in=0;a[d-1]++;}
              else if(c!='x' && c!='y')d++;}
           else if(isalpha(c)) in=d=1;
           }
        else if (c==']') out=1;
        pre=c;}
}

Rezultat testiranja programa:
z25.txt

Povratak na vrh ^^

Zadatak broj 3.1:

Sastaviti funkciju etik koja kao argument dobija etiketu iza otvorene srednje zagrade i vraća 0 ako je etiketa korektna, inače 1. Sastaviti funkciju koja testira funkciju etik. Npr. za etiketu [dig 17], funkcija dobija kao argument nisku dig i vraća 0, dok za etiketu [dim 17] vraća 1.


#include <stdio.h>
unsigned etik(char etiketa[]);
main()
  { char a[10];
  jos:
  printf("\nUnesite ime etikete za proveru:");
  scanf("%s",a);
  printf("%s",(etik(a))? "Nije etiketa." : "Jeste etiketa");
  while (!(a[0]=='e' && a[1]=='n' && a[2]=='d')) goto jos;
  }
unsigned etik(char e[])
  {unsigned str_len;
  for(str_len=0;e[str_len]!='\0';str_len++);//zamenjuje strlen funkciju iz string.h
  if (str_len==2){if(e[0]=='t' && e[1]=='m') return 0;}
  else if (str_len==3){
    if (e[0]=='a'){
         if((e[1]=='b' && e[2]=='k') ||
           (e[1]=='p' && e[2]=='o') ||
           (e[1]=='c' && e[2]=='r')) return 0;}
    else if(e[0]=='t'){
         if((e[1]=='i' && e[2]=='t') ||
           (e[1]=='s' && e[2]=='f')) return 0;}
    else if(e[0]=='e' && e[1]=='k' && e[2]=='o') return 0;
    else if(e[0]=='g' && e[1]=='l' && e[2]=='n') return 0;
    else if(e[0]=='i' && e[1]=='a' && e[2]=='d') return 0;
    else if(e[0]=='?' && e[1]=='?' && e[2]=='?') return 0;
    else if(e[0]=='n' && e[1]=='a' && e[2]=='m') return 0;
    else if(e[0]=='y' && e[1]=='e' && e[2]=='a') return 0;
    else if(e[0]=='d' && e[1]=='i' && e[2]=='g') return 0;
    else if(e[0]=='o' && e[1]=='n' && e[2]=='o') return 0;}
  else if (str_len==5 && e[0]=='f' && e[1]=='l' && e[2]=='_'){
         if((e[3]=='d' && e[4]=='e') ||
           (e[3]=='f' && e[4]=='r') ||
           (e[3]=='e' && e[4]=='n') ||
           (e[3]=='i' && e[4]=='t') ||
           (e[3]=='l' && e[4]=='a') ||
           (e[3]=='r' && e[4]=='u') ||
           (e[3]=='g' && e[4]=='r') ||
           (e[3]=='e' && e[4]=='s') ||
           (e[3]=='0' && e[4]=='0')) return 0;}
  else if (str_len==6 && e[0]=='f' && e[1]=='l' && e[2]=='_'
                        && e[3]=='d' && e[4]=='i' && e[5]=='a') return 0;
    return 1;}

Zadatak 3.1 nema kao ulaz ni jedan od fajlova, stoga nema ni rezultate nad tim fajlovima.
Povratak na vrh ^^

Zadatak broj 3.2:

Sastaviti funkciju provera koja proverava da li je svaki obeleženi deo teksta etiketiran nekom od etiketa iz grupa A, B i C koristeći funkciju etik iz zadatka 3.1. U slučaju da jeste, funkcija vraća 0, a u suprotnom broj nepravilnih etiketa. Funkcija treba da ispiše svaku nepravilnu etiketu kada na nju naiđe. Sastaviti funkciju za testiranje.


#include <stdio.h>

#define MAXLEN 8 //maxlen mora biti bar 8

unsigned etik(char etiketa[]);
unsigned provera(void);

main()
{   unsigned errors;
    if(errors=provera()) printf("\nBroj nepravilnih etiketa: %u",errors);
    else printf("Nema nepravilnih etiketa.");
       }
unsigned provera(void)
  { char a[MAXLEN]; unsigned pre=0,err=0,c,sl,len;
    while((c=getchar())!=EOF)
    {if(c=='[' && pre!='\\' && (sl=getchar())!=']') {len=0;
    while(sl!=' ' && len<MAXLEN-1) {a[len++]=sl;sl=getchar();}
    a[len]='\0';
    if (etik(a)) printf("\n%u. [%s ...]",++err,a);}
    pre=c;}
    return err;
  }
unsigned etik(char e[])
  {unsigned str_len;
  for(str_len=0;e[str_len]!='\0';str_len++);//zamenjuje strlen funkciju iz string.h
  if (str_len==2){if(e[0]=='t' && e[1]=='m') return 0;}
  else if (str_len==3){
    if (e[0]=='a'){
         if((e[1]=='b' && e[2]=='k') ||
           (e[1]=='p' && e[2]=='o') ||
           (e[1]=='c' && e[2]=='r')) return 0;}
    else if(e[0]=='t'){
         if((e[1]=='i' && e[2]=='t') ||
           (e[1]=='s' && e[2]=='f')) return 0;}
    else if(e[0]=='e' && e[1]=='k' && e[2]=='o') return 0;
    else if(e[0]=='g' && e[1]=='l' && e[2]=='n') return 0;
    else if(e[0]=='i' && e[1]=='a' && e[2]=='d') return 0;
    else if(e[0]=='?' && e[1]=='?' && e[2]=='?') return 0;
    else if(e[0]=='n' && e[1]=='a' && e[2]=='m') return 0;
    else if(e[0]=='y' && e[1]=='e' && e[2]=='a') return 0;
    else if(e[0]=='d' && e[1]=='i' && e[2]=='g') return 0;
    else if(e[0]=='o' && e[1]=='n' && e[2]=='o') return 0;}
  else if (str_len==5 && e[0]=='f' && e[1]=='l' && e[2]=='_'){
         if((e[3]=='d' && e[4]=='e') ||
           (e[3]=='f' && e[4]=='r') ||
           (e[3]=='e' && e[4]=='n') ||
           (e[3]=='i' && e[4]=='t') ||
           (e[3]=='l' && e[4]=='a') ||
           (e[3]=='r' && e[4]=='u') ||
           (e[3]=='g' && e[4]=='r') ||
           (e[3]=='e' && e[4]=='s') ||
           (e[3]=='0' && e[4]=='0')) return 0;}
  else if (str_len==6 && e[0]=='f' && e[1]=='l' && e[2]=='_'
                        && e[3]=='d' && e[4]=='i' && e[5]=='a') return 0;
    return 1;}

Rezultat testiranja programa:
z32.txt

Povratak na vrh ^^

Zadatak broj 3.3:

Sastaviti funkciju jednako koja kao argument uzima etiketirani tekst i ispisuje originalni tekst i tekst zamene kao u sledećem primeru: Ulazni tekst je \[ Sxtampa [abk br.] broj [] [dig 12.] dvanaest [] od ove godine], a funkcija uzima etiketu po etiketu i ispisuje abk br. = broj dig 12 = dvanaest


#include <stdio.h>

void jednako(void);
main(){jednako();}
void jednako(void)
{    unsigned pre=0,c,sl,o=0,z=0,out=2,noz=0; char or[500], za[50000];
     while((c=getchar())!=EOF){
        if(c=='[' && pre!='\\'){o=0;
           if(out)
             {if((sl=getchar())==']'){out=1;za[z]='\0';printf(" = %s",za);z=0;}
              else {or[0]=sl;o=1;out=0;}}}
        else if(c==']' && out==0){out=1;or[o]='\0';printf("\n%s",or);z=0;}
        else {if(out)za[z++]=c;
              else or[o++]=c;}
        pre=c;}
}
         

Rezultat testiranja programa:
z33.txt

Povratak na vrh ^^

Zadatak broj 3.4:

Sastaviti funkciju ispis koja kao argument uzima neku od etiketa (dig, abk, itd.) i vraća 0 ako se ta etiketa ne pojavljuje u tekstu seminarskog, a inače vraća broj pojavljivanja upotrebljene etikete. Funkcija ispisuje sva pojavljivanja zadate etikete. Sastaviti funkciju za testiranje funkcije ispis.


#include <stdio.h>
#define MAXLEN 100
unsigned ispis(char etiketa[]);

main()
  {
  char a[7]="tm";
  unsigned br;
  if(br=ispis(a)) printf("\nBroj pojavljivanja: %u",br);
  else printf("\nNema takve etikete!");
  }

unsigned ispis(char e[])
{    
    char a[MAXLEN]; unsigned pre=0,c,sl,len,br=0,str_len,ista,i;
    for(str_len=0;e[str_len]!='\0';str_len++);
    while((c=getchar())!=EOF)
    {if(c=='[' && pre!='\\' && (sl=getchar())!=']') {len=0;
    while(sl!=']' && len<MAXLEN-1) {a[len++]=sl;sl=getchar();}
    a[len]='\0';
    ista=1;
    for(i=0;i<str_len;i++)if(a[i]!=e[i]) {ista=0;break;}
    if (ista) printf("\n%u. %s ",++br,a);}
    pre=c;}
    return br;
}

IZMENA: Ukoliko se prvo ne odštampa karakter za novi red (\n) pre odgovora Nema takve etikete, može se dogoditi da standardni izlaz (ukoliko nije ekran) protumači odgovor Nema takve etikete kao niz od 9 kineskih tradicionalnih (nepoznatih većini Kineza) UNICODE znakova... (^_^)

Rezultat testiranja izmenjenog programa za etiketu "tm":
z34.txt

Povratak na vrh ^^

Zadatak broj 3.5:

Sastaviti funkciju rekonstrukt koja iz teksta seminarskog briše sve zamenjene delove i uspostavlja početni tekst. Sastaviti funkciju za testiranje ove funkcije. Npr. za tekst Od toga [dig 17] sedamnaest [] vrsta pripada papratima ([fl_la Pteridophyta] Pterodofita []), funkcija ispisuje Od toga 17 vrsta pripada papratima (Pteridophyta).


#include <stdio.h>
void rekonstrukt(void);
unsigned etikA(char etiketa[]);
main()
{
      rekonstrukt();
}
void rekonstrukt(void)
{    unsigned i, pre=0, c; char e[7];
     while((c=getchar())!=EOF)
     {if(c=='[' && pre!='\\'){i=0;
      while((c=getchar())!=' ')e[i++]=c;e[i]='\0';
      while((c=getchar())!=']') putchar(c);
      if(!etikA(e)) while((c=getchar())!='[' || (c=getchar())!=']');}
      else if(c!='\\') putchar(c);
      pre=c;}
}
unsigned etikA(char or[])// ukoliko etiketa pocinje sa tm,eko,tit...
{    return((or[0]=='t' && or[1]=='m')||
           (or[0]=='e' && or[1]=='k' && or[2]=='o')||
           (or[0]=='t' && or[1]=='i' && or[2]=='t')||
           (or[0]=='g' && or[1]=='l' && or[2]=='n')||
           (or[0]=='i' && or[1]=='a' && or[2]=='d')||
           (or[0]=='t' && or[1]=='s' && or[2]=='f')||
           (or[0]=='?' && or[1]=='?' && or[2]=='?'));}

NAPOMENA: Program koristi funkciju "unsigned etikA(char or[])" koja detektuje da li etiketirani deo teksta ima zamenu ili ne. Funkcija, međutim, ne smatra etikete "ono" za etikete grupe A, pa ako u vašem tekstu imate nerazrešene onomatopeje, program neće raditi!

Rezultat testiranja programa su tekstovi koji nisu javno dobro te ih neću ni prikazati.
Povratak na vrh ^^

Zadatak broj 3.6:

Sastaviti funkciju ispit koja formira niz upotrebljenih etiketa u tekstu seminarskog (broj etiketa <= 15). Sastaviti funkciju sort koja sortira niz formiran u funkciji ispit. Sastaviti main-funkciju koja testira funkcije ispit i sort i ispisuje sortirani niz pronađenih etiketa.


#include <stdio.h>
#include <string.h>
void ispit(char a[15][5]);
void sort(char a[15][5]);
main()
{     unsigned i;char a[15][5];
      ispit(a);
      sort(a);
      for (i=0;i<15;i++)
      if(a[i][4])
        printf("Etiketa %s se pojavila %u put%s.\n",
          a[i], a[i][4], (a[i][4]>1)? "a" : "") ;
       }
void ispit(char a[15][5])
{   unsigned i,pre,c; char e[7];
    strcpy(a[0],"eko");
    strcpy(a[1],"tit");
    strcpy(a[2],"gln");
    strcpy(a[3],"iad");
    strcpy(a[4],"tsf");
    strcpy(a[5],"tm");
    strcpy(a[6],"???");
    strcpy(a[7],"nam");
    strcpy(a[8],"yea");
    strcpy(a[9],"dig");
    strcpy(a[10],"fl_");
    strcpy(a[11],"abk");
    strcpy(a[12],"apo");
    strcpy(a[13],"acr");
    strcpy(a[14],"ono");
    for(i=0;i<15;i++)a[i][4]=0;
    pre=0;
    while((c=getchar())!=EOF)
    {if (c=='[' && pre!='\\'){i=0;while((c=getchar())!=' ')e[i++]=c;e[i]='\0';
        for(i=0;i<15;i++) if(strncmp(a[i],e,3)==0) a[i][4]++;}
    pre=c;}
}
void sort(char a[15][5])
{    unsigned i,j,k,p;
     for(i=0;i<14;i++)for(j=i+1;j<15;j++)
     if (a[i][4]<a[j][4])
     for(k=0;k<5;k++)
     {p=a[i][k]; a[i][k]=a[j][k];a[j][k]=p;}
     }

Rezultat testiranja programa:
z36.txt

Povratak na vrh ^^

Zadatak broj 3.7:

Sastaviti funkciju koja za zadatu etiketu (npr. dig) formira niz niski koje se nalaze unutar te etikete. Npr. ako se u tekstu nalazilo [dig 17] sedamnaest [] i [dig 7] sedam [], niz treba da sadrži niske 17 i 7 (sortirane prema ASCII-kolacionoj sekvenciji.


#include <stdio.h>
#include <string.h>
void etiksort(char a[]);
main(){char a[7]= "tit"; etiksort(a);}
void etiksort(char a[]){   
    unsigned pre=0,c, i, j=0, k; char e[7], b[50][500], p[500];
    while((c=getchar())!=EOF)
    {if (c=='[' && pre!='\\'){i=0;while((c=getchar())!=' ')e[i++]=c;e[i]='\0';
          if(strcmp(a,e)==0){k=0;
            while((c=getchar())!=']')b[j][k++]=c;b[j][k]='\0';j++;}}
    pre=c;}
    for(i=0;i<j-1;i++)for(k=i+1;k<j;k++)
      if(strcmp(b[i],b[k])<0) {strcpy(p,b[k]);strcpy(b[k],b[i]);strcpy(b[i],p);}
    for(i=0;i<j;i++) puts(b[i]);}

Rezultat testiranja programa za etiketu "tit":
z37.txt

Povratak na vrh ^^

Zadatak broj 4.1:

Sastaviti funkciju kopiraj1 koja kopira tekst seminarskog zadatka u drugu datoteku bez teksta etiketa. Npr. tekst Od toga [dig 17] sedamnaest [] vrsta pripada papratima ([fl_la Pteridophyta] Pterodofita []) se kopira u Od toga sedamnaest vrsta pripada papratima (Pterodofita]).

Rešenje zadatka 4.1 preuzeto od studenta: Mladen Krstić (seminarski zadaci)

Rezultat testiranja programa su tekstovi koji nisu javno dobro te ih neću ni prikazati.
Povratak na vrh ^^

Zadatak broj 4.2:

Sastaviti funkciju kopiraj2 koja kopira obeleženi tekst seminarskog u drugu datoteku koristeći funkciju rekonstrukt i koja restaurira polazni tekst.

Rešenje zadatka 4.2 (mora se kompajlirati i "ispisuj.h") preuzeto od studenta: Mladen Krstić (seminarski zadaci)

Rezultat testiranja programa su tekstovi koji nisu javno dobro te ih neću ni prikazati.
Povratak na vrh ^^

Zadatak broj 4.3:

Sastaviti funkciju kopiraj3 koja kopira tekst obeleženog seminarskog u izlaznu datoteku tako da prepisuje samo etiketirane delove i to svaki etiketirani deo u novi red. Npr. tekst za tekst Od toga [dig 17] sedamnaest [] vrsta pripada papratima ([fl_la Pteridophyta] Pterodofita []), se kopira u tekst [dig 17] sedamnaest [] [fl_la Pteridophyta] Pterodofita []

Rešenje zadatka 4.3 preuzeto od studenta: Mladen Krstić (seminarski zadaci)<

Povratak na vrh ^^

Zadatak broj 4.4:

Sastaviti funkciju kopiraj4 koja kopira tekst obeleženog seminarskog u drugu datoteku zamenjujući etiketu koja se prenosi kao argument html-etiketom po izboru. Npr. tekst obeležen kao dig u crveno obojeni tekst ili skraćenice u plavo obojeni tekst.

Rešenje zadatka 4.4 preuzeto od studenta: Mladen Krstić (seminarski zadaci)

Rezultat testiranja programa su tekstovi koji nisu javno dobro te ih neću ni prikazati.
Povratak na vrh ^^

Zadatak broj 4.5:

Sastaviti funkciju kopiraj5 koja u izlaznu datoteku prepisuje samo reči koje su palindromi. Ispitivanje palindroma izdvojiti u zasebnu funkciju palindrom.

Rešenje zadatka 4.5 preuzeto od studenta: Aleksandar Đenić (seminarski zadaci)



Povratak na vrh ^^
NAPOMENA
Neki zadaci nisu izbacili rezultat testiranja pa ih zato nema.