andersonwxavier Posted March 27, 2012 Report Share Posted March 27, 2012 Bom dia, Galera meu primeiro tópico no forum, comecei o curso de CC recentemente. e estou tendo muita dificuldade em uma materia chamadaEstrutura de dados,peço a ajuda de vocês, desde já muito obrigado a todos.Eu quero entender o programa abaixo o professor passou esse codigo e quer, que seja criado estruturas que estão faltando no programa,quero que alguém me explique como faço para criar essas estruturaso conteudo que está comentado são as estruturas que precisa ser criadasObs(quero apenas uma explicação dizendo como fazer)Muito Obrigado a todos!!!Segue programa.#include <iostream>#include <string.h>using namespace std;#define tam_max 10typedef int LISTA[tam_max];/*int acessar (LISTA l, int pos, int fim, int &valor);int alterar (LISTA l, int pos, int fim, int nvalor);*/int inserir_antes (LISTA l, int tam, int pos, int &fim, int valor);//int remover (LISTA l, int pos, int &fim, int &valor);void mostrar_lista (LISTA l, int fim);int main() { LISTA minhalista; int valor, final = 0, posicao,r; char op; do { mostrar_lista (minhalista, final); puts ("\n\nMenu principal"); puts ("\n\nEscolha a operacao que deseja realizar:"); puts ("\n\n1- Inserir valor\n\n2- Acessar valor de uma posicao\n\n3- Alterar valor de uma posicao"); puts ("\n4- Remover posicao\n\n5- Sair\n\nDigite a opcao:"); op = getchar(); switch (op) { case '1': puts ("\n\nDigite o valor (inteiro) a inserir: "); scanf ("%d",&valor); fflush(stdin); puts ("\n\nDigite a posicao em que deseja inserir: "); scanf ("%d",&posicao); fflush(stdin); r=inserir_antes(minhalista, tam_max, posicao-1, final, valor); if (r==1) puts ("\n\nValor inserido com sucesso!"); else puts ("\n\nERRO NA INSERCAO!"); getchar(); break; } } while (op!='5');}void mostrar_lista (LISTA l, int fim) { puts ("\n\nSITUACAO DA LISTA\n\n"); for (int i = 0; i < fim; i++) printf ("%d ", l); if (fim == 0) puts ("Lista Vazia"); puts ("\n\n");}int inserir_antes (LISTA l, int tam, int pos, int &fim, int valor) { int ret, i; if (fim < tam){ if (pos < 0 || pos > fim) { puts ("\n\nPosicao Invalida para a insercao\n\n"); ret=0; } else { for (i=fim; i<pos; i--) l=l[i-1]; l[pos]=valor; fim++; ret =1; } } else { puts ("\n\nLista Cheia\n\n"); ret = 0; }; return (ret);} Quote Link to comment Share on other sites More sharing options...
0 CPP Posted March 27, 2012 Report Share Posted March 27, 2012 Na sua função inserir_antes você tem um for que procura uma posição vaga e grava o valor informado.Pra sua função acessar() você só precisa validar os limites (como faz na inserir_antes) e copiar o conteudo de l[pos] pra valor.Pra função alterar() é a mesma coisa, só que você faz l[pos] ser igual ao valor informado.Ajudou?Abs Quote Link to comment Share on other sites More sharing options...
Question
andersonwxavier
Bom dia, Galera meu primeiro tópico no forum, comecei o curso de CC recentemente. e estou tendo muita dificuldade em uma materia chamada
Estrutura de dados,
peço a ajuda de vocês, desde já muito obrigado a todos.
Eu quero entender o programa abaixo o professor passou esse codigo e quer, que seja criado estruturas que estão faltando no programa,
quero que alguém me explique como faço para criar essas estruturas
o conteudo que está comentado são as estruturas que precisa ser criadas
Obs(quero apenas uma explicação dizendo como fazer)
Muito Obrigado a todos!!!
Segue programa.
#include <iostream>
#include <string.h>
using namespace std;
#define tam_max 10
typedef int LISTA[tam_max];
/*int acessar (LISTA l, int pos, int fim, int &valor);
int alterar (LISTA l, int pos, int fim, int nvalor);*/
int inserir_antes (LISTA l, int tam, int pos, int &fim, int valor);
//int remover (LISTA l, int pos, int &fim, int &valor);
void mostrar_lista (LISTA l, int fim);
int main() {
LISTA minhalista;
int valor, final = 0, posicao,r;
char op;
do {
mostrar_lista (minhalista, final);
puts ("\n\nMenu principal");
puts ("\n\nEscolha a operacao que deseja realizar:");
puts ("\n\n1- Inserir valor\n\n2- Acessar valor de uma posicao\n\n3- Alterar valor de uma posicao");
puts ("\n4- Remover posicao\n\n5- Sair\n\nDigite a opcao:");
op = getchar();
switch (op) {
case '1': puts ("\n\nDigite o valor (inteiro) a inserir: ");
scanf ("%d",&valor);
fflush(stdin);
puts ("\n\nDigite a posicao em que deseja inserir: ");
scanf ("%d",&posicao);
fflush(stdin);
r=inserir_antes(minhalista, tam_max, posicao-1, final, valor);
if (r==1) puts ("\n\nValor inserido com sucesso!");
else puts ("\n\nERRO NA INSERCAO!");
getchar();
break;
}
} while (op!='5');
}
void mostrar_lista (LISTA l, int fim) {
puts ("\n\nSITUACAO DA LISTA\n\n");
for (int i = 0; i < fim; i++)
printf ("%d ", l);
if (fim == 0) puts ("Lista Vazia");
puts ("\n\n");
}
int inserir_antes (LISTA l, int tam, int pos, int &fim, int valor) {
int ret, i;
if (fim < tam){
if (pos < 0 || pos > fim) {
puts ("\n\nPosicao Invalida para a insercao\n\n");
ret=0;
}
else {
for (i=fim; i<pos; i--)
l=l[i-1];
l[pos]=valor;
fim++;
ret =1;
}
}
else {
puts ("\n\nLista Cheia\n\n");
ret = 0;
};
return (ret);
}
Link to comment
Share on other sites
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.