Ir para conteúdo
Fórum Script Brasil

stellamartins

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Posts postados por stellamartins

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

×
×
  • Criar Novo...