Esempio n. 1
0
//metodo que imprimi todas as requisicoes enfileiradas
void imprimir(){
    if(pBegin==NULL){

        printf("Nao ha requisicoes\n");
        printf("Aperte uma tecla para continuar:");

        getch();
        limpa();

    }else{

    struct Nodo* pAtual = pBegin;

    while(pAtual!=NULL){

        printf("Codigo:%d\tNumero do cartao:%d\tValor da compra:%.2f\n",
               pAtual->requisicao.codigo,
               pAtual->requisicao.cartao,
               pAtual->requisicao.valor);

               pAtual = pAtual->pProximo;
        }
        printf("Aperte uma tecla para continuar:");

        getch();
        limpa();
    }
}
Esempio n. 2
0
int main(){
    int opcao;
    do{
        puts("Digite 1 para Matris de Adjacencia\n");
        puts("Digite 2 para Matris de Incidencia Nao Ordenado\n");
        puts("Digite 3 para Matris de Incidencia Ordenado\n");
        puts("Digite 0 para Encerrar o Programa\n");
        scanf("%i",&opcao);
        limpa();
        if(opcao==1)
            matris_adjacencia();
        else if(opcao==2)
            matris_incidencia(1);
        else if(opcao==3)
            matris_incidencia(2);
        else if(opcao==0){
            puts("Fim do programa\n");
            sleep(3);
            return 0;
        }
        else
            puts("Entrada Inválida!\n");
        puts("Digite algo para continuar...");
        getch();
        limpa();
    }while(opcao!=0);
}
Esempio n. 3
0
//apos a avaliacao e atualizacao dos saldos o arquivo saldos.txt eh salvo
void salvar_saldos(){

    if(cod>1){

    remove("saldos.txt")==0;

    FILE * arq2;
    char linha[16];

    arq2 = fopen("saldos.txt","a+");

    int i;

       for(i=0;i<MAX;i++){

            if(vetor[i]>0){

                struct Nodo *aux3=malloc(sizeof(struct Nodo));
                aux3 = hashTable[i];

                sprintf(linha,"%d",aux3->requisicao.cartao);
                fputs(linha,arq2);
                fputs("\n",arq2);
                sprintf(linha,"%.2f",aux3->requisicao.saldo);
                fputs(linha,arq2);
                fputs("\n",arq2);
                sprintf(linha,"%.2f",aux3->requisicao.limite);
                fputs(linha,arq2);
                fputs("\n#\n",arq2);

                free(aux3);//libera a memoria alocada
            }
       }
        fclose(arq2);
        printf("Arquivo de saldos atualizado com sucesso\n\n");
        printf("Aperte uma tecla para continuar:");

        getch();
        limpa();

    }else{
        printf("Avalie o arquivo de requisicoes primeiro\n\n");
        printf("Aperte uma tecla para continuar:");

        getch();
        limpa();
    }

 }
Esempio n. 4
0
void converte_num_char(int num, char* simb){
    int i = 0,
        j = 0,
        res = 0,
        aux = num;
    char parm = '\0';
    char temp[TAM];
    
    limpa(temp);
    
    do{
        res = aux % 10;
        parm = res + 48;
        concatenan(temp, &parm, 1);
        aux = aux / 10;
        i++;
    }while(aux > 1 && i < TAM - 1);
    
    i = i - 1;
    
    do{
        simb[j] = temp[i];
        i--;
        j++;
    }while(i > -1);

    simb[j+1] = '\0';
}
Esempio n. 5
0
/**
 * Shuffle a list
 */
