QUESTÃO 1
Todo dispositivo digital, internamente, trabalha com dados formatados em estruturas específicas para resolver problemas particulares. Na vida profissional de um desenvolvedor, frequentemente, ele irá se deparar com situações nas quais é preciso identificar qual estrutura de dados é a mais adequada para determinada função.
Tomando por base as pilhas, pode-se realizar diversas operações para solucionar problemas. Uma dessas operações é a inversão dos dados de uma lista. Para se inverter a ordem dos dados de uma fila, vetor ou arquivo, basta desempilhar os seus valores e empilhá-los na ordem em que eles foram desempilhados. Ou seja, no mesmo momento em que se desempilha um elemento, deve-se empilha-lo em um novo local para que, ao final, repetindo esse processo, todos os elementos se invertam.
INSTRUÇÕES:
No caso das pilhas, as prerrogativas são as seguintes:
1 – A inserção de novos elementos é feita sempre ao final da pilha.
2 – A remoção de elementos também é feita somente no fim da pilha.
Assim, dizemos que a pilha opera ao estilho Last In, First Out (LIFO), ou seja, o último a entrar é o primeiro a sair.
Você deverá desenvolver um programa em Linguagem C que execute os seguintes passos:
1 - Preencher uma pilha com os números do seu R.A.;
2 - Imprimir a pilha na ordem em que os elementos foram inseridos (iniciando pela base, e finalizando pelo topo);
3 – Desempilhar todos os elementos, inserindo-os em uma segunda estrutura de dados do tipo pilha;
4 - Imprimir a nova pilha na ordem em que os elementos foram inseridos (iniciando pela base, e finalizando pelo topo).
Observação importante: seu código-fonte deve declara duas estruturas de dados tipo pilha distintas. A primeira impressão dos dados que seu programa deve fazer está relacionada ao conteúdo da primeira pilha (itens 1 e 2 do passo a passo apresentado acima). Já a segunda impressão dos dados que seu programa fará, está relacionada aos dados que foram inseridos na segunda pilha.
O resultado da execução do seu algoritmo, supondo que seu R.A. é igual ao número 12345678, deverá ser algo parecido com o seguinte:
Soluções para a tarefa
Resposta:
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int elemento[101];
int elementos;
}pilha;
int empilha (int valor, pilha *p);
int desempilha (pilha *p);
void imprimepilha(pilha *p);
int main( ) {
pilha pilha1;
pilha pilha2;
pilha1.elementos = pilha2.elementos = 0;
empilha(1,&pilha1);
empilha(2,&pilha1);
empilha(3,&pilha1);
empilha(4,&pilha1);
empilha(5,&pilha1);
empilha(6,&pilha1);
empilha(7,&pilha1);
empilha(8,&pilha1);
imprimepilha(&pilha1);
empilha(desempilha(&pilha1),&pilha2);
empilha(desempilha(&pilha1),&pilha2);
empilha(desempilha(&pilha1),&pilha2);
empilha(desempilha(&pilha1),&pilha2);
empilha(desempilha(&pilha1),&pilha2);
empilha(desempilha(&pilha1),&pilha2);
empilha(desempilha(&pilha1),&pilha2);
empilha(desempilha(&pilha1),&pilha2);
imprimepilha(&pilha2);
return 0;
}
int empilha(int valor,pilha *p) {
if (p->elementos==100)
{
printf("Tamanho máximo da pilha excedido.\n");
return 1;
}
p->elemento[p->elementos]=valor;
p->elementos++;
return 0;
}
int desempilha (pilha *p) {
if (p->elementos==0)
{
printf("Nao ha elementos na pilha.\n");
return -1;
}
p->elementos--;
return p->elemento[p->elementos];
}
void imprimepilha (pilha *p)
{
if (p->elementos == 0)
{
printf("Nao ha elementos na pilha.\n");
return;
}
for (int i=0; i<p->elementos; i++)
printf( "%d ", p->elemento[i]);
printf("\n");
return;
}
Leia mais em Brainly.com.br - https://brainly.com.br/tarefa/27057895#readmore
Explicação:
se der esse erro [Error] 'for' loop initial declarations are only allowed in C99 or C11 mode
faça isso
Configurar o Dev C++ para usar o padrão ansi iso c99 (recomendado para evitar mais problemas de compatibilidade com os exercícios do livro).
– na barra de ferramentas do dev c++ clique em Ferramentas, depois clique em Opções do Compilador , vai abrir uma janelinha, clique na aba Geração de Código, aonde diz Padrão da Linguagem (-std) selecione para ISO C99 e clique em Ok, agora seu código vai funcionar, e não vai aparecer mais essa mensagem de erro.
Leia mais em Brainly.com.br - https://brainly.com.br/tarefa/27057895#readmore
printf( "%d ", p->elemento[i]);
printf("\n");
return;
}
printf( "%d ", p->elemento[i]);
printf("\n");
return;
}