Advertisement
Guest User

Untitled

a guest
Dec 21st, 2014
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.64 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include "Roditeljj.h"
  5. #include <fstream>
  6. #include <sstream>
  7. #include "vrijednosti.h"
  8.  
  9. using namespace std;
  10.  
  11. int brojRazmaka (string nesto){
  12.     int brojac=0;
  13.     for (int i=0;i<nesto.length();i++){
  14.         if (nesto[i]!=' ')
  15.             break;
  16.         brojac++;
  17.     }
  18.     return brojac;
  19. }
  20.  
  21. void gradiStablo (Roditeljj &cvor, string podaci[], int brRedaka){
  22.    
  23.     Roditeljj* dijete;
  24.    
  25.     for(int i=cvor.vrijednost.red+1; i<brRedaka; i++){
  26.         string podatak="";
  27.         int k=0;
  28.         for (int j=0;j<podaci[i].length();j++){//mice razmake
  29.             if (podaci[i][j]!=' ') k=1;
  30.             if (k==1)
  31.                 podatak+=podaci[i][j];
  32.         }
  33.  
  34.         podatak+='\n';
  35.  
  36.         if(brojRazmaka(podaci[i])==cvor.vrijednost.brojRazmaka+1){
  37.             dijete=new Roditeljj(vrijednosti(podatak,brojRazmaka(podaci[i]),i));
  38.             cvor.pokazivac.push_back(dijete);
  39.     }else if(brojRazmaka(podaci[i])<cvor.vrijednost.brojRazmaka+1){
  40.         break;}
  41.     }
  42.  
  43.     for(int i=0; i<cvor.pokazivac.size(); i++){
  44.         gradiStablo(*cvor.pokazivac[i], podaci, brRedaka);
  45.     }
  46.  
  47.  
  48.  
  49.     return;
  50. }
  51.  
  52.  
  53. void traziGresku(Roditeljj cvor){
  54.    
  55.     if (cvor.vrijednost.izraz=="<primarni izraz>") cvor.vrijednost.provjeriPrimarniIzraz();
  56.  
  57.  
  58.     for(int i=0; i<cvor.pokazivac.size(); i++){
  59.         traziGresku(*cvor.pokazivac[i]);
  60.  
  61.     return;
  62. }
  63.  
  64.  
  65. void ispisStabla (Roditeljj cvor)
  66. {
  67.     cout<<cvor.vrijednost.izraz;
  68.  
  69.     for(int i=0; i<cvor.pokazivac.size(); i++){
  70.         ispisStabla(*cvor.pokazivac[i]);
  71.     }
  72.     return;
  73. }
  74.  
  75.  
  76. int main (int argc, char *argv[]) {
  77.  
  78.     string ulaz[100]={},unos="",datoteka;
  79.  
  80.     Roditeljj cvor;
  81.  
  82.     datoteka="test.in";
  83.    
  84.     ifstream infile (datoteka);
  85.  
  86.     int brojac=0;
  87.     while (getline (infile, unos))
  88.     {
  89.     ulaz[brojac]=unos;
  90.     brojac++;
  91.     }
  92.    
  93.     cvor.vrijednost.izraz=ulaz[0];
  94.     cvor.vrijednost.brojRazmaka=0;
  95.     cvor.vrijednost.red=0;
  96.     Roditeljj* korijen;
  97.     korijen=&cvor;
  98.  
  99.     gradiStablo(cvor,ulaz, brojac);
  100.    
  101.     traziGresku(cvor);
  102.  
  103.     ispisStabla (cvor);
  104.     //cout<<ulaz;
  105.  
  106.     return 0;
  107.  
  108. }
  109.  
  110. #pragma once
  111. #include "vrijednosti.h"
  112. #include <vector>
  113. #include <string>
  114.  
  115. using namespace std;
  116.  
  117. class Roditeljj
  118. {
  119. public:
  120.     vector <Roditeljj*> pokazivac;
  121.     vrijednosti vrijednost;
  122.  
  123.     Roditeljj(vrijednosti vrijednost):vrijednost(vrijednost){
  124.        
  125.     }
  126.  
  127.     Roditeljj(void);
  128.     ~Roditeljj(void);
  129. };
  130.  
  131.  
  132.  
  133. #pragma once
  134. #include <string>
  135. #include <iostream>
  136. #include <vector>
  137.  
  138. using namespace std;
  139. class vrijednosti
  140. {
  141. public:
  142.     static vector <string> deklarirano;
  143.  
  144.     string tip;
  145.     string izraz;
  146.     int l_izraz;
  147.     int red;
  148.     int brojRazmaka;
  149.  
  150.     void provjeriPrimarniIzraz ();
  151.    
  152.     vrijednosti(string podaci,int brojRazmaka,int red):izraz(podaci),brojRazmaka(brojRazmaka),red(red){}
  153.     vrijednosti();
  154.     ~vrijednosti(void);
  155. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement