Cod sursa(job #2467579)

Utilizator modulopaulModulopaul modulopaul Data 4 octombrie 2019 17:26:51
Problema Algoritmul lui Euclid extins Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.87 kb
#include <iostream>
#include <algorithm>
#include <fstream>
#include <cstring>
#define MAXN 1602
#define MAXLG 257
#define MAXNRF 102
#define uint unsigned int

using namespace std;
ifstream fin("dir.in");
ofstream fout("dir.out");
struct help{
    char cv[MAXLG];
}out[MAXLG];
char st[MAXLG][MAXLG],prop[MAXN];
char temp[MAXLG];
int nrfiles=0;
int cont=0;
void save(){
    int outind=0;
    for(int i=1;i<=cont;i++){
        for(uint j=0;j<strlen(st[i]);j++){
            out[nrfiles].cv[outind]=st[i][j];
            outind++;
        }
        out[nrfiles].cv[outind]=92;
        outind++;
    }
    int maxx=strlen(temp);
    for(int i=0;i<maxx;i++){
        out[nrfiles].cv[outind]=temp[i];
        outind++;
    }
    out[nrfiles].cv[outind]='\0';
}
void cpy(){
    //cout<<st[cont]<<'\n';
    st[cont][1]='\0';
    int maxx=strlen(temp);
    for(int i=0;i<maxx;i++){
        st[cont][i]=temp[i];
    }
    st[cont][maxx]='\0';
}
bool comp(help a,help b){
    if(strcmp(a.cv,b.cv)<0)
        return 1;
    return 0;
}
int main(){
    //return 0;
    fin.get(prop,MAXN);
    int nrel=strlen(prop);
    for(int i=0;i<nrel;){
        int j=0;
        temp[1]='\0';
        bool ok=false;
        while(i<nrel and prop[i]!='(' and prop[i]!=',' and prop[i]!=')'){
            temp[j]=prop[i];
            i++,j++;
            ok=true;
        }
        temp[j]='\0';
        fout<<temp<<'\n';
        if(prop[i]=='('){
            cont++;
            st[cont][1]='\0';
            cpy();
        }
        else if(ok==true){
            nrfiles++;
            save();
        }
        if(prop[i]==')'){
            st[cont][1]='\0';
            cont--;
        }
        i++;
    }
    fout<<nrfiles<<'\n';
    sort(out+1,out+nrfiles+1,comp);
    for(int i=1;i<=nrfiles;i++){
        fout<<out[i].cv<<'\n';
    }
    return 0;
}