You are on page 1of 34

Dezembro

2010

Trabalho Prtico 2 Algoritmia e Programao Urgncia Hospitalar


Docente: Piedade Barros Lopez Docente: Carvalho Piedade Barros por: Trabalho Realizado Lopez Carvalho Leonel Medas 1060320 Trabalho realizado por: Miguel Silva 1060318 Fernando Oliveira 1090386 Pedro Matos 1050212 Joo Pereira 1090404 1DL

Relatrio Trabalho Prtico 2

Descrio do Trabalho e Opes Tomadas

No nosso trabalho temos 6 opes. A primeira permite adicionar um novo utente fila de espera, tendo esse cliente um numero, uma prioridade e uma posio, isto indicado pelo utilizador. Esta opo o que faz simplesmente ordenar os nmeros de utente pelas prioridade (1,2,3). Na opo um, para alm da funo imprimir, que aparece sempre na interface de interaco com o utilizador, temos a funo inserir_utente, que faz como j explicado em cima, a insero de um utente na fila de espera passando por uma srie validaes como, por exemplo, o nmero estar entre 1 e 99. Dentro desta funo temos outra que a funo libertar_espaco, que o que faz , por exemplo, quando queremos meter um utente com prioridade 1 e j estiver na fila um com prioridade 2, ela desloca o utente com prioridade 2 para a direita e coloca l o utente com prioridade 1. A segunda opo permite retirar um cliente da fila de espera. Na opo 2 temos as funes search, menu_retirar e retirar_cliente. A primeira procura na fila de espera o cliente, a segunda apresenta as perguntas ao utilizador e segundo o retorno que vem da primeira diz se o numero existe ou no na fila de espera. Se existir a terceira funo faz
2

Relatrio Trabalho Prtico 2

isso mesmo retira esse utente e desloca os outros para a esquerda. Essa funo tambm actualiza os contadores do nmero de utentes com prioridade 1, 2 ou 3. Na terceira opo temos a funo menu_alterar_p que executa tambm a libertar_espaco e a retirar cliente. Esta funo permite alterar a prioridade de um qualquer utente. A quarta opo mostra apenas todos os utentes que tm uma certa prioridade. Na quinta temos um Menu Ajuda que explica sucintamente o que cada opo executa e tem os autores do programa. Finalmente, a sexta opo serve para sair do programa. Neste ponto vamos explicar melhor o contedo de cada funo. Comecemos pela funo libertar_espao. Esta funo, inicialmente, v se a prioridade a inserir menor que a prioridade do ltimo utente da fila, se sim imprime a mensagem "Sem espaco neste hospital, se no faz um switch para as trs prioridades. Segundo isto, ela relaciona a posio com o numero de utentes com uma dada prioridade para conseguir aloc-los numa posio correcta. Tambm v que se a fila de espera estiver cheia manda aparecer a mensagem "Utente mandado para outro hospital. De seguida faz um ciclo for para actualizar os lugares, quando se retira um, ou seja, a frente desse desloca todos um lugar para a

Relatrio Trabalho Prtico 2

esquerda. Por ltimo, actualiza os contadores do nmero de utentes com determinada prioridade. A funo retirar_cliente serve para retirar o cliente. Procura o numero q o utente introduziu e, depois, actualiza os contadores de numero de utentes com uma dada prioridade. De seguida mete o valor 0 no lugar do utente retirado. Assim, temos estas duas ltimas funes como as mais importantes. As outras, so funes de maior interaco com o utilizador utilizando ciclos simples, tal como a funo imprimir que responsvel pela apresentao da fila de espera e de prioridade e como a funo mostrar_prior que apenas faz um ciclo for em que compara a prioridade inserida pelo utilizador com a da fila e mostra as iguais.

Relatrio Trabalho Prtico 2

Cdigo C
#include<stdio.h> #include<stdlib.h>

int mostrar_prior(); void menu_retirar(void); int search (int n_utente); int retirar_cliente(int n_utente); void libertar_espaco (int prioridade, int posicao, int n_utente); void preencher_utente_prioridade (char caracter); int inserir_utente (); void menu_alterar_p(void); void imprimir(void);

int fila_espera [20]; int fila_prior[20]; int n_utente_p_1 = 0; int n_utente_p_2 = 0; int n_utente_p_3 = 0; int sair;

Relatrio Trabalho Prtico 2

main() { printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n ----------------------------------------------------------"); | | | | | +++++++++++++++ ++++++++++++++ +++++++++++++++++++++++ + URGENCIA HOSPITALAR + +++++++++++++++++++++++ |"); |"); |"); |"); |"); |"); |"); |"); +++++++++++++ |");

| 1- INSERIR UTENTE 2- RETIRAR UTENTE | +++++++++ | | +++++++++++ +++++++++++++

|3- ALTERAR PRIORIDADE 4-MOSTRAR FILA |"); | ++++++++++++ | | | | | | | ++++++++++++ 5- AJUDA ++++++++++++ +++++++++ 6- SAIR +++++++++ POR PRIORIDADE ++++++++++ |"); |"); |"); |"); |"); |"); |"); |");

----------------------------------------------------------");

imprimir();

do{ printf ("\n\n\nEscolha uma das opcoes:\n"); scanf("%d",&opcao); if ( opcao!=1 && opcao!=2 && opcao!=3 && opcao!=4 && opcao!=5 && opcao!=6)
6

Relatrio Trabalho Prtico 2

{ printf("\nEscolha uma opcao entre 1 e 6\n\n"); } }while( opcao!=1 && opcao!=2 && opcao!=3 && opcao!=4 && opcao!=5 && opcao!=6);

switch(opcao) { case 1:{ system("MODE con cols=80 lines=30"); system("cls"); imprimir(); inserir_utente(); imprimir(); system("pause"); system("cls"); main(); break; } case 2:{ system("MODE con cols=80 lines=30"); system("cls"); imprimir(); search(n_utente); menu_retirar(); retirar_cliente(n_utente); imprimir(); system("pause"); system("cls"); main();
7

Relatrio Trabalho Prtico 2

break; } case 3:{ system("MODE con cols=80 lines=30"); system("cls"); imprimir(); menu_alterar_p(); imprimir(); system("pause"); system("cls"); main(); break; } case 4:{ system("MODE con cols=80 lines=30"); system("cls"); imprimir(); mostrar_prior(); system("pause"); system("cls"); main(); break; }

Relatrio Trabalho Prtico 2

case 5:{ system("MODE con cols=80 lines=30"); system("cls"); printf("\n\n \n\n\n"); printf(" printf(" Fernando Oliveira e Joao Pereira \n\n"); Turma 1DI \n\n\n"); Este programa foi desenvolvidado por:

printf("A opcao 1 permite inserir um utente na fila de espera da urgencia\n\n"); printf("A opcao 2 permite retirar um qualquer utente que esteja na fila de espera\n\n"); printf("A opcao 3 permite alterar a prioridade de um qualquer utente\n\n"); printf("A opcao 4 permite visualizar a fila de espera de uma so prioridade\n\n"); printf("A opcao 5 abre o menu AJUDA\n\n"); printf("A opcao 6 sai do programa\n\n"); system("pause"); system("cls"); main(); break; }

Relatrio Trabalho Prtico 2

case 6:{ system("MODE con cols=80 lines=15"); do{ printf("\nTem a certeza que deseja sair? (Prima 1 para sair e 2 para voltar ao menu )\n"); scanf("%d",&sair); printf("\n\n"); if (sair==1) { printf("O programa vai terminar. Volte sempre!\n\n"); system("pause"); exit(0); break; } else { system("pause"); main(); break; } system("cls"); } while (sair!=1 || sair!=2);

} } system("pause");

preencher_utente_prioridade(0); return;
10

Relatrio Trabalho Prtico 2

} int inserir_utente () { int n_utente,prior,pos ; do{ printf("\nIntroduza o seu numero de cliente:\n"); scanf("%u", &n_utente); if ( n_utente<1 || n_utente>99 ) printf("Numero invalido insira um numero entre 1 e 99 !\n"); if ( search (n_utente) ) printf("\nEsse numero ja existe. Insira outro numero!\n"); }while ( n_utente<1 || n_utente>99 || search (n_utente)) ; do{ printf("\nIntroduza a prioridade de doena ( 1, 2, 3):\n"); scanf("%u", &prior); if ( prior!= 1 && prior!= 2 && prior!=3) printf("Numero invalido ! Digite um numero entre 1 e 3\n"); }while( prior != 1 && prior != 2 && prior != 3); do{ printf("Introduza a posiao :\n"); scanf("%u", &pos); if (pos > 20 || pos <1) printf("Posicao nao aceite. Tem que estar entre 1 e 20\n"); }while ( pos > 20 || pos <1);

libertar_espaco(prior, pos, n_utente); return; }

11

Relatrio Trabalho Prtico 2