listP baralhar(listP baralho) {
    int cartArr[(num*2)-2],i;
    shuff(cartArr);
    limpa (cartArr,dbar);
    for(i=0;i<=(num*2)-3;i++) {
        baralho = poe(baralho,cartArr[i]);
	};
    return(baralho);
}
Esempio n. 6
0
//metodo que armazena todas as requisicoes da fila em um arquivo
void armazenar(){

if(pBegin==NULL){

        printf("Nao ha requisicoes para escrever\n\n");
        printf("Aperte uma tecla para continuar:");

        getch();
        limpa();

    }else{

    struct Nodo* pAtual = pBegin;
    remove("requisicoes.txt");//exclui o arquivo antes de escrever as requisicoes

        while(pAtual!=NULL){

       FILE * arquivo;
       char linha [16];

       arquivo = fopen ("requisicoes.txt","a+");

       sprintf(linha,"%d",pAtual->requisicao.codigo);
       fputs (linha,arquivo);
       fputs("\n",arquivo);
       sprintf(linha,"%d",pAtual->requisicao.cartao);
       fputs (linha,arquivo);
       fputs("\n",arquivo);
       sprintf(linha,"%.2f",pAtual->requisicao.valor);
       fputs (linha,arquivo);
       fputs("\n#\n",arquivo);

       fclose (arquivo);

                   pAtual = pAtual->pProximo;
            }
            printf("Requisicoes salva no arquivo\n\n");
            printf("Aperte uma tecla para continuar:");

            getch();
            limpa();
        }

     }
Esempio n. 7
0
//Empilha a pilha um em cima da pilha2
void uniaodepilhas(Pilha* pilha1, Pilha* pilha2){
    Pilha aux;
    int elem;
    limpa(&aux);
    while(ehvazia(pilha1) != 1){
        desempilha(&elem, pilha1);
        empilha(elem, &aux);
    }
    while(ehvazia(&aux)!= 1){
        desempilha(&elem, &aux);
        empilha(elem, pilha2);
    }
}
Esempio n. 8
0
//apos a avalicao o arquivo avaliacoes.txt e  salvo
void salvar_avaliacoes(){
if(pTopo==NULL){

        printf("Nao ha avaliacoes para escrever\n\n");
        printf("Aperte uma tecla para continuar:");

        getch();
        limpa();

    }else{

    struct NodoPilha* pAtual = pTopo;
    remove("avaliacoes.txt")==0;//exclui o arquivo antes de escrever as requisicoes

    while(pAtual!=NULL){

   FILE * arq3;
   char linha [16];

   arq3 = fopen ("avaliacoes.txt","a+");

   sprintf(linha,"%d",pAtual->avaliacao.codigo);
   fputs (linha,arq3);
   fputs("\n",arq3);
   sprintf(linha,"%c",pAtual->avaliacao.resultado);
   fputs (linha,arq3);
   fputs("\n#\n",arq3);

   fclose (arq3);

               pAtual = pAtual->proximo;
        }
            printf("Avaliacoes salva no arquivo\n\n");
            printf("Aperte uma tecla para continuar:");

            getch();
            limpa();
        }
 }
Esempio n. 9
0
int main(){
    int opcao;
    do{
        puts("Digite 1 para Vetor de Adjacencia\n");
        puts("Digite 0 para Encerrar o Programa\n");
        printf("::>");
        scanf("%i",&opcao);
        limpa();
        if(opcao==1)
            vetor_adjacencia();
        else if(opcao==0){
            puts("Fim do programa\n");
            sleep(3);
            return 0;
        }
        else
            puts("Entrada Inválida!\n");
        puts("Digite algo para continuar...");
        getch();
        limpa();
    }while(opcao!=0);
}
Esempio n. 10
0
int main(){


    do{

        printf("Trabalho de AED II - Processsador\n\n\n");
        printf("1 - Carregar o arquivo de saldos\n");
        printf("2 - Avaliar o arquivo de requisicoes\n");
        printf("3 - Salvar o arquivo de saldos\n");
        printf("4 - Salvar arquivo de avaliacoes\n");
        printf("0 - Sair\n\n");
        printf("Escolha uma opcao:");
        scanf("%d",&opcao);

        switch(opcao){
            case 1:{
                printf("\n\n");
                carregar_saldo();

            }break;

            case 2:{
                printf("\n\n");
                carregar_requisicoes();

            }break;

            case 3:{
                printf("\n\n");
                salvar_saldos();
            }break;

            case 4:{
                printf("\n\n");
                salvar_avaliacoes();
            }break;

            default:{
                if(opcao>4){
                    printf("opcao invalida\n");
                    getch();
                }

                limpa();
            }
        }

    }while(opcao!=0);
}
Esempio n. 11
0
void barStk(int* stock, int tmn) {
    int tmp[stk],r,i=0;
    limpa(tmp,tmn);
    r=(rand()%tmn);
    showA(tmn,stock);
    while(i<tmn) {
        if (tmp[r] == 0) {
            tmp[r] = stock[i];
            i++;
            r=rand()%stk;
        } else {
            r=rand()%stk;
        };
    };
}
Esempio n. 12
0
int main(){
	short i;
	Tree *raiz=NULL;
	Ler_arq("rb",&raiz);
	do{
		menu();
		scanf("%hd", &i);
		limpa();
		switch(i){
			case 1:
				inserir(&raiz, cadastro());
		}
		getchar();
	}while(i!=7);
	
}
Esempio n. 13
0
/**
 * Shuffle an array
 */
