Informática, perguntado por nerdgggglll, 8 meses atrás

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:

Anexos:

Soluções para a tarefa

Respondido por alexvulf
5

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


andrewgabriel05: Seria possível compartilhar o código fonte pelo Google drive ? Estou obtendo erro de arquivo fonte não copilado.
fellipems14: ai, no final do código é oq? tá falatando um identificador ali?
fellipems14: for (int i=0; ielementos; i++)

printf( "%d ", p->elemento[i]);

printf("\n");

return;

}
fellipems14: no final do código ai falta oque? for (int i=0; ielementos; i++)

printf( "%d ", p->elemento[i]);

printf("\n");

return;

}
fellipems14: o meu só imprimi o primeiro elemento de cada pilha
nerdgggglll: é so tirar os espaços no final das linda do codigo, que pega normalmente
guto683: COMO ASSIM?
mateusherdeiroscorci: Pessoal, alguns de vcs nao devem estar conseguindo trazer todos os registros pq o ultimo For vc devem ter posto "{}", retire-as e vejam se funciona
guto683: alguem me ajuda nesse codigo
Perguntas interessantes