Ir ao conteúdo
  • Cadastre-se
Cobblepot

C++ Para C

Recommended Posts

#include <iostream>

#include <conio.h>

#include <fstream>

#include <string>

using namespace std;

void learquivo(char *vet,char arqorigem[20])

{

    fstream arqB;

    arqB.open(arqorigem,ios::in);

    char n[70];

    int i=0;

    while(!arqB.eof())

    {

        arqB.read(n,1);

        n[1]=0;

        if(!arqB.eof())

        {

            vet=n[0];

            i++;

        }

    }

    vet=0;

    cout.flush();

    arqB.close();

        

}

void comprime(char *vet, int tam)

{

    int i;

    

    for(i=0;i<tam;i++)

    {

        if(vet==vet[i+1]&&vet==vet[i+2])

        {

         int j,q,t;

         j=i+2;

         q=2;

         t=0;

         vet[i+1]='¬';

         while(vet==vet[j]&&t!=10)

         {

             vet[j]='¬';

             j++;

             if(q<10)

             {

                    q++;

             }

             if(q>=10&&t<10)

             {

                    t++;

             }

         }

         if(q<10)

         {

             if(q==3)

             {

                 vet[i+1]='©';

                 vet[i+2]=q+48;

                 }

             if(q==4)

             {

                 vet[i+1]='©';

                 vet[i+2]=q+48;

                 }

             if(q==5)

             {

                 vet[i+1]='©';

                 vet[i+2]=q+48;

                 }

             if(q==6)

             {

                 vet[i+1]='©';

                 vet[i+2]=q+48;

                 }

             if(q==7)

             {

                 vet[i+1]='©';

                 vet[i+2]=q+48;

                 }

             if(q==8)

             {

                 vet[i+1]='©';

                 vet[i+2]=q+48;

                 }

             if(q==9)

             {

                 vet[i+1]='©';

                 vet[i+2]=q+48;

                 }    

         }

         else if(q>=10&&q<100)

         {

             vet[i+1]='æ';

             vet[i+2]=t+47;

         }

         i+=t+q-1;

        }

        else if(vet=='a'&&vet[i+1]=='s')//as

         {

             vet='¦';

             vet[i+1]='¬';

            

         }

        else if(vet=='e'&&vet[i+1]=='s')//es

         {

             vet='¨';

             vet[i+1]='¬';

            

         }

        else if(vet=='o'&&vet[i+1]=='s')//os

         {

             vet='®';

             vet[i+1]='¬';

            

         }

        else if(vet=='u'&&vet[i+1]=='s')//us

         {

             vet='«';

             vet[i+1]='¬';

            

         }

        else if(vet=='ã'&&vet[i+1]=='o')//ão

         {

             vet='Ä';

             vet[i+1]='¬';

            

         }

        else if(vet=='e'&&vet[i+1]=='m')//em

         {

             vet='~';

             vet[i+1]='¬';

            

         }

        else if(vet=='n'&&vet[i+1]=='o')//no

         {

             vet='^';

             vet[i+1]='¬';

            

         }

        else if(vet=='n'&&vet[i+1]=='a')//na

         {

             vet='¿';

             vet[i+1]='¬';

            

         }

        else if(vet=='a'&&vet[i+1]=='m')//am

         {

             vet='´';

             vet[i+1]='¬';

            

         }

        else if(vet=='p'&&vet[i+1]=='a')//pa

         {

             vet='_';

             vet[i+1]='¬';

            

         }

        else if(vet=='r'&&vet[i+1]=='a')//ra

         {

             vet='ª';

             vet[i+1]='¬';

            

         }

        else if(vet=='d'&&vet[i+1]=='a')//da

         {

             vet='ƒ';

             vet[i+1]='¬';

            

         }

        else if(vet=='d'&&vet[i+1]=='e')//de

         {

             vet='`';

             vet[i+1]='¬';

            

         }

         else if(vet=='d'&&vet[i+1]=='o')//do

         {

             vet='§';

             vet[i+1]='¬';

            

         }

         else if(vet=='q'&&vet[i+1]=='u'&&vet[i+2]=='e')//que

         {

             vet='1';

             vet[i+1]='a';

             vet[i+2]='¬';

            

         }

         else if(vet=='m'&&vet[i+1]=='e'&&vet[i+2]=='n')//men

         {

             vet='1';

             vet[i+1]='b';

             vet[i+2]='¬';

            

         }

         else if(vet=='c'&&vet[i+1]=='o'&&vet[i+2]=='m')//com

         {

             vet='1';

             vet[i+1]='c';

             vet[i+2]='¬';

            

         }

         else if(vet=='i'&&vet[i+1]=='n'&&vet[i+2]=='f')//inf

         {

             vet='1';

             vet[i+1]='d';

             vet[i+2]='¬';

            

         }

         else if(vet=='p'&&vet[i+1]=='o'&&vet[i+2]=='r')//por

         {

             vet='1';

             vet[i+1]='e';

             vet[i+2]='¬';

            

         }

         else if(vet=='c'&&vet[i+1]=='a'&&vet[i+2]=='n')//can

         {

             vet='1';

             vet[i+1]='f';

             vet[i+2]='¬';

            

         }

         else if(vet==' '&&vet[i+1]=='o'&&vet[i+2]=='u')// o

         {

             vet='1';

             vet[i+1]='g';

             vet[i+2]='¬';

            

         }

         else if(vet=='u'&&vet[i+1]=='m'&&vet[i+2]=='a')//uma

         {

             vet='1';

             vet[i+1]='h';

             vet[i+2]='¬';

            

         }

         else if(vet==' '&&vet[i+1]=='e'&&vet[i+2]==' ')// e

         {

             vet='&';

             vet[i+1]='¿';

             vet[i+2]='¬';

         }

         else if(vet==' '&&vet[i+1]=='a'&&vet[i+2]==' ')// a

         {

             vet='&';

             vet[i+1]='-';

             vet[i+2]='¬';

         }

    }

    

    

    cout<<"\nConversão Concluida\n";

}

int calculavetB(char *vet,int tam)

{

    int i,tamanhob=0;

        

    for(i=0;i<tam;i++)

    {

        if(vet[i+1]=='©')

             {

                 tamanhob+=vet[i+2]-48;

             }

        else if(vet[i+1]=='æ')

         {

             tamanhob+=10;

             tamanhob+=vet[i+2]-48;

         }

        else if(vet=='¦')

         {

             tamanhob+=2;

         }

        else if(vet=='¨')

         {

             tamanhob+=2;

         }

        else if(vet=='®')

         {

             tamanhob+=2;

         }

        else if(vet=='«')

         {

             tamanhob+=2;

         }

        else if(vet=='Ä')

         {

             tamanhob+=2;

         }

        else if(vet=='~')

         {

             tamanhob+=2;

         }

        else if(vet=='^')

         {

             tamanhob+=2;

         }

        else if(vet=='¿')

         {

             tamanhob+=2;

         }

        else if(vet=='´')

         {

             tamanhob+=2;            

         }

        else if(vet=='_')

         {

             tamanhob+=2;            

         }

        else if(vet=='ª')

         {

             tamanhob+=2;            

         }

        else if(vet=='ƒ')

         {

             tamanhob+=2;

            

         }

        else if(vet=='`')

         {

             tamanhob+=2;

            

         }

        else if(vet=='§')

         {

             tamanhob+=2;

            

         }

        else if(vet=='1'&&vet[i+1]=='a')

         {

             tamanhob+=3;

             i++;

            

         }

        else if(vet=='1'&&vet[i+1]=='b')

         {

             tamanhob+=3;

             i++;

            

         }

        else if(vet=='1'&&vet[i+1]=='c')

         {

             tamanhob+=3;

             i++;

            

         }

        else if(vet=='1'&&vet[i+1]=='d')

         {

             tamanhob+=3;

             i++;

            

         }

        else if(vet=='1'&&vet[i+1]=='e')

         {

             tamanhob+=3;

             i++;

            

         }

        else if(vet=='1'&&vet[i+1]=='f')

         {

             tamanhob+=3;

             i++;

            

         }

        else if(vet=='1'&&vet[i+1]=='g')

         {

             tamanhob+=3;

             i++;

            

         }

        else if(vet=='1'&&vet[i+1]=='h')

         {

             tamanhob+=3;

             i++;

            

         }

        else if(vet=='&'&&vet[i+1]=='¿')

         {

             tamanhob+=3;

             i++;            

         }

        else if(vet=='&'&&vet[i+1]=='-')

         {

             tamanhob+=3;

             i++;            

         }

        else

         tamanhob++;

    }

return tamanhob;

}

