Ir para conteúdo
Fórum Script Brasil
  • 0

ordenar pilha - duvida


stellamartins

Pergunta

Olá pessoal, é a primeira vez que eu posto alguma coisa aqui... então desculpa qualquer coisa.

Bom, meu professor passou a seguinte questão:

>>duas pilhas sequenciais estão ordenadas a partir do topo. Transfira os elementos dessas pilhas para um terceira pilha, inicialmente vazia, de modo que ela fique oordenada decrescentemente (maior valor no topo). Suponha que não haja restrições de tamanho quanto a capacidade das pilhas.

Tenho muitas duvidas, mas mesmo assim tentei fazer. O resultado foi o seguinte código... o compilador está apontando alguns erros e eu não to conseguindo corrigir, e por isso eu ainda não consegui ver se dá certo... me ajudem por favor!

#include <stdio.h>
#define max 3
main(){
       int p1[max], p2[max], p3[max], p4[max], t1, t2, t3=-1, t4=-1, t, cheia,i;
       
       printf ("Inserindo os elementos na pilha 1 \n");
       for (t1=0;t1<max;t1++)
           scanf ("%d", &p1[t1]);

        printf ("Inserindo os elementos na pilha 2 \n");
       for (t2=0;t2<max;t2++)
           scanf ("%d",&p2[t2]);
           
       p3[t3]=-90000000;
       
       //printf ("%d %d\n", t1, t2);

       while (t1 >= 0 || t2 >= 0) {
            printf ("t1 %d t2 %d  ", t1,t2);
            system("pause");

            t1 = t2 = t1-1;

            printf ("t3 %d t1 %d\n", t3, t1);
            
             if (p1[t1] < p2[t2]) {

                if (p1[t1] == p3[t3])
                    t1--;
                    
                else {
                     if (p1[t1] > p3[t3]){
                        //teste t1 t3 vale
                        printf ("antes incrementacao t3 %d t1 %d\n", t3, t1);
                        printf ("antes incrementacao p3[t3] %d p1[t1] %d\n", p3[t3], p1[t1]);

                        p3[++t3]=p1[t1--];

                        //teste t1 t3 vale depois incrementacao
                        printf ("depois incrementacao t3 %d t1 %d\n", t3, t1);
                        printf ("antes incrementacao p3[t3] %d p1[t1] %d\n", p3[t3], p1[t1]);
                        }
                     else{
                          if (p1[t1] <= p3[t3]){
                            while (p3[t3] >= p1[t1]){
                            
                                  if (p1[t1] == p3[t3])
                                  t3--;
                                  else
                                    p4[++t4] = p3[t3--];

                                  
                             p4[++t4] = p3[t3--];
                           }
                          p3[++t3] = p1[t1--];
                     }
                }
            else{
                  if (p2[t2] >p1[t1]){
                     if(p2[t2] == p3[t3])
                         t2--;
                     else{
                          if(p2[t2] > p3[t3])
                             p3[++t3] = p2[t2--];
                             
                          else{
                               while (p3[t3] >= p2[t2]) {
                                     if (p3[t3] == p2[t2]){
                                        t3--;
                                     }
                                     else
                                          p4[++t4] = p3[t3--];
                               }
                               p4[++t4] = p3[t3--];

                               while (t4 > -1){
                                     p3[++t3] = p4[t4--];
                               }
                             }
                             }
                             }
                             }
                            }
                             }
        for (i=t3;i>=0;i--){

            printf ("%d\t", p3[i]);
            p4[++t4] = p3[i];
        }

                             system ("pause");
                             
                             }

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...