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");
}
Pergunta
stellamartins
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!
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.