fork(3) download
  1. #include <cstdio>
  2. #include <cstring>
  3.  
  4. void drukujspacje (int x)
  5. {
  6. for (int i=0;i<x;i++)
  7. printf(" ");
  8. }
  9.  
  10. void tabclear (char *t)
  11. {
  12. for (int i=0;i<51;i++)
  13. t[i]=0;
  14. }
  15.  
  16. bool czyznak (char c)
  17. {
  18. bool wynik=false;
  19. if ( (c>47 && c<58) || (c>64 && c<91) || (c>96 && c<123) )
  20. wynik=true;
  21. return wynik;
  22. }
  23.  
  24.  
  25. int main()
  26. {
  27. char linia[51];
  28. int poziomzaglebienia=0;
  29. bool czybylakreska;
  30. while (true)
  31. {
  32. tabclear(linia);
  33. //if (scanf("%50s",linia)==EOF)
  34. if (!gets(linia))
  35. break;
  36. for (int i=0;i<50;i++)
  37. {
  38. if (linia[i]==0)
  39. break;
  40. if (linia[i]=='<')
  41. {
  42. czybylakreska=false;
  43. poziomzaglebienia++;
  44. while (linia[++i]!='>')
  45. {
  46. if (!czybylakreska)
  47. {
  48. if (linia[i]=='/')
  49. {
  50. czybylakreska=true;
  51. poziomzaglebienia-=2;
  52. }
  53. else if (linia[i]=='=')
  54. printf(" = ");
  55. else if (linia[i]=='\"')
  56. continue;
  57. else if (linia[i]==' ' && czyznak(linia[i-1])==true)
  58. {
  59. //poziomzaglebienia++;
  60. printf("\n");
  61. drukujspacje(poziomzaglebienia);
  62.  
  63. }
  64. else if (linia[i]==' ' && czyznak(linia[i-1])==false)
  65. {
  66. printf("\n");
  67. drukujspacje(poziomzaglebienia);
  68. }
  69. else printf("%c",linia[i]);
  70.  
  71. }
  72. else continue;
  73.  
  74.  
  75.  
  76. }
  77. printf("\n");
  78. drukujspacje(poziomzaglebienia);
  79. }
  80. }
  81.  
  82. }
  83.  
  84. return 0;
  85. }
  86.  
  87.  
  88.  
  89.  
Success #stdin #stdout 0.01s 2684KB
stdin
<zbiory>
<zbior nazwa="pierwszy" licznosc="2">
<roslina nazwa="trawa" >
<lisc kolor="zielony"/> <lodyga/>
</roslina>
<roslina nazwa="tulipan" typ="kwiat">
<lisc kolor="zielony" dlugosc="10"/><kwiat>
<platek kolor="czerwony"><robak /></platek>
</kwiat>
</roslina></zbior>
<zbior licznosc="0"></zbior></zbiory>
stdout
zbiory
    zbior
        nazwa = pierwszy
        licznosc = 2
        roslina
            nazwa = trawa
            
            lisc
                kolor = zielony
        lodyga
    
roslina
    nazwa = tulipan
    typ = kwiat
    lisc
        kolor = zielony
        dlugosc = 10
kwiat
    platek
        kolor = czerwony
        robak
            
    



zbior
licznosc = 0