• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

nDray_Dz

Gestor de BI's

6 mensagens neste tópico

Boas tardes.

Ora portanto, eu preciso de ajuda num trabalho de C, para final do semestre.

Até aqui tudo normal, não fosse eu e o resto do meu grupo percebermos pouco ou nada da linguagem em questão. Normalmente eu  até nem viria pedir ajuda, mas a verdade é que o tempo não é propriamente muito e as frequências abundam. ;)

Passando ao problema em questão:

(enunciado)

• aceitar um pedido de emissão de novo BI;

• aceitar um pedido de renovação de um BI;

• executar um pedido – neste caso, deverá:

            1. escolher o pedido mais antigo;

            2. se for nova emissão: validar (numa lista de cidadãos com BI) que não existe ninguém

          registado com o mesmo nome e data de nascimento. Em caso afirmativo, deve emitir

          uma mensagem de erro adequada. Caso contrário, o sistema indicará novo número de

          BI e efectuará o registo do ”novo cidadão”na sua lista;

            3. se for uma renovação: o sistema irá verificar se, de facto, já existe BI e, em caso afirmativo,

          deve registar (mais) uma renovação de BI; caso não exista, deve assinalar o erro e

          pedir para efectuar nova emissão de BI;

• listar os pedidos pendentes ordenados do mais recente para o mais antigo;

• contar quantos pedidos estão pendentes e qual a data do mais antigo;

• permitir a alteração da fila de pedidos com um pedido urgente;

• . . .

  As listas (de pedidos e de cidadãos já registados) deverão ser implementadas usando estruturas

dinâmicas de dados adequadas e serão, na abertura de cada dia, recolhidas de ficheiros FIXOS e,

no final de cada dia, armazenadas nesses mesmos ficheiros.

  Deverá ser disponibilizado um menu interactivo para efectuar (pelo menos) as operações acima

descritas e não esquecer que o programa deve apresentar testes de correcção (validação) dos dados

com mensagens de erro adequadas.

  As listas deverão ser implementadas usando estruturas dinâmicas de dados adequadas.

O problema aqui é mesmo a falta de tempo e ninguém ter a menor ideia de por onde pegar para começar o programa. Como é obvio não estou a pedir que façam o trabalho por nós. Só queremos assim um empurrãozinho pelo que vos peço era se me podiam ajudar a definir uma estratégia ou "pseudo-código" para o programa de forma a que pelo menos nos possamos orientar.  :-[

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se eu tivesse de fazer esse trabalho começava por definir o tipo abstracto de dados (ADT) que precisava para guardar a informação. Depois adicionava-lhe a funcionalidade de escrever e ler a estrutura de memória para ficheiro.

Depois disso era sempre a andar.

Para este caso parece-me que um ADT de 1ª ordem é o ideal, ou seja um ADT que seja possível criar várias instâncias, já que vão precisar de um para os BI's já emitidos e outro para os pedidos pendentes de emissão e renovação de BI. E talvez outro para os pedidos urgentes, embora isto dependa da estratégia, já que podem estar todos misturados.

Para a implementação do ADT usava uma lista duplamente ligada, já que parece ser o ideal, porque da logo para todas as operações sem complicar muito.

Se não souberem como se fazem essas estruturas de dados há muita informação por ai, de qualquer forma deixo um link para uns acetatos que podem ajudar.

http://web.ist.utl.pt/fabio.ferreira/material/iaed/acetatos.pdf

Boa sorte.

Por TheDark: não percebi porque não colocaste o link normalmente

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para a fila acho que um vector ou adicionar um id (um int que ia sendo incrementado ao longo dos pedidos todos) já resolvia o problema da data (acho que com uma função existente na biblioteca time.h também dá mas não me recordo da função) e da ordem crescente de pedidos.

A fila ser alterada era mostrando uma lista dos pedidos e ter a possiblidade de alterar esse tal id.

Saber se existe já pessoal com esse nome era fazer um

case(se já existi-se) não deixava registar; else: deixava registar ||||  Para saber se já existia era fazer uma pesquisa no ficheiro caso usem ficheiros ou no programa caso sejam dados voláteis.

Para a renovaçao de BI's acho que quando fosses a inserir um BI novo podias acrescentar à mão a data do BI logo quando fosse a renovar era só alterar essa data.

Épá ... Eu não sei nem soube explicar muito bem mas pergunta que eu ajudo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pelas vossas respostas. Com elas já conseguimos ter algumas luzes sobre o que fazer, mas provavelmente vão surgir (bastantes) dúvidas pelo caminho.

Amanhã iremos começar a fazer algumas experiências e em caso de dúvidas iremos postar aqui na esperança de alguma ajuda.

Obrigado ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas.

Primeira dúvida: Já conseguimos criar diferentes estruturas. Uma para os bi's que já existem e outra para os pedidos. Agora os problemas...

Como fazer para distinguir entre pedidos de emissao e renovaçao de bi's?

E já agora, como fazer com que o programa copie os dados de uma estrutura para a outra?

Mais para a frente iremos ter outro problema, mas vou colocá-lo já aqui para ficar tratado. A nossa professora ainda não nos falou em como manipular ficheiros, pelo gostaríamos que nos pudessem indicar como fazer para carregar os dados para a memória ao abrir o programa e gravar as alterações ao fechá-lo...isto se for possível.

cumps :D

p.s.: Vimos os acetatos sobre as listas duplamente ligadas, mas sinceramente não conseguimos perceber muito bem  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora