Excluindo um Contato
Parte da seção Lógica e Fluxo do Journey de Lua da Coddy. Lição 46 de 54.
Desafio
FácilImplemente a funcionalidade de exclusão para sua aplicação de lista de contatos. Quando o usuário inserir delete, o programa deverá solicitar um nome, encontrar esse contato na lista e removê-lo.
Dando continuidade ao desafio anterior, adicione a funcionalidade para lidar com o comando delete. Percorra a tabela contacts para encontrar o contato com o nome correspondente e, em seguida, use table.remove() para excluí-lo da lista. Forneça um feedback ao usuário informando se a exclusão foi bem-sucedida.
Requisitos:
- Mantenha todo o código do desafio anterior (configuração, exibição do menu, loop principal e funcionalidades de adicionar, listar e pesquisar)
- Quando o usuário inserir
delete, imprima:Enter name to delete: - Leia o nome usando
io.read() - Use
ipairs()para iterar pela tabelacontacts - Para cada contato, verifique se o campo
namecorresponde exatamente ao nome a ser excluído - Se uma correspondência for encontrada, use
table.remove()com o índice do contato para excluí-lo - Após uma exclusão bem-sucedida, imprima:
Contact deleted successfully! - Se nenhuma correspondência for encontrada após verificar todos os contatos, imprima:
Contact not found. - Quando o comando
listfor usado e não houver contatos, imprima:No contacts available. - Os comandos
add,list,searchequitainda devem funcionar como antes
Observação: A mensagem para lista vazia neste desafio é No contacts available.. Certifique-se de usar esta string exata, mesmo que uma lição anterior tenha usado uma redação diferente.
Interação de exemplo:
Welcome to Contact List Manager!
Available Commands:
add - Add a new contact
list - Display all contacts
search - Search for a contact
delete - Delete a contact
quit - Exit the program
Enter command:
add
Enter name:
Alice
Enter phone number:
555-1234
Contact added successfully!
Enter command:
add
Enter name:
Bob
Enter phone number:
555-5678
Contact added successfully!
Enter command:
list
Contact List:
1. Alice - 555-1234
2. Bob - 555-5678
Enter command:
delete
Enter name to delete:
Alice
Contact deleted successfully!
Enter command:
list
Contact List:
1. Bob - 555-5678
Enter command:
delete
Enter name to delete:
Charlie
Contact not found.
Enter command:
quit
Goodbye!Experimente você mesmo
-- Contact List Manager
local contacts = {}
-- Display welcome message
print("Welcome to Contact List Manager!")
print()
-- Display menu
print("Available Commands:")
print("add - Add a new contact")
print("list - Display all contacts")
print("search - Search for a contact")
print("delete - Delete a contact")
print("quit - Exit the program")
print()
-- Main loop
while true do
print("Enter command:")
local command = io.read()
if command == "add" then
print("Enter name:")
local name = io.read()
print("Enter phone number:")
local phone = io.read()
table.insert(contacts, {name = name, phone = phone})
print("Contact added successfully!")
print()
elseif command == "list" then
if #contacts == 0 then
print("No contacts available.")
else
print("Contact List:")
for i, contact in ipairs(contacts) do
print(i .. ". " .. contact.name .. " - " .. contact.phone)
end
end
print()
elseif command == "search" then
print("Enter name to search:")
local searchName = io.read()
local found = false
for i, contact in ipairs(contacts) do
if contact.name == searchName then
print("Found: " .. contact.name .. " - " .. contact.phone)
found = true
break
end
end
if not found then
print("Contact not found.")
end
print()
elseif command == "quit" then
print("Goodbye!")
break
else
print("Command not yet implemented")
print()
end
endTodas as lições de Lógica e Fluxo
1Iteração avançada de tabelas
Iterando com pairs()Iterando com ipairs()pairs() vs. ipairs()Revisão - Ficha de personagem2Mais funções da biblioteca table
table.concat()Construção de tabelas e unpack()table.sort()Ordenação personalizada com funçõesRevisão - Placar de pontuações máximas5Projeto: Motor de Aventura Textual
Configuração do Projeto: A SalaConectando Salas8Projeto: Lista de Contatos
Configuração do ProjetoO Loop PrincipalPratique por conta própria: Compilador de Lua online