Ir para conteúdo
Fórum Script Brasil
  • 0

O programa está pronto.Porém está faltando algo.


Áquila

Pergunta

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

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...