• 0
Sign in to follow this  
stellamartins

ordenar pilha - duvida

Question

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");
                             
                             }

Share this post


Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this