void armazena(char *vet, int tam,char arqdestino[20])

{

    int i=0,k;

    k=(tam/100)*3;

    

    ofstream arq;

    arq.open(arqdestino, ios::out);

    for(int i=0; i<tam; i++)

    {

        if(vet!='¬')

        arq << vet;

        if(i==k||i==k*1||i==k*2||i==k*3||i==k*4||i==k*5||i==k*6||i==k*7||i==k*8||i==k*9

||i==k*10)

         printf("%c",178);

    }

arq.close();

}

void converte(char *vet, char *vetdesc, int tam)

{

     int i,j=0,l,k,cont;

     for(i=0;i<tam;i++)

    {

        cont=0;

        if(vet[i+1]=='©')

         {

             cont=vet[i+2]-48;

             cont+=-1;

             vet[i+1]='¬';

             vet[i+2]='¬';

             while(cont>0)

             {

                 vetdesc[j]=vet;

                 j++;

                 cont--;

             }

            

         }

        else if(vet[i+1]=='æ')

         {

             cont=vet[i+2]-48;

             vet[i+1]='¬';

             vet[i+2]='¬';

             cont+=9;

             while(cont>0)

             {

                 vetdesc[j]=vet;

                 j++;

                 cont--;

             }

            

         }    

        if(vet=='¦')

         {

             vetdesc[j]='a';

             vetdesc[j+1]='s';

             j+=2;

         }

        else if(vet=='¨')

         {

             vetdesc[j]='e';

             vetdesc[j+1]='s';

             j+=2;

         }

        else if(vet=='®')

         {

             vetdesc[j]='o';

             vetdesc[j+1]='s';

             j+=2;

         }

        else if(vet=='«')

         {

             vetdesc[j]='u';

             vetdesc[j+1]='s';

             j+=2;

         }

        else if(vet=='Ä')

         {

             vetdesc[j]='ã';

             vetdesc[j+1]='o';

             j+=2;

         }

        else if(vet=='~')

         {

             vetdesc[j]='e';

             vetdesc[j+1]='m';

             j+=2;

         }

        else if(vet=='^')

         {

             vetdesc[j]='n';

             vetdesc[j+1]='o';

             j+=2;

         }

        else if(vet=='¿')

         {

             vetdesc[j]='n';

             vetdesc[j+1]='a';

             j+=2;

         }

        else if(vet=='´')

         {

             vetdesc[j]='a';

             vetdesc[j+1]='m';

             j+=2;

         }

        else if(vet=='_')

         {

             vetdesc[j]='p';

             vetdesc[j+1]='a';

             j+=2;

         }

        else if(vet=='ª')

         {

             vetdesc[j]='r';

             vetdesc[j+1]='a';

             j+=2;

         }

        else if(vet=='ƒ')

         {

             vetdesc[j]='d';

             vetdesc[j+1]='a';

             j+=2;

         }

        else if(vet=='`')

         {

             vetdesc[j]='d';

             vetdesc[j+1]='e';

             j+=2;

         }

         else if(vet=='§')

         {

             vetdesc[j]='d';

             vetdesc[j+1]='o';

             j+=2;

         }

         else if(vet=='1'&&vet[i+1]=='a')

         {

             vetdesc[j]='q';

             vetdesc[j+1]='u';

             vetdesc[j+2]='e';

             j+=3;

             i++;

         }

         else if(vet=='1'&&vet[i+1]=='b')

         {

             vetdesc[j]='m';

             vetdesc[j+1]='e';

             vetdesc[j+2]='n';

             j+=3;

             i++;

         }

         else if(vet=='1'&&vet[i+1]=='c')

         {

             vetdesc[j]='c';

             vetdesc[j+1]='o';

             vetdesc[j+2]='m';

             j+=3;

             i++;

         }

         else if(vet=='1'&&vet[i+1]=='d')

         {

             vetdesc[j]='i';

             vetdesc[j+1]='n';

             vetdesc[j+2]='f';

             j+=3;

             i++;

         }

         else if(vet=='1'&&vet[i+1]=='e')

         {

             vetdesc[j]='p';

             vetdesc[j+1]='o';

             vetdesc[j+2]='r';

             j+=3;

             i++;

         }

         else if(vet=='1'&&vet[i+1]=='f')

         {

             vetdesc[j]='c';

             vetdesc[j+1]='a';

             vetdesc[j+2]='n';

             j+=3;

             i++;

         }

         else if(vet=='1'&&vet[i+1]=='g')

         {

             vetdesc[j]=' ';

             vetdesc[j+1]='o';

             vetdesc[j+2]='u';

             j+=3;

             i++;

         }

         else if(vet=='1'&&vet[i+1]=='h')

         {

             vetdesc[j]='u';

             vetdesc[j+1]='m';

             vetdesc[j+2]='a';

             j+=3;

             i++;

         }

         else if(vet=='&'&&vet[i+1]=='¿')

         {

             vetdesc[j]=' ';

             vetdesc[j+1]='e';

             vetdesc[j+2]=' ';

             j+=3;

             i++;

         }

         else if(vet=='&'&&vet[i+1]=='-')

         {

             vetdesc[j]=' ';

             vetdesc[j+1]='a';

             vetdesc[j+2]=' ';

             j+=3;

             i++;

         }

         else

         {

         vetdesc[j]=vet;

         j++;

         }

    }

}

