Untitled

                Never    
C++
       
#include <bits/stdc++.h>
#include <cstring>
#include <graphics.h>
#include <winbgim.h>
#include <math.h>
#define Lung 800
#define la 600
#define RAD3 1.73
using namespace std;
ifstream f("date.in");
ofstream g("TRIUNGHI.TXT");
string s;
int i = 0, lat = 300, cop[100];

struct Triunghi {
    pair<int, int> x, y, z;
    int T, copil;
}a[1000];

void triA(int x, int y, float lat, int ord, int i)
{
    int h=(lat*RAD3)/2;
    int segm = h/3;
    line(x,y-2*segm,x-lat/2,y+segm);
    line(x, y-2*segm, x+lat/2, y+segm);
    line(x-lat/2,y+segm,x+lat/2, y+segm);
    a[i].x = make_pair(x, y - 2 * segm);
    a[i].y = make_pair(x + lat / 2, y + segm);
    a[i].z = make_pair(x - lat / 2, y + segm);
    if(ord == 0)
        a[i].copil = 0;
    else {
        a[i].copil = a[cop[ord]].copil + 1;
        if(i != cop[ord])
            a[cop[ord]].copil += 1;
    }
    g << x << " " << y - 2 * segm << " " << x + lat / 2 << " " << y + segm << " " << x - lat / 2 << " " << y + segm << '\n';

}
void triV(int x, int y, float lat, int ord, int i)
{
    int h=(lat*RAD3)/2;
    int segm = h/3;
    line(x,y+2*segm,x+lat/2,y-segm);
    line(x,y+2*segm,x-lat/2,y-segm);
    line(x-lat/2,y-segm,x+lat/2,y-segm);
    a[i].x = make_pair(x + lat / 2, y - segm);
    a[i].y = make_pair(x, y + 2 * segm);
    a[i].z = make_pair(x - lat / 2, y - segm);
    if(ord == 0)
        a[i].copil = 0;
    else {
        a[i].copil = a[cop[ord]].copil + 1;
        if(i != cop[ord])
            a[cop[ord]].copil = a[cop[ord]].copil + 1;
    }

    g << x + lat / 2 << " " << y - segm << " " << x << " " << y + 2 * segm << " " << x - lat / 2 << " " << y - segm << '\n';

}
int main()
{

  initwindow(Lung,la);

  f >> s;
  int ord = 0;
  int t[100], cop[100];
  int lg = s.size();

  t[0] = 0;
  cop[0] = 0;
  if(s[0] == 'A')
      triA(400, 300, 300, 0, 0);
  else
      triV(400, 300, 300, 0, 0);
  for(i = 1; i < lg; i++) {
    if(s[i] == '(') {
        ord++;
        t[ord] = i - 1;
        cop[ord] = i + 1;

        lat = lat / 2;
    }

    else if(s[i] == 'A') {

        if(a[cop[ord]].copil == 0) {
            triA(a[t[ord]].x.first, a[t[ord]].x.second, lat, ord, i);
        }
        else if(a[cop[ord]].copil == 1) {
            triA(a[t[ord]].y.first, a[t[ord]].y.second, lat, ord, i);
        }
        else if(a[cop[ord]].copil == 2) {
            triA(a[t[ord]].z.first, a[t[ord]].z.second, lat, ord, i);
        }

  }
    else if(s[i] == 'V') {

        if(a[cop[ord]].copil == 0) {
            triV(a[t[ord]].x.first, a[t[ord]].x.second, lat, ord, i);
        }
        else if(a[cop[ord]].copil == 1) {
            triV(a[t[ord]].y.first, a[t[ord]].y.second, lat, ord, i);
        }
        else if(a[cop[ord]].copil == 2) {
            triV(a[t[ord]].z.first, a[t[ord]].z.second, lat, ord, i);
        }

  }
   else if(s[i] == '#') {
        a[i].copil = a[cop[ord]].copil + 1;
        if(i != cop[ord])
            a[cop[ord]].copil++;
   }
  else if(s[i] == ')') {
    ord--;
    lat *= 2;

  }
  g << i << ": " << s[i] <<  " ord: " << ord << " cop[ord]: " << cop[ord] << " t[ord]: " << t[ord] << " a[i].copil: " << a[i].copil << " a[cop[ord]]: " << a[cop[ord]].copil << '\n';
  }

  getch();
  closegraph();
  return 0;


}

Raw Text