int shuff(int* baralho) {
    int i=0, n=0,r;
    srand(time(NULL));
    limpa(baralho,dbar);
    while(i<104) {
        r = rand() % 105;
	    if ( n >= 13) {
            n=0;
        };
	    if (baralho[r] == 0) {
            n++;baralho[r] = n;
            i++;
        };
	};
    return(0);
}
Esempio n. 14
0
//carrega o arquivo de saldo e insere na tabelahash usando lista encadeada para tratamento de colisao
void carregar_saldo(){

    FILE  *arq;
    arq = fopen("saldos.txt","r");
    char separador;
    int posicao;

    if(arq==NULL){
        printf("Erro ao abrir arquivo de saldos\n\n");
    }else{
    inicializa_hashTable();

    while(!feof(arq)){

        struct Nodo *aux = malloc(sizeof(struct Nodo));

        //pega cada linha do arquivo e atribui a variavel da estrutura
        fscanf(arq,"%d\n",&aux->requisicao.cartao);
        fscanf(arq,"%f\n",&aux->requisicao.saldo);
        fscanf(arq,"%f\n",&aux->requisicao.limite);
        fscanf(arq,"%c\n",&separador);

        posicao = hash(aux);//calcula a posicao da tabelahash
        vetor[posicao]= aux->requisicao.cartao;//posicao valida do vetor
        vetorPosicoes[posicao] = posicao;//
        adicionar_hash(aux,posicao);//adiciona o nodo na tabelahash

        printf("posicao: %d\tcartao: %d\tsaldo: %.2f\tlimite: %.2f\n",
               posicao,
               hashTable[posicao]->requisicao.cartao,
               hashTable[posicao]->requisicao.saldo,
               hashTable[posicao]->requisicao.limite);

           aux->proximo = NULL;
           aux = NULL;
           free(aux);
            }
    }
    fclose(arq);
    printf("\n\n");
    printf("Arquivo de saldos carregado com sucesso\n");
    printf("Aperte uma tecla para continuar:");

    getch();
    limpa();
}
Esempio n. 15
0
//metodo que inclui uma requisicao na fila
void incluir(){

   struct Nodo *v = malloc(sizeof(struct Nodo));

   v->requisicao.codigo=cod;
   v->pProximo=NULL;

   printf("Digite o numero do cartao(8 digitos):");
   scanf("%d",&v->requisicao.cartao);
   printf("Digite o valor da compra:");
   scanf("%f",&v->requisicao.valor);

   enqueue(v);
   free(v);//libera a memoria alocada
   cod++;//codigo da requisicao incrementa apos o enqueue

    printf("\n\nRequisicao incluida com sucesso!\n");
    printf("Aperte uma tecla para continuar:");

    getch();
    limpa();
}
Esempio n. 16
0
int main(){


    do{
        printf("Trabalho de AED II - Produtor\n\n\n");
        printf("1 - Incluir requisicao\n");
        printf("2 - Armazenar requisicao\n");
        printf("0 - Sair\n\n");
        printf("Escolha uma opcao:");
        scanf("%d",&opcao);

        switch(opcao){
            case 1:{
                incluir();
            }break;

            case 2:{
                armazenar();
            }break;

            case 3 :{
                imprimir();
            }break;

            default:{
                if(opcao>3){
                    printf("opcao invalida\n");
                    getch();
                }

               limpa();
            }
        }

    }while(opcao!=0);

}
Esempio n. 17
0
//metodo que carrega o arquivo de avaliacoes
void carregar_requisicoes(){

    FILE *arq1;
    arq1 = fopen("requisicoes.txt","r");

    char separador;

    if(arq1==NULL){
        printf("Erro ao abrir o arquivo de requisicoes\n\n");
    }else{
        if(condicao_requisicao==0){
            while(!feof(arq1)){
                int cartao;
                int codigo,posicao;
                float valor;

                struct NodoPilha *aux2 = malloc(sizeof(struct NodoPilha));

                fscanf(arq1,"%d\n",&codigo);
                fscanf(arq1,"%d\n",&cartao);
                fscanf(arq1,"%f\n",&valor);
                fscanf(arq1,"%c\n",&separador);

                posicao=posicaoNoHash(cartao);//posicao da tabelahash que possui esse cartao

                if(hashTable[posicao]!=NULL){//a avaliacao apenas ocorre se a posicao na tabelahash for diferente de null

                    if(hashTable[posicao]->requisicao.cartao==cartao){
                        //se o valor da compra for menor ou igual ao saldo do cartao o resultado da avaliacao eh aceito
                        //e o saldo do cartao eh atualizado senao eh negado

                        if(valor<=hashTable[posicao]->requisicao.saldo){
                            printf("Requisicao numero: %d do cartao %d foi aceita\n",codigo,cartao);

                            aux2->avaliacao.resultado='A';
                            hashTable[posicao]->requisicao.saldo -=valor;


                        }else{
                            printf("Requisicao numero: %d do cartao %d foi negada\n",codigo,cartao);

                            aux2->avaliacao.resultado='N';
                        }

                        aux2->avaliacao.codigo=cod;//codigo da operacao
                        empilha(aux2);//empilha o nodo da avaliacao


                        free(aux2);//libera memoria alocada

                        cod++;
                    }
                }
                condicao_requisicao++;
            }

        }else{
            printf("Requisicoes ja avaliadas\n");
        }
    }
    fclose(arq1);
    printf("\n\n");
    printf("Arquivo de requisicoes carregado com sucesso\n");
    printf("Aperte uma tecla para continuar:");

    getch();
    limpa();
}
Esempio n. 18
0
/**
 * Main function. Initializes and starts the game
 */
