Áquila Postado Fevereiro 19, 2010 Denunciar Share Postado Fevereiro 19, 2010 1) Faça um programa em C, que:a) crie uma lista sequencial do tipo t_lista com 50 elementos;B) exiba o seguinte menu de opções:EDITOR DE LISTAS1 – EXIBIR LISTA2 – INSERIR PELA POSICAO3 – REMOVER PELA POSICAO4 – EXIBIR ELEMENTO5 – EXIBIR POSIÇÃO6 – ESVAZIAR7 – SAIRDIGITE SUA OPÇÃO:c) leia a opção do usuário;d) execute a opção escolhida pelo usuário;e) implemente a estrutura de dados lista, com implementação sequencial e utilizando como oelemento uma outra estrutura contendo dados simples, como números ou nomes. A lista deve conterapenas as operações básicas de listas (criar, isVazia, isCheia, tamanho, getElemento, getPosicao,inserir, remover);f) na opção de exibir lista, devem ser exibidos o tamanho da lista e os seus elementos;g) na opção de inserção, deve ser lido o valor do elemento a ser inserido e a posição onde seráefetuada a inserção;h) na opção de remoção, deve ser lido a posição do elemento a ser removido;i) na opção de exibir elemento, deve ser lido a posição do elemento;j) na opção de exibir posição, deve ser lido o valor do elemento;k) as operações de exibir e esvaziar a lista devem estar inseridas no programa principal;l) após a execução de cada opção, o programa deve retornar ao menu para nova opção do usuário ouo encerramento do programa.O código que eu escrevi está parte feito, mas não sei mais o que está faltando. O código que eu fiz foi esse:#include <stdio.h>#include <stdlib.h>// tamanho máximo da lista#define MAX 10// Tipo base dos elementos da lista typedef struct elementos { char nome[50]; char tel[50]; struct elementos *ptr; int x; } t_elemento;// Estrutura da listatypedef struct { t_elemento vetor[MAX]; // vetor que contém a lista int n; // posição do ultimo elemento da lista} t_lista; // tipo listat_lista * criar() { t_lista * lista = (t_lista*) malloc(sizeof(t_lista)); if (lista) lista->n = -1; return lista;}void isVazia(t_lista * lista) {int isVazia(t_lista * lista) { return (lista->n == -1); }}int isCheia(t_lista * lista) { return (lista->n == MAX-1); }int tamanho(t_lista * lista) { return lista->n + 1;}t_elemento * geElemento(t_lista * lista, int pos) { // Retorna 0 se a posição for inválida. Caso contrário, retorna o elemento // verifica se pos é valida if ( (pos > lista->n) || (pos < 0) ) return 0; return &(lista->vetor[pos]);}int compara(t_elemento * dado1, t_elemento * dado2) { if (dado1->x == dado2->x) { return 1; } return 0;}int getPosicao(t_lista * lista, t_elemento * dado) { // Retorna a posição do elemento, ou 0 caso não seja encontrado int i; for (i=0; i<=lista->n; i++) if (compara(&(lista->vetor), dado)) return i; return 0;}// desloca os elementos da lista para a direita a partir de posint deslocaDireita(t_lista * lista, int pos) { // Retorna 0 se a posição for inválida ou se a lista estiver cheia // Caso contrário, retorna 1 int i; if (pos > lista->n) return 0; for (i=lista->n + 1; i>pos; i--) lista->vetor = lista->vetor[i-1]; return 1;}// desloca os elementos da lista para a esquerda a partir de posint deslocaEsquerda(t_lista * lista, int pos) { // Retorna 0 se a posição for inválida ou se a lista estiver cheia // Caso contrário, retorna 1 int i; if (pos > lista->n) return 0; for (i=pos; i<=(lista->n); i++) lista->vetor = lista->vetor[i+1]; return 1;}void inserir(t_lista * lista, int pos, t_elemento * dado) {int inserir (t_lista * lista, int pos, t_elemento * dado) { // Retorna 0 se a posição for inválida ou se a lista estiver cheia // Caso contrário, retorna 1 if ( isCheia(lista) || (pos > lista->n + 1) ) return 0; deslocaDireita(lista, pos); lista->vetor[pos] = *dado; (lista->n)++; return 1; }}int remover (t_lista *lista, int pos) { // O parâmetro dado irá receber o elemento encontrado // Retorna 0 se a posição for inválida. Caso contrário, retorna 1 if ( (pos > lista->n) || (pos < 0) ) return 0; deslocaEsquerda(lista, pos); (lista->n)--; return 1;}int main () { // programa principal int opcao; t_lista * lista; printf("EDITOR DE LISTAS\n"); printf("1- EXIBIR LISTA\n"); printf("2- INSERIR PELA POSICAO\n"); printf("3- REMOVER PELA POSICAO\n"); printf("4- EXIBIR ELEMENTO\n"); printf("5- EXIBIR POSIÇÃO\n"); printf("6- ESVAZIAR\n"); printf("7- SAIR\n"); printf("DIGITE SUA OPÇÃO:\n"); scanf("%d", &opcao); inserir(lista); remover(lista); getchar; getchar;}Por favor me ajudem não sei mais o que eu posso fazer. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Áquila
1) Faça um programa em C, que:
a) crie uma lista sequencial do tipo t_lista com 50 elementos;
B) exiba o seguinte menu de opções:
EDITOR DE LISTAS
1 – EXIBIR LISTA
2 – INSERIR PELA POSICAO
3 – REMOVER PELA POSICAO
4 – EXIBIR ELEMENTO
5 – EXIBIR POSIÇÃO
6 – ESVAZIAR
7 – SAIR
DIGITE SUA OPÇÃO:
c) leia a opção do usuário;
d) execute a opção escolhida pelo usuário;
e) implemente a estrutura de dados lista, com implementação sequencial e utilizando como o
elemento uma outra estrutura contendo dados simples, como números ou nomes. A lista deve conter
apenas as operações básicas de listas (criar, isVazia, isCheia, tamanho, getElemento, getPosicao,
inserir, remover);
f) na opção de exibir lista, devem ser exibidos o tamanho da lista e os seus elementos;
g) na opção de inserção, deve ser lido o valor do elemento a ser inserido e a posição onde será
efetuada a inserção;
h) na opção de remoção, deve ser lido a posição do elemento a ser removido;
i) na opção de exibir elemento, deve ser lido a posição do elemento;
j) na opção de exibir posição, deve ser lido o valor do elemento;
k) as operações de exibir e esvaziar a lista devem estar inseridas no programa principal;
l) após a execução de cada opção, o programa deve retornar ao menu para nova opção do usuário ou
o encerramento do programa.
O código que eu escrevi está parte feito, mas não sei mais o que está faltando. O código que eu fiz foi esse:
#include <stdio.h>
#include <stdlib.h>
// tamanho máximo da lista
#define MAX 10
// Tipo base dos elementos da lista
typedef struct elementos {
char nome[50];
char tel[50];
struct elementos *ptr;
int x;
} t_elemento;
// Estrutura da lista
typedef struct {
t_elemento vetor[MAX]; // vetor que contém a lista
int n; // posição do ultimo elemento da lista
} t_lista; // tipo lista
t_lista * criar() {
t_lista * lista = (t_lista*) malloc(sizeof(t_lista));
if (lista)
lista->n = -1;
return lista;
}
void isVazia(t_lista * lista) {
int isVazia(t_lista * lista) {
return (lista->n == -1);
}
}
int isCheia(t_lista * lista) {
return (lista->n == MAX-1);
}
int tamanho(t_lista * lista) {
return lista->n + 1;
}
t_elemento * geElemento(t_lista * lista, int pos) {
// Retorna 0 se a posição for inválida. Caso contrário, retorna o elemento
// verifica se pos é valida
if ( (pos > lista->n) || (pos < 0) )
return 0;
return &(lista->vetor[pos]);
}
int compara(t_elemento * dado1, t_elemento * dado2) {
if (dado1->x == dado2->x)
{
return 1;
}
return 0;
}
int getPosicao(t_lista * lista, t_elemento * dado) {
// Retorna a posição do elemento, ou 0 caso não seja encontrado
int i;
for (i=0; i<=lista->n; i++)
if (compara(&(lista->vetor), dado))
return i;
return 0;
}
// desloca os elementos da lista para a direita a partir de pos
int deslocaDireita(t_lista * lista, int pos) {
// Retorna 0 se a posição for inválida ou se a lista estiver cheia
// Caso contrário, retorna 1
int i;
if (pos > lista->n)
return 0;
for (i=lista->n + 1; i>pos; i--)
lista->vetor = lista->vetor[i-1];
return 1;
}
// desloca os elementos da lista para a esquerda a partir de pos
int deslocaEsquerda(t_lista * lista, int pos) {
// Retorna 0 se a posição for inválida ou se a lista estiver cheia
// Caso contrário, retorna 1
int i;
if (pos > lista->n)
return 0;
for (i=pos; i<=(lista->n); i++)
lista->vetor = lista->vetor[i+1];
return 1;
}
void inserir(t_lista * lista, int pos, t_elemento * dado) {
int inserir (t_lista * lista, int pos, t_elemento * dado) {
// Retorna 0 se a posição for inválida ou se a lista estiver cheia
// Caso contrário, retorna 1
if ( isCheia(lista) || (pos > lista->n + 1) )
return 0;
deslocaDireita(lista, pos);
lista->vetor[pos] = *dado;
(lista->n)++;
return 1;
}
}
int remover (t_lista *lista, int pos) {
// O parâmetro dado irá receber o elemento encontrado
// Retorna 0 se a posição for inválida. Caso contrário, retorna 1
if ( (pos > lista->n) || (pos < 0) )
return 0;
deslocaEsquerda(lista, pos);
(lista->n)--;
return 1;
}
int main () { // programa principal
int opcao;
t_lista * lista;
printf("EDITOR DE LISTAS\n");
printf("1- EXIBIR LISTA\n");
printf("2- INSERIR PELA POSICAO\n");
printf("3- REMOVER PELA POSICAO\n");
printf("4- EXIBIR ELEMENTO\n");
printf("5- EXIBIR POSIÇÃO\n");
printf("6- ESVAZIAR\n");
printf("7- SAIR\n");
printf("DIGITE SUA OPÇÃO:\n");
scanf("%d", &opcao);
inserir(lista);
remover(lista);
getchar;
getchar;
}
Por favor me ajudem não sei mais o que eu posso fazer.
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.