int search (int n_utente) { int i; for(i=0;i<=19;i++) { if (fila_espera[i]==n_utente) return 1; } return 0 ; } void preencher_utente_prioridade (char caracter) { int i; for (i=0; i<=19; i++) fila_espera[i]=caracter; fila_prior[i]=caracter; return; }

void libertar_espaco (int prioridade, int posicao, int n_utente) { int n_utente_prior_sup, i; if(fila_prior[19]<prioridade && fila_prior[19]!=0) { printf("Sem espaco neste hospital\n\n"); } else { switch (prioridade) { case 1:{ if (posicao> n_utente_p_1 +1)
12

Relatrio Trabalho Prtico 2

{ printf("Posicao invalida para essa prioridade! Utente realocado.\n\n"); posicao = n_utente_p_1 + 1; } n_utente_prior_sup=0; break; } case 2: {n_utente_prior_sup=n_utente_p_1; if (posicao> n_utente_p_2+1) { printf("Posicao invalida para essa prioridade! Utente realocado.\n\n"); posicao = n_utente_p_2 + 1; } break;} case 3: {n_utente_prior_sup=n_utente_p_1 + n_utente_p_2; if (posicao> n_utente_p_3 +1) { printf("Posicao invalida para essa prioridade! Utente realocado.\n\n"); posicao = n_utente_p_3 + 1; } break;} } n_utente_prior_sup = n_utente_prior_sup + posicao - 1;

if(fila_espera[19] != 0) printf("Utente mandado para outro hospital\n\n");

13

Relatrio Trabalho Prtico 2

for (i=18; i>=n_utente_prior_sup; i--) { fila_espera[i+1]=fila_espera[i]; fila_prior[i+1]=fila_prior[i]; } fila_espera[n_utente_prior_sup] = n_utente; fila_prior[n_utente_prior_sup] = prioridade;

switch (prioridade) { case 1:{ n_utente_p_1 ++; break; } case 2: { n_utente_p_2 ++; break;} case 3: { n_utente_p_3 ++; break;} } } return; }

14

Relatrio Trabalho Prtico 2

void imprimir(void) { int i; printf("\n\n\n "); printf("| Fila de Espera |"); for(i=0;i<=19;i++) { printf("%2.2u|", fila_espera[i]); } printf("\n ----------------------------------------------------------------------------"); printf("\n "); printf("| Fila prioridade|"); for(i=0;i<=19;i++) { printf("%2.2u|", fila_prior[i]); } printf("\n ---------------------------------------------------------------------------\n"); printf(" | Posicao |");

for(i=1;i<=20;i++) { printf("%2.2u|", i ); } printf("\n ---------------------------------------------------------------------------\n\n"); }

15

Relatrio Trabalho Prtico 2

int retirar_cliente(int n_utente) { int i, ii;

for(i=19;fila_espera[i] != n_utente;i--) { if ( i== -1) return 1; }

switch(fila_prior[i]) { case 1: { n_utente_p_1--; break; } case 2: { n_utente_p_2--; break; } case 3: { n_utente_p_3--; break; } }

16

Relatrio Trabalho Prtico 2

for (ii=i; ii<=19; ii++) { fila_espera[ii]=fila_espera[ii+1]; fila_prior[ii]=fila_prior[ii+1]; }

fila_espera[19] = 0; fila_prior[19] = 0;

return 0; } void menu_retirar(void) { int n_utente, prior, erro = 0; do { do { printf("\nIntroduza o seu numero de utente:\n"); scanf("%u", &n_utente); if ( n_utente<1 || n_utente>99 ) printf("Numero invalido insira um numero entre 1 e 99 !\n"); }while ( n_utente<1 || n_utente>99 );

17

Relatrio Trabalho Prtico 2

if(retirar_cliente(n_utente)) { erro = 1; printf("Esse numero de utente no existe\n\n"); system("pause"); system("cls"); main(); } }while(erro); return;

} void menu_alterar_p(void) { int n_utente,prior,pos ; do{ printf("\nIntroduza o seu numero de cliente:\n"); scanf("%u", &n_utente); if ( n_utente<1 || n_utente>99 ) printf("Numero invalido insira um numero entre 1 e 99 !\n"); if ( !search (n_utente) ) printf("\nEsse numero no existe. Insira outro numero!\n\n"); }while ( n_utente<1 || n_utente>99 || !search (n_utente)) ; do{ printf("\nIntroduza a nova prioridade de doena ( 1, 2, 3):\n"); scanf("%u", &prior); if ( prior!= 1 && prior!= 2 && prior!=3) printf("Numero invalido ! Digite um numero entre 1 e 3\n"); }while( prior != 1 && prior != 2 && prior != 3);

18

Relatrio Trabalho Prtico 2

do{ printf("Introduza a posiao :"); scanf("%u", &pos); if (pos > 20 || pos <1) printf("Posicao nao aceite. Tem que estar entre 1 e 20\n"); }while ( pos > 20 || pos <1);

retirar_cliente(n_utente); libertar_espaco (prior, pos, n_utente); return; }