int spitm() {listP mao1,mao2,pl11,pl12,pl13,pl14,pl21,pl22,pl23,pl24;
    int stock1[stk],stock2[stk],baralho[(num*2)-2],pc1[sz],pc2[sz],pc3[sz];
    mao1=mao2=pl11=pl12=pl13=pl14=pl21=pl22=pl23=pl24=NULL;
    int vencedor=0,turno=1,o,d,i=0,n=0,x=(LINES/2),y=(COLS/2);

    initscr();
    cbreak();
    keypad(stdscr,TRUE);
    noecho();
    start_color();
    init_pair(1,COLOR_WHITE,COLOR_GREEN);
    init_pair(2,COLOR_RED,COLOR_GREEN);
    bkgd(COLOR_PAIR(1));
    attron(COLOR_PAIR(2));

    limpa(pc1,13);
    limpa(pc2,13);
    limpa(pc3,13);
    shuff(baralho);
    atoa(baralho,stock1,20);
    atoa(baralho,stock2,20);
    mao1=atod(baralho,mao1,5);
    mao2=atod(baralho,mao2,5);
    while(!i) {
        if(stock1[0] > stock2[0]) {
            turno=1;i++;
        };break;
	    if(stock1[0] < stock2[0]) {
            turno=2;
            i++;
        };break;
	    barStk(stock1,stk);
        barStk(stock2,stk);
	};
    
    while(vencedor==0) {
        while(elemN(mao1)<5)
            mao1=atod(baralho,mao1,1);
        while(turno==1)	{
            clear();
            mostrac(mao1,pl11, pl12,pl13, pl14, mao2, pl21, pl22, pl23,pl24, pc1, pc2, pc3, stock1, stock2,turno);
            echo();
            mvprintw(22,0,"Insira origem(1-10) e destino (1-7):__ __");
            mvscanw(22,36," %d %d",&o,&d);
            if(o>0 && o<6) {
                if(d==1) {
                    if (showi(mao1,elemN(mao1)-o) == topAr(pc1)+1) {
                        dtoa(mao1,elemN(mao1)-o,pc1);
                    };
                };
                if(d==2) {
                    if (showi(mao1,elemN(mao1)-o) == topAr(pc2)+1) {
                        dtoa(mao1,elemN(mao1)-o,pc2);
                    };
                };
			    if(d==3) {
                    if (showi(mao1,elemN(mao1)-o) == topAr(pc3)+1) {
                        dtoa(mao1,elemN(mao1)-o,pc3);
                    };
                };
    			if(d==4) {
                    pl11=poe(pl11,showi(mao1,elemN(mao1)-o));
                    if(elemN(mao1) == o) {
                        mao1=rmUlt(mao1);turno=2;
                    } else {
                        rmI(mao1,elemN(mao1)-(o));
                        turno=2;
                    };
                };
	
			    if(d==5) {
                    pl12=poe(pl12,showi(mao1,elemN(mao1)-o));
                    if(elemN(mao1) == o) {
                        mao1=rmUlt(mao1);
                        turno=2;
                    } else {
                        rmI(mao1,elemN(mao1)-(o));
                        turno=2;
                    };
                };
			    if(d==6) {
                    pl13=poe(pl13,showi(mao1,elemN(mao1)-o));
                    if(elemN(mao1) == o) {
                        mao1=rmUlt(mao1);
                        turno=2;
                    } else {
                        rmI(mao1,elemN(mao1)-(o));
                        turno=2;
                    };
                };
			    if(d==7) {
                    pl14=poe(pl14,showi(mao1,elemN(mao1)-o));
                    if(elemN(mao1) == o) {
                        mao1=rmUlt(mao1);
                        turno=2;
                    } else {
                        rmI(mao1,elemN(mao1)-(o));
                        turno=2;
                    };
                };
			}; //end if(o>0 && o<6)
            if(o==10) {
                if(d==1){
                    if (topAr(stock1) == topAr(pc1)+1) {
                        addAe(stock1,pc1);
                    };
                };
			    if(d==2) {
                    if (topAr(stock1) == topAr(pc2)+1) {
                        addAe(stock1,pc2);
                    };
                };
			    if(d==3) {
                    if (topAr(stock1) == topAr(pc3)+1) {
                        addAe(stock1,pc3);
                    };
                };
            };
            if(o>5 && o< 10) {
                if(o==6 && d==1 && (elemN(pl11)!=0)) {
                    if (showi(pl11,elemN(pl11)-o) == topAr(pc1)+1) {
                        dtoa(pl11,elemN(pl11)-1,pc1);
                    };
                };
			    if(o==7 && d==1 && (elemN(pl12)!=0)) {
                    if (showi(pl12,elemN(pl12)-o) == topAr(pc1)+1) {
                        dtoa(pl12,elemN(pl12)-1,pc1);
                    };
                };
			    if(o==8 && d==1 && (elemN(pl13)!=0)) {
                    if (showi(pl13,elemN(pl13)-o) == topAr(pc1)+1) {
                        dtoa(pl13,elemN(pl13)-1,pc1);
                    };
                };
                if(o==9 && d==1 && (elemN(pl14)!=0)) {
                    if (showi(pl14,elemN(pl14)-o) == topAr(pc1)+1) {
                        dtoa(pl14,elemN(pl14)-1,pc1);
                    };
                };
            
                if(o==6 && d==2 && (elemN(pl11)!=0)) {
                    if (showi(pl11,elemN(pl11)-o) == topAr(pc2)+1) {
                        dtoa(pl11,elemN(pl11)-1,pc2);
                    };
                };
                if(o==7 && d==2 && (elemN(pl12)!=0)) {
                    if (showi(pl12,elemN(pl12)-o) == topAr(pc2)+1) {
                        dtoa(pl12,elemN(pl12)-1,pc2);
                    };
                };
                if(o==8 && d==2 && (elemN(pl13)!=0)) {
                    if (showi(pl13,elemN(pl13)-o) == topAr(pc2)+1) {
                        dtoa(pl13,elemN(pl13)-1,pc2);
                    };
                };
                if(o==9 && d==2 && (elemN(pl14)!=0)) {
                    if (showi(pl14,elemN(pl14)-o) == topAr(pc2)+1) {
                        dtoa(pl14,elemN(pl14)-1,pc2);
                    };
                };

                if(o==6 && d==3 && (elemN(pl11)!=0)) {
                    if (showi(pl11,elemN(pl11)-o) == topAr(pc3)+1) {
                        dtoa(pl11,elemN(pl11)-1,pc3);
                    };
                };
                if(o==7 && d==3 && (elemN(pl12)!=0)) {
                    if (showi(pl12,elemN(pl12)-o) == topAr(pc3)+1) {
                        dtoa(pl12,elemN(pl12)-1,pc3);
                    };
                };
                if(o==8 && d==3 && (elemN(pl13)!=0)) {
                    if (showi(pl13,elemN(pl13)-o) == topAr(pc3)+1) {
                        dtoa(pl13,elemN(pl13)-1,pc3);
                    };
                };
                if(o==9 && d==3 && (elemN(pl14)!=0)) {
                    if (showi(pl14,elemN(pl14)-o) == topAr(pc3)+1) {
                        dtoa(pl14,elemN(pl14)-1,pc3);
                    };
                };
            };//end if(o>5 && o< 10)
        }; //end while(turno==1)

        n=0;
        while ((stock1[n]==0) && (n<stk)) {
            n++;
        };
        // Winner is player 1
        if (stock1[n] == 0) {
            vencedor=1;
            turno=1;
        }

        // Tie
        if(baralho[num*2-3]==0)	{
            vencedor=3;
        };

        // Clean central stack
        if(pc1[0]==13) {
            atoa(pc1,baralho,13);
        };
        if(pc2[0]==13) {
            atoa(pc2,baralho,13);
        };
        if(pc3[0]==13) {
            atoa(pc3,baralho,13);
        };

        // fill hand 2
        while(elemN(mao2)<5) {
            mao2=atod(baralho,mao2,1);
        };

        while(turno==2) {
            clear();
            mostrac(mao1,pl11, pl12,pl13, pl14, mao2, pl21, pl22, pl23,pl24, pc1, pc2, pc3, stock1, stock2,turno);
            echo();
            mvprintw(22,0,"Insira origem(1-10) e destino (1-7):__ __");
            mvscanw(22,36,"%d %d",&o,&d);
            if(o>0 && o<6) {
                if(d==1) {
                    if (showi(mao2,elemN(mao2)-o) == topAr(pc1)+1) {
                        dtoa(mao2,elemN(mao2)-o,pc1);};
                    };
                    if(d==2) {
                        if (showi(mao2,elemN(mao2)-o) == topAr(pc2)+1) {
                            dtoa(mao2,elemN(mao2)-o,pc2);
                        };
                    };
                    if(d==3) {
                        if (showi(mao2,elemN(mao2)-o) == topAr(pc3)+1) {
                            dtoa(mao2,elemN(mao2)-o,pc3);
                        };
                    };
                    if(d==4) {
                        pl21=poe(pl21,showi(mao2,elemN(mao2)-o));
                        if(elemN(mao2) == o) {
                            mao2=rmUlt(mao2);turno=1;
                        } else {
                            rmI(mao2,elemN(mao2)-(o));
                            turno=1;
                        };
                    };
                    if(d==5) {
                        pl22=poe(pl22,showi(mao2,elemN(mao2)-o));
                        if(elemN(mao2) == o) {
                            mao2=rmUlt(mao2);
                            turno=1;
                        } else {
                            rmI(mao2,elemN(mao2)-(o));
                            turno=1;
                        };
                    };
                    if(d==6) {
                        pl23=poe(pl23,showi(mao2,elemN(mao2)-o));
                        if(elemN(mao2) == o) {
                            mao2=rmUlt(mao2);
                            turno=1;
                        } else {
                            rmI(mao2,elemN(mao2)-(o));
                            turno=1;
                        };
                    };
                    if(d==7) {
                        pl24=poe(pl24,showi(mao2,elemN(mao2)-o));
                        if(elemN(mao2) == o) {
                            mao2=rmUlt(mao2);
                            turno=1;
                        } else {
                            rmI(mao2,elemN(mao2)-(o));
                            turno=1;
                        }
                    };
		        };
                if(o==10) {
                    if(d==1){
                        if (topAr(stock2) == topAr(pc1)+1) {
                            addAe(stock2,pc1);
                        };
			        };
		            if(d==2) {
                        if (topAr(stock2) == topAr(pc2)+1) {
                            addAe(stock2,pc2);
                        };
			        };
                    if(d==3) {
                        if (topAr(stock2) == topAr(pc3)+1)  {
                            addAe(stock2,pc3);
                        };
				    };
                };
                if(o>5 && o< 10) {
                    if(o==6 && d==1 && (elemN(pl21)!=0)) {
                        if (showi(pl21,elemN(pl21)-o) == topAr(pc1)+1) {
                            dtoa(pl21,elemN(pl21)-1,pc1);
                        };
                    };
                    if(o==7 && d==1 && (elemN(pl22)!=0)) {
                        if (showi(pl22,elemN(pl22)-o) == topAr(pc1)+1) {
                            dtoa(pl22,elemN(pl22)-1,pc1);
                        };
                    };
                if(o==8 && d==1 && (elemN(pl23)!=0)) {
                    if (showi(pl23,elemN(pl23)-o) == topAr(pc1)+1) {
                        dtoa(pl23,elemN(pl23)-1,pc1);
                    };
                };
                if(o==9 && d==1 && (elemN(pl24)!=0)) {
                    if (showi(pl24,elemN(pl24)-o) == topAr(pc1)+1) {
                        dtoa(pl24,elemN(pl24)-1,pc1);
                    };
                };
                if(o==6 && d==2 && (elemN(pl21)!=0)) {
                    if (showi(pl21,elemN(pl21)-o) == topAr(pc2)+1) {
                        dtoa(pl21,elemN(pl21)-1,pc2);
                    };
                };
                if(o==7 && d==2 && (elemN(pl22)!=0)) {
                    if (showi(pl22,elemN(pl22)-o) == topAr(pc2)+1) {
                        dtoa(pl22,elemN(pl22)-1,pc2);
                    };
			    };
                if(o==8 && d==2 && (elemN(pl23)!=0)) {
                    if (showi(pl23,elemN(pl23)-o) == topAr(pc2)+1) {
                         dtoa(pl23,elemN(pl23)-1,pc2);
                     };
                };
                if(o==9 && d==2 && (elemN(pl24)!=0)) {
                    if (showi(pl24,elemN(pl24)-o) == topAr(pc2)+1) {
                        dtoa(pl24,elemN(pl24)-1,pc2);
                    };
                };

                if(o==6 && d==3 && (elemN(pl21)!=0)) {
                    if (showi(pl21,elemN(pl21)-o) == topAr(pc3)+1) {
                        dtoa(pl21,elemN(pl21)-1,pc3);
                    };
                };
                if(o==7 && d==3 && (elemN(pl22)!=0)) {
                    if (showi(pl22,elemN(pl22)-o) == topAr(pc3)+1) {
                        dtoa(pl22,elemN(pl22)-1,pc3);
                    };
                };
                if(o==8 && d==3 && (elemN(pl23)!=0)) {
                    if (showi(pl23,elemN(pl23)-o) == topAr(pc3)+1) {
                        dtoa(pl23,elemN(pl23)-1,pc3);
                    };
                };
                if(o==9 && d==3 && (elemN(pl24)!=0)) {
                    if (showi(pl24,elemN(pl24)-o) == topAr(pc3)+1) {
                        dtoa(pl24,elemN(pl24)-1,pc3);
                    };
                };
             };
        };
        n=0;
        while ((stock2[n]==0) && (n<stk)) {
            n++;
        };
        // Winner is player 2
        if (stock2[n] == 0) {
            vencedor=1;
            turno=1;
        }

        // Tie
        if(baralho[num*2-3]==0) {
            vencedor=3;
        };

        // Clean central stack
        if(pc1[0]==13) {
            atoa(pc1,baralho,13);
        };
        if(pc2[0]==13) {
            atoa(pc2,baralho,13);
        };
        if(pc3[0]==13) {
            atoa(pc3,baralho,13);
        };
    };
    if((vencedor==1)||(vencedor==2)) {
        clear();
        mvprintw(x-1,y-10,"+------------------------------------+");
        mvprintw(x,y-10,"|O jogador %d vence!                 |",vencedor);
        mvprintw(x+1,y-10,"+------------------------------------+");
        getch();
    } else {
        clear();
        mvprintw(x-1,y-10,"+------------------------------------+");
        mvprintw(x,y-10,"|Empate, não há vencedores.          |");
        mvprintw(x+1,y-10,"+------------------------------------+");
        getch();
    };
    endwin();
    bkgd(COLOR_PAIR(2));
    return 0;
}