Cod sursa(job #2204632)

Utilizator GeorgeCalinPetruta George-Calin GeorgeCalin Data 16 mai 2018 18:53:25
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.77 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("arbore.in");
ofstream g("arbore.out");
struct nod
{
    char nume[20],prenume[20];
    int CNP;
    nod *st,*dr;
};
int x,y,k,s,z;
void creare(nod*&p)
{
    int nr;
    char num[20],pre[20];
    f>>nr;
    if(nr==0)
        p=NULL;
    else
    {

        p=new nod;
        p->CNP=nr;
        f>>num;
        f>>pre;
        strcpy(p->nume,num);
        strcpy(p->prenume,pre);

        creare(p->st);

        creare(p->dr);
    }
}
void nivel(nod*p,int niv)
{
    if(p!=NULL)
    {
        if(niv==k)
            g<<p->nume<<" "<<p->prenume<<" "<<p->CNP<<endl;
        else
        {
            nivel(p->st,niv+1);
            nivel(p->dr,niv+1);
        }
    }
}
void verii_primari(nod*p)
{
    if(p!=NULL)
    {
        if((p->st->st!=NULL&&p->st->st->CNP==x)||(p->st->dr!=NULL&&p->st->dr->CNP==x))
        {
            if(p->dr->st!=NULL)
               g<<p->st->st->nume<<" "<<p->dr->st->prenume;
            if(p->dr->dr!=NULL)
                g<<p->dr->dr->nume<<" "<<p->dr->dr->prenume;
        }
        if((p->dr->st!=NULL&&p->dr->st->CNP==x)||(p->dr->dr!=NULL&&p->dr->dr->CNP==x))
            {
                if(p->dr->st!=NULL)
                g<<p->st->st->nume<<" "<<p->st->st->prenume;
                if(p->st->dr!=NULL)
                g<<p->st->dr->nume<<" "<<p->st->dr->prenume;
            }
       verii_primari(p->st);
       verii_primari(p->dr);
    }
}
int main()
{
    nod*p;
    p=NULL;
    f>>k>>x>>y>>z>>s;
    creare(p);
    g<<"pers de pe niv k sunt"<<endl;
    nivel(p,1);
    g<<"---------------------"<<endl;
    g<<"verii primari ai persoanei x"<<endl;
    verii_primari(p);
       return 0;
}