int mostrar_prior() { int p, i ; do{ printf("\nIntroduza a prioridade \n\n"); scanf("%u",&p); if ( p!= 1 && p!= 2 && p!=3) printf(" Incorrecto ! Insira uma prioridade de 1 a 3!\n\n"); }while( p!= 1 && p!= 2 && p!=3);

for(i=0;i<=19;i++) { if ( fila_prior[i]== p) printf(" %2.2u | \n", fila_espera[i]); }

return; }
19

Relatrio Trabalho Prtico 2

Algoritmo
Funo libertar_espaco. Esta funo avalia se a fila esta cheia, avalia tambm a ordem das prioridades, ou seja, v se o cliente a entrar tem maior prioridade que os que l esto, actualiza contadores de utentes e desloca os existentes caso o que entra passe nas condies para entrar. Se (fila_prior[19]<prioridade && fila_prior[19]!=0) Escrever ("Sem espaco neste hospital) Seno Switch(prioridade) Case 1: Se (posicao> n_utente_p_1 +1) Escrever ("Posicao invalida para essa prioridade! Utente realocado.); n_utente_prior_sup=0; break; Case 2: n_utente_prior_sup=n_utente_p_1; Se (posicao> n_utente_p_2+1) Escrever ("Posicao invalida para essa prioridade! Utente realocado.); posicao = n_utente_p_2 + 1; break; Case 3: n_utente_prior_sup=n_utente_p_1 + n_utente_p_2; Se (posicao> n_utente_p_3 +1) Escrever ("Posicao invalida para essa prioridade! Utente realocado.); posicao = n_utente_p_3 + 1; break; n_utente_prior_sup = n_utente_prior_sup + posicao - 1; Se(fila_espera[19] != 0) Escrever("Utente mandado para outro hospital); i 0

Repetir at i>=n_utente_prior_sup fila_espera[i+1] fila_espera[i]; fila_prior[i+1] fila_prior[i];

20

Relatrio Trabalho Prtico 2

i=i-1; fila_espera[n_utente_prior_sup] prioridade; switch(prioridade) Case 1: n_utente_p_1 ++; break; Case 2: n_utente_p_2 ++; break; Cae 3: n_utente_p_3 ++; break; return; n_utente; fila_prior[n_utente_prior_sup]

Funo imprimir. Esta funo imprime as filas de espera e prioridades.

Escrever ("| Fila de Espera |"); i 0; Repetir at i<=19 Escrever ("%2.2u|", fila_espera[i]); i=i+1 Escrever("---------------------------------------------------------------------------"); Escrever ("| Fila de Prioridade |"); I 0; Repetir at i<=19 Escrever ("%2.2u|", fila_prior[i]); i=i+1 Escrever("---------------------------------------------------------------------------"); Escrever ("| Posio |"); I 1;
21

Relatrio Trabalho Prtico 2

Repetir at i<=20 Escrever ("%2.2u|", i ); i=i+1 Escrever("---------------------------------------------------------------------------"); Return;

Funo Retirar_Cliente. Esta funo procura o cliente inserido, tira-o da fila, actualiza os contadores e depois actualiza as filas, deslocando os valores todos e preenche os em branco com zeros.

i 19 Repetir ate fila_espera[i] != n_utente Se ( i=-1) return 1; i--;

switch( fila_prior[i] ) { case 1: n_utente_p_1--; break; case 2: n_utente_p_2--; break; case 3: n_utente_p_3--; break; }
22

Relatrio Trabalho Prtico 2

ii=i Repetir At ii<=19 fila_espera[ii]=fila_espera[ii+1]; fila_prior[ii]=fila_prior[ii+1]; ii++;

fila_espera[19] = 0; fila_prior[19] = 0; return 0;

Funo menu_retirar. Esta funo pede os dados aos utentes para o retirar da fila. Confere a existncia do nmero inserido.

Repetir Enquanto Erro Fazer enquanto ( n_utente<1 OR n_utente>99 ) Escrever(Introduza o seu numero de utente:); Ler(n_utente) Se ( n_utente<1 OR n_utente>99 ) Escrever("Numero invalido insira um numero entre 1 e 99 !"); Se (retirar_cliente(n_utente)) erro = 1; Escrever("Esse numero de utente no existe"); system("pause"); system("cls"); main(); Return;

23

Relatrio Trabalho Prtico 2

Funo menu_alterar_p.Esta funo pede os dados ao utente. Executa as funes retirar_cliente e libertar_espaco.

Fazer Enquanto ( n_utente<1 OR n_utente>99 OR search (n_utente)); Escrever(Introduza o seu numero de utente:); Ler(n_utente) Se ( n_utente<1 OR n_utente>99 ) Escrever(Numero invalido insira um numero entre 1 e 99 !); Se ( search (n_utente) ) Escrever(Esse numero no existe. Insira outro numero!);

Repetir Enquanto( prior 1 AND prior 2 AND prior 3); Escrever(Introduza a nova prioridade de doena ( 1, 2, 3):); Ler(prior); Se ( prior 1 AND prior 2 AND prior3) Escrever(Numero invalido ! Digite um numero entre 1 e 3); repetir Enquanto ( pos > 20 OR pos <1) Escrever(Introduza a posiao :"); Ler(pos) Se (pos > 20 OR pos <1) Escrever(Posicao nao aceite. Tem que estar entre 1 e 20); retirar_cliente(n_utente); libertar_espaco (prior, pos, n_utente); return;

24

Relatrio Trabalho Prtico 2

Funo mostrar_prior. Esta funo imprime a fila com os utentes de uma dada prioridade escolhida pelo utilizador.

Repetir Enquanto ( p 1 AND p 2 AND p3) Escrever( Introduza a prioridade); Ler(p) Se ( p 1 AND p 2 AND p3) Escrever(" Incorrecto ! Insira uma prioridade de 1 a 3!); I 0 Repetir at i<=19 Se ( fila_prior[i]= p) Escrever(%2.2u |, fila_espera[i]); I++; Return;

Funo preencher_utente_prioridade. Preenche a fila.

I 0 Repetir at i<=19 fila_espera[i]=caracter; fila_prior[i]=caracter; i++; return;

25

Relatrio Trabalho Prtico 2

Funo search. Esta funo procura um numero de utente igual se encontrar retorna 1 seno retorna 0.

I 0 Repetir at i<=19 Se (fila_espera[i]=n_utente) Return 1; Return 0;

Funo inserir_utente. Esta funo pede os dados ao utilizador para a insero do utente. Executa a funo libertar_espaco.

Fazer Enquanto ( n_utente<1 OR n_utente>99 OR search (n_utente)); Escrever(Introduza o seu numero de utente:); Ler(n_utente) Se ( n_utente<1 OR n_utente>99 ) Escrever(Numero invalido insira um numero entre 1 e 99 !); Se ( search (n_utente) ) Escrever(Esse numero no existe. Insira outro numero!);

Repetir Enquanto( prior 1 AND prior 2 AND prior 3); Escrever(Introduza a prioridade de doena ( 1, 2, 3):); Ler(prior); Se ( prior 1 AND prior 2 AND prior3) Escrever(Numero invalido ! Digite um numero entre 1 e 3); Repetir Enquanto ( pos > 20 OR pos <1) Escrever(Introduza a posiao :"); Ler(pos) Se (pos > 20 OR pos <1) Escrever(Posicao nao aceite. Tem que estar entre 1 e 20);
26

Relatrio Trabalho Prtico 2

libertar_espaco(prior, pos, n_utente); return;

Algortimo UrgHosp. Este algoritmo tem 6 opes em que na primeira insere-se um utente numa fila de espera segundo um prioridade. Na opo 2 retira-se clientes, na opo 3 altera-se prioridade, na opo 4 mostra a fila de utentes como uma dada prioridade, na opo 5 tem o menu ajuda e na opo 6 fecha o programa.

Escrever(" Escrever(" Escrever(" Escrever(" Escrever(" Escrever(" Escrever(" Escrever(" Escrever(" Escrever(" Escrever(" Escrever(" Escrever(" Escrever(" Escrever(" Escrever(" Escrever(" Escrever(" Escrever(" Escrever("

----------------------------------------------------------"); | | | | | +++++++++++++++ ++++++++++++++ +++++++++++++++++++++++ + URGENCIA HOSPITALAR + +++++++++++++++++++++++ |"); |"); |"); |"); |"); |"); |"); |"); +++++++++++++ |");

| 1- INSERIR UTENTE 2- RETIRAR UTENTE | +++++++++ | | +++++++++++ +++++++++++++

|3- ALTERAR PRIORIDADE 4-MOSTRAR FILA |"); | ++++++++++++ | | | | | | | ++++++++++++ 5- AJUDA ++++++++++++ +++++++++ 6- SAIR +++++++++ POR PRIORIDADE ++++++++++ |"); |"); |"); |"); |"); |"); |"); |");

----------------------------------------------------------");
27

Relatrio Trabalho Prtico 2

imprimir(); Repetir Enquanto ( opcao1 AND opcao2 AND opcao3 AND opcao4 AND opcao5 AND opcao6) Escrever(Escolha uma das opcoes:); Ler(opcao) Se ( opcao1 AND opcao2 AND opcao3 AND opcao4 AND opcao5 AND opcao6) Escrever(Escolha uma opcao entre 1 e 6);

Switch(opcao) Case 1: system("cls"); imprimir(); inserir_utente(); imprimir(); system("pause"); system("cls"); main(); break; Case 2: system("cls"); imprimir(); search(n_utente); menu_retirar(); retirar_cliente(n_utente); imprimir(); system("pause"); system("cls"); main(); break; Case 3: system("cls");
28

Relatrio Trabalho Prtico 2

imprimir(); menu_alterar_p(); imprimir(); system("pause"); system("cls"); main(); break; Case 4: system("cls"); imprimir(); mostrar_prior(); system("pause"); system("cls"); main(); break; Case 5: system("cls"); Escrever( Este programa foi desenvolvidado por:");

Escrever(Fernando Oliveira e Joao Pereira "); Escrever(Turma 1DL ); Escrever(A opcao 1 permite inserir um utente na fila de espera da urgencia "); Escrever(A opcao 2 permite retirar um qualquer utente que esteja na fila de espera); Escrever(A opcao 3 permite alterar a prioridade de um qualquer utente); Escrever(A opcao 4 permite visualizar a fila de espera de uma so prioridade"); Escrever(A opcao 5 abre o menu AJUDA"); Escrever(A opcao 6 sai do programa"); system("pause"); system("cls");
29

Relatrio Trabalho Prtico 2

main(); break; Case 6: Repetir Enquanto (sair1 OR sair2) Escrever(Tem a certeza que deseja sair? (Prima 1 para sair e 2 para voltar ao menu )); Ler(sair); Se (sair=1) Escrever(O programa vai terminar. Volte sempre!); system("pause"); exit(0); break; Senao system("pause"); main(); break; system("cls")

30

Relatrio Trabalho Prtico 2

Testes Efectuados

Com esta fila de espera se escolhssemos a opo 1 e inserssemos um cliente 88 com prioridade 2 e na posio 2, ficaria:

31

Relatrio Trabalho Prtico 2

O resultado o esperado, pois o utente para a sua prioridade, entrou para a posio 2. Agora se quisssemos retirar o cliente 14, escolheramos a opo 2 ficando a fila da seguinte maneira:

Visto isto, o resultado o esperado. Se agora quisssemos alterar a prioridade do utente 33 para 1 para a posio 2 faramos:

32

Relatrio Trabalho Prtico 2

O resultado foi o esperado. Agora, se accionssemos a opo 4, para visualizarmos a fila com a prioridade 2, apareceria:

Na opo 5 aparece, temos o menu ajuda:

Na opo 6, executa o fecho do programa.

33

Relatrio Trabalho Prtico 2

Discusso das Limitaes

Analismos que o nosso programa, praticamente no tem limitaes. Tudo que pedido funciona e como mostrado nos testes acima est a funcionar claramente. Tivemos o cuidado de analisar todas as situaes referentes a prioridades menores s que estavam l quando estivesse fila cheia, e por isso, achamos que as limitaes so inexistentes. Achamos que o nosso trabalho est bem organizado e estruturado, sendo assim, de fcil anlise e compreenso. A nossa principal dificuldade foi na actualizao de lugares no caso de retirar lugares e inserir utentes, na medida em que exigia um raciocnio mais trabalhoso j que tnhamos que pensar nas diversas situaes que podiam acontecer. Assim, conclumos que todos os objectivos foram atingidos, pois conseguimos ter sucesso na concluso do trabalho, como demonstrado atreves dos testes efectuados e copiados acima.

34