void mostraarquivo(char op,char arqorigem[20],char arqdestino[20])

{

    char mostrar[20];

    if(op=='O'||op=='o')

    {

    fstream arqc;

    arqc.open(arqorigem,ios::in);

    char n[70];

    while(!arqc.eof())

    {

        arqc.read(n,1);

        n[1]=0;

        if(!arqc.eof())

        {

            cout<<n[0];

        }

    }

    cout.flush();

    arqc.close();                

    }

    else

    {

    fstream arqd;

    arqd.open(arqdestino,ios::in);

    char n[70];

    while(!arqd.eof())

    {

        arqd.read(n,1);

        n[1]=0;

        if(!arqd.eof())

        {

            cout<<n[0];

        }

    }

    cout.flush();

    arqd.close();

    }

    cout<<"\nPrecione uma tecla para voltar ao menu principal"<<endl;

    getch();

    system("cls");

}

int main()

{

    int opcao=0,quantcomp;

    char arqorigem[20],arqdestino[20];

    arqorigem[0]='*';

    arqdestino[0]='*';

    while(opcao!=5){

    cout<<"\t\tÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"<<endl;

    cout<<"\t\tº"<<"\tBem vindo ao Gerds Compressor     º"<<endl;

    cout<<"\t\tº"<<"\tEscolha uma das Opções:             º"<<endl;

    cout<<"\t\tº"<<"\t1 - Compactar Arquivo             º"<<endl;

    cout<<"\t\tº"<<"\t2 - Descompactar Arquivo            º"<<endl;

    cout<<"\t\tº"<<"\t3 - Cadastrar Apelidos             º"<<endl;

    cout<<"\t\tº"<<"\t4 - Ver Arquivo                     º"<<endl;

    cout<<"\t\tº"<<"\t5 - Sair                            º"<<endl;

    cout<<"\t\tÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"<<endl;//172

    cin>>opcao;

    

    if(opcao==1)

    {

     cout<<"Digite o nome do arquivo a ser compactado: \n(O arquivo deve estar na mesma pasta que o descompactador)"<<endl;

     cin>>arqorigem;

     cout<<"Digite o nome do arquivo a ser gerado"<<endl;

     cin>>arqdestino;

     fstream arqA;

     arqA.open(arqorigem, ios::in);

    

     char n[70];

     int i=0;

     while(!arqA.eof())

     {

        

         arqA.read(n,1);

         n[1]=0;

         if(!arqA.eof())

         {

             i++;

         }

     }

     cout.flush();

     arqA.close();

         cout<<"Caracteres encontrados no arquivo "<<arqorigem<<" :"<<i<<endl;

         char *vet;

     vet=(char *)malloc(i*sizeof(int));

     learquivo(vet,arqorigem);

     comprime(vet,i);

     cout<<"\nIniciando Compactação\n";

     armazena(vet,i,arqdestino);

     cout<<"\nDocumento Compactado\n";

    

     fstream arq2;

     arq2.open(arqdestino, ios::in);

     int q=0;

     char b[70];

     while(!arq2.eof())

        {

        

             arq2.read(b,1);

             b[1]=0;

             if(!arq2.eof())

             {

                 q++;

             }

        }

        cout.flush();

        arq2.close();

    

        cout<<"Caracteres no "<< arqdestino<<" compactado: "<<q<<endl;

        cout<<"Pressione uma tecla para voltar ao menu principal"<<endl;

        getch();

        opcao=0;

        system("cls");

    }

    else if(opcao==2)

    {

        cout<<"Digite o nome do arqorigem a ser descompactado"<<endl;

        cin>>arqorigem;

        cout<<"Digite o nome do arqorigem a ser gerado"<<endl;

        cin>>arqdestino;

    

        fstream arqdes;

        arqdes.open(arqorigem, ios::in);

        char n[70];

        int i=0;

        while(!arqdes.eof())

        {

        

            arqdes.read(n,1);

            n[1]=0;

            if(!arqdes.eof())

            {

                 i++;

            }

        }

        cout.flush();

        arqdes.close();

        cout<<"O arquivo: " <<arqorigem<<" a ser descompactado possui "<<i<<" caracteres"<<endl;

        char *vet;

        vet=(char *)malloc(i*sizeof(int));

        learquivo(vet,arqorigem);

        int j;

        j=calculavetB(vet,i);

        cout<<"\nO arquivo: "<<arqdestino<<" terá "<<j<<" caracteres\n";

        char *vetdesc;

        vetdesc=(char *)malloc(j*sizeof(int));

        converte(vet,vetdesc,j);

        armazena(vetdesc,j,arqdestino);

        cout<<"\nDocumento Descompactado\n";

        cout<<"Pressione uma tecla para voltar ao menu principal"<<endl;

        getch();

        opcao=0;

        system("cls");

    }

    else if(opcao==3)

    {

     }

    else if(opcao==4)

    {

         char op;

         op='A';

         while(op!='o'&&op!='d'&&op!='O'&&op!='D')

         {

            cout<<"Digite O para origem e D para destino"<<endl;

            op=getch();

            if(arqorigem[0]=='*'&&(op=='o'||op=='O'))

            {

             cout<<"Arquivo origem nao digitado anteriormente"<<endl;

             cout<<"Digite o Nome do arquivo"<<endl;

             cin>>arqorigem;

            }

            if(arqdestino[0]=='*'&&(op=='d'||op=='D'))

            {

             cout<<"Arquivo Destino nao digitado anteriormente"<<endl;

             cout<<"Digite o Nome do arquivo"<<endl;

             cin>>arqdestino;

            }

         }

         mostraarquivo(op,arqorigem,arqdestino);

    }

}

}

}

 

Olá pessoal gostaria que alguem que sabe C e C++ passe este código para a linguagem C.


Compartilhar este post


Link para o post
Compartilhar em outros sites

Vendo rapidamente o código...

Você precisa alterar as rotinas de tratamento de arquivos e trabalhar com FILE (fopen, close, etc)..

E alterar as funções de IO, cout/cin para printf/scanf por exemplo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×