Cada pessoa deve ser representada por uma struct dentro de um vetor.
A data de nascimento também deve ser uma struct.
O nome de cada pessoa deve ser informado pelo teclado.
A geração da data de nascimento deve ser feita aleatoriamente através da função abaixo
void CriaData(Data &D)
{
D.Mes = 1 + (rand() % 12);
D.Ano = 1950 + (rand() % 49);
D.Dia = 1 + (rand() % 30);
}
O programa deve, na tela de abertura, apresentar opções para:
Cada uma destas opções deve ser implementada em uma função separada.
Para realizar o exercício, utilize como base o programa apresentado abaixo.
#include <stdio.h> #include <stdlib.h> typedef struct { int dia, mes, ano; } Data; typedef struct { char nome[30]; float altura ; Data nascimento; } Pessoa; void criaData(Data &D) { D.mes = 1 + (rand() % 12); D.ano = 1950 + (rand() % 49); D.dia = 1 + (rand() % 30); } int main() { Pessoa povo[10]; Pessoa p; int opcao, qtdPessoas = 0 ; Data dia; ImprimeTelaDeOpcoes(); do { opcao = EscolheOpcao(); if (opcao == 1) { LePessoaDeTeclado(p); AdicionaPessoa(povo, p, qtdPessoas); } if (opcao == 2) { ImprimeTodasAsPessoas(povo, qtdPessoas); } if (opcao == 3) { LeDataDeTeclado(dia); ImprimeMaisVelhos(povo, qtdPessoas, dia); } } while (opcao != 4); } |
Índice | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
Dados | 10 | 1 | VAZIO | 9 | VAZIO | 11 | 34 | VAZIO | VAZIO | VAZIO | VAZIO |
Vetor Auxiliar(próximo) | 5 | 6 | -1 | 0 | -1 | 1 | -2 | -1 | -1 | -1 | -1 |
Inserção: este método deve inserir um dado (int) na lista, após o último dado inserido. Este método deve retornar 1 quando conseguir inserir e 0 quando não houver mais espaço na lista. Internamente, a inserção deve ser feita no primeiro espaço livre do vetor de dados;
Remoção: Remover um elemento da lista dado seu valor. Este método deve retornar 1 quando conseguir remover e 0 quando o dado não existir na lista;
Impressão: Imprime os dados na lista na ordem que foram inseridos.
void imprimeLista(
ListaEncadeadaComVetor L)
{
int pos = L.inicio;
printf("Lista:\n");
printf(
"Posicao Inicial: %d\n", pos);
for(int i=0; i< TAM; i++)
{
printf(
"%d (pos:%d)",
L.
Dados[pos], pos);
pos =L.
Aux[pos];
if (pos == -2)
break;
elseprintf(
"
, ");
}
printf(
"\n")
;
}
#include <stdio.h>
const int TAM = 10;
typedef struct ListaEncadeadaComVetor{
int inicio;
int Dados[TAM];
int Aux[TAM];
};
int achaPosUltimo(ListaEncadeadaComVetor L);FIM.// Este método faz a busca do último a partir dos
// dados da lista e não a partir do vetor auxiliar
int achaPosLivre(ListaEncadeadaComVetor L);// Este método faz a busca de um espaço lvre
// a partir do vetor auxiliar
int insereDado(ListaEncadeadaComVetor, int D);
int removeDado(ListaEncadeadaComVetor, int D);
void imprimeLista(ListaEncadeadaComVetor);