Skip to content

Trabalho A Listas Simples

Nirton Afonso edited this page Jun 18, 2026 · 1 revision

Trabalho A – Listas Simples

Visão Geral

Neste trabalho, você deverá implementar uma lista simples em linguagem C usando vetor de struct.

A lista representa um conjunto de registros armazenados em sequência. Para controlar quantos registros existem, use uma variável como quantidade.

Modelo geral:

#define MAX 100

Registro lista[MAX];
int quantidade = 0;

O objetivo principal é praticar:

  • criação de registros com struct;
  • inserção em vetor;
  • busca por uma chave;
  • edição de dados;
  • exclusão com reorganização dos elementos;
  • listagem;
  • salvamento e carregamento em arquivo CSV.

Antes de Escolher o Tema

Escolha um tema que você consiga entender bem e explicar depois. Todos os temas usam lista simples, mas cada um enfatiza uma habilidade diferente.

  • Se você quer começar por uma ideia mais intuitiva, escolha A1 - Playlist de Músicas.
  • Se você quer praticar lista ordenada por chave numérica, escolha A2 - Controle de Estoque.
  • Se você quer um desafio com ordenação por prioridade e critério de desempate, escolha A3 - Triagem Hospitalar.

Não existe tema "melhor". O melhor tema é aquele que você consegue implementar com clareza, testar bem e explicar com segurança.


Tema A1 – Playlist de Músicas

Ideia do Tema

Você irá simular uma playlist. Cada música cadastrada será um registro do vetor. O programa deverá permitir cadastrar músicas, buscar por ID, editar informações, excluir uma música e listar a playlist.

Este é um tema bom para quem quer trabalhar com uma lista mais livre, sem obrigação de manter os registros ordenados por um campo específico.

Campos do Registro

Campo Tipo Descrição
id int Identificador único da música
titulo char[50] Título da música
artista char[50] Nome do artista
duracao int Duração em segundos
genero char[30] Gênero musical

Regras Específicas

  • O id deve ser único.
  • O programa deve impedir o cadastro de duas músicas com o mesmo id.
  • A lista pode ser mantida na ordem de cadastro.
  • Ao excluir uma música, os elementos posteriores devem ser deslocados para ocupar o espaço vazio.

Exemplo de Uso Esperado

  1. O usuário escolhe a opção de inserir música.
  2. O programa pede ID, título, artista, duração e gênero.
  3. O programa verifica se o ID já existe.
  4. Se não existir e houver espaço no vetor, insere o registro.
  5. Ao listar, as músicas aparecem na ordem armazenada.

Tema A2 – Controle de Estoque

Ideia do Tema

Você irá criar um pequeno controle de estoque. Cada produto será um registro do vetor, e a lista deverá permanecer ordenada automaticamente pelo código do produto.

Este tema é indicado para quem quer praticar inserção ordenada. Aqui, não basta inserir sempre no final: o programa precisa encontrar a posição correta e deslocar os elementos para abrir espaço.

Campos do Registro

Campo Tipo Descrição
codigo int Código único do produto
nome char[50] Nome do produto
quantidade int Quantidade em estoque
preco float Preço unitário

Regras Específicas

  • O codigo deve ser único.
  • A lista deve ser mantida ordenada por código automaticamente durante a inserção.
  • Ao editar um produto, o código não pode ser alterado.
  • A busca, edição e exclusão devem ser feitas pelo código.

Exemplo de Uso Esperado

Se o usuário cadastrar os produtos com códigos 30, 10 e 20, a listagem deverá aparecer como:

10
20
30

Isso demonstra que a lista está sendo organizada pela lógica de inserção, e não apenas pela ordem em que os dados foram digitados.


Tema A3 – Triagem Hospitalar

Ideia do Tema

Você irá simular uma lista de triagem hospitalar. Cada paciente será um registro do vetor. A ordem da lista deve considerar a gravidade do atendimento e, em caso de empate, a ordem de chegada.

Este é o tema mais desafiador da lista, porque exige uma regra de ordenação com dois critérios:

  1. gravidade menor vem primeiro;
  2. se a gravidade for igual, a menor senha vem primeiro.

Campos do Registro

Campo Tipo Descrição
senha int Senha única do paciente
nome char[50] Nome do paciente
idade int Idade do paciente
gravidade int Gravidade de 1 a 4, sendo 1 a mais grave

Regras Específicas

  • A senha deve ser única.
  • A gravidade deve ser validada entre 1 e 4.
  • A lista deve ficar ordenada por gravidade em ordem crescente.
  • Em caso de mesma gravidade, o desempate deve ser feito pela senha crescente.

Exemplo de Uso Esperado

Se forem cadastrados os pacientes abaixo:

Senha 10 - Gravidade 3
Senha 11 - Gravidade 1
Senha 12 - Gravidade 3
Senha 13 - Gravidade 2

A listagem esperada será:

Senha 11 - Gravidade 1
Senha 13 - Gravidade 2
Senha 10 - Gravidade 3
Senha 12 - Gravidade 3

Funcionalidades Obrigatórias para Todos os Temas

Independentemente do tema escolhido, o programa deve ter um menu interativo com opções numéricas e implementar:

  • Inserir: adicionar um registro na lista, respeitando a regra do tema.
  • Buscar: localizar um registro pelo campo chave (id, codigo ou senha) e mostrar todos os dados.
  • Editar: alterar campos não chave de um registro já existente.
  • Excluir: remover um registro pela chave e reorganizar o vetor.
  • Listar todos: exibir todos os registros na ordem atual da lista.
  • Salvar CSV: gravar os dados em arquivo CSV conforme a especificação.
  • Carregar CSV: ler o arquivo CSV ao iniciar e reconstruir a lista.
  • Sair: salvar quando necessário e encerrar o programa.

Roteiro Sugerido de Implementação

Uma boa forma de desenvolver é seguir esta ordem:

  1. Defina a struct do registro.
  2. Crie o vetor com #define MAX 100.
  3. Crie a variável quantidade.
  4. Implemente a inserção simples.
  5. Implemente a listagem.
  6. Implemente a busca pela chave.
  7. Implemente edição e exclusão.
  8. Ajuste a inserção ordenada, se o tema exigir.
  9. Implemente salvar em CSV.
  10. Implemente carregar do CSV.
  11. Teste todos os casos, incluindo lista vazia, lista cheia e chave duplicada.

Exemplo de Arquivo CSV - Tema A1

id;titulo;artista;duracao;genero
1;Bohemian Rhapsody;Queen;355;Rock
2;Blinding Lights;The Weeknd;200;Pop

Funcionalidades Extras Sugeridas

Extras só devem ser feitos depois que o básico estiver funcionando.

  • Estatísticas, como total de registros, duração média ou valor total em estoque.
  • Busca parcial por nome, título, artista ou produto.
  • Validação rigorosa de entradas.
  • Confirmação antes da exclusão de registros.
  • Ordenações e filtros adicionais.
  • Personalização do terminal.
  • Implementação com alocação dinâmica e encadeamento, conforme a página de orientações de extra.

Observações Importantes

  • Trate o caso de lista cheia.
  • Trate o caso de lista vazia.
  • Não permita chave duplicada.
  • Teste inserção no início, no meio e no fim da lista.
  • Teste busca, edição, exclusão, salvamento e carregamento antes da entrega.

Clone this wiki locally