/* Zadatak 9. */ #include #define BrojEtiketaA2 21 char* EtiketaA2[BrojEtiketaA2]; int OdgovarajucaEtiketa(char* Etiketa) { int i; int j; /* Uporedjuje zadatu etiketu sa svakom iz tabele */ for (i = 0 ; i < BrojEtiketaA2 ; i++) { j = 0; while ((Etiketa[j] == EtiketaA2[i][j]) && ((Etiketa[j] != '\0') && (EtiketaA2[i][j] != '\0'))) { j++; } if (Etiketa[j] == EtiketaA2[i][j]) return 0; } return 1; } int VelikoSlovo(int karakter) { if ((karakter > 96) && (karakter < 128)) return (karakter - 32); else return karakter; } int main() { /* Deklaracije promenjivih */ int i = 0; int s = 0; int d = 0; char Karakter; char Etiketa[256]; /* Generisanje tabele nepraznih etiketa */ EtiketaA2[ 0] = "HTML"; EtiketaA2[ 1] = "HEAD"; EtiketaA2[ 2] = "BODY"; EtiketaA2[ 3] = "H2"; EtiketaA2[ 4] = "H3"; EtiketaA2[ 5] = "H4"; EtiketaA2[ 6] = "H5"; EtiketaA2[ 7] = "H6"; EtiketaA2[ 8] = "P"; EtiketaA2[ 9] = "DIV"; EtiketaA2[10] = "B"; EtiketaA2[11] = "I"; EtiketaA2[12] = "KBD"; EtiketaA2[13] = "ADDRESS"; EtiketaA2[14] = "EM"; EtiketaA2[15] = "VAR"; EtiketaA2[16] = "STRONG"; EtiketaA2[17] = "DEF"; EtiketaA2[18] = "CODE"; EtiketaA2[19] = "CITE"; EtiketaA2[20] = "S"; EtiketaA2[21] = "TITLE"; /* Citanje i obrada ulaza */ Karakter = getchar(); while (Karakter != EOF) { /* Obradjuje karakter */ if (Karakter == '<') { /* Cita HTML etiketu */ s = 0; i = 0; Karakter = getchar(); if (Karakter == '/') { s = 1; Karakter = getchar(); } while ((Karakter != '>') && (i < 255)) { /* Obradjuje karakter */ Etiketa[i] = VelikoSlovo(Karakter); i++; /* Cita sledeci karakter*/ Karakter = getchar(); } Etiketa[i] = '\0'; /* Obradjuje etiketu */ if (OdgovarajucaEtiketa(Etiketa) == 0) { /* Stampa etiketu */ if (s == 0) { /* Stampa dubinu */ for (i = 0 ; i < d ; i++) printf(" "); printf("<%s>\n", Etiketa); d++; } else { d--; /* Stampa dubinu */ for (i = 0 ; i < d ; i++) printf(" "); printf("\n", Etiketa); } } } /* Cita sledeci karakter */ Karakter = getchar(); } return 0; }