Prática 03
Transcrição
Prática 03
1/2 Dissciplina: Estrrutura de Daados Proof.: Marcos Portnoi P Prá ática 3 – Structs S 1. Um ponto é definiido por duass coordenaddas (X, Y) no n plano carrtesiano. Codifique um m programa em C qu e utilize a estrutura e Ponto, conteendo as cooordenadas. O program ma deve ain nda possuirr as seguinttes funções:: a. imprime_ccoord: impprime na tella as duas cooordenadas de um pontto; b. le_coord: lê do tecladdo os valorees das coorddenadas parra um pontoo; c. distancia: calcuula a distância enntre dois pontos, através da equaação ଶ ଶ ݀ ൌ ට൫ݔଶଶ െ ݔଵ ൯ െ ൫ݕଶ െ ݕଵ ൯ m deveráá ler valores para dois pontos, im mprimir suass coordenad das e calculaar a d. a função main distância entre e eles. Todas as variáveis v devvem ser loccais, e as fuunções deveem receber,, ou retornar, ass estruturas dos pontos através de ponteiros, somente. s marino nucllear, controola o acessoo de usuárioos a 2. Um sisstema de seegurança miilitar, usadoo num subm três subb-sistemas (armamento ( o, navegaçãão e comuniicações) atraavés da digiitação do loogin do usuáário e de suua senha. Cada C usuárioo tem um certo priviléggio de acesso a cada uum dos três subsistemaas; o priviléggio definiráá o que o usuuário poderrá fazer no ssub-sistemaa específico.. Você devee implemenntar, em linnguagem dee programaação C, allgumas funnções destee sistema dde seguran nça, atendenndo compleetamente ass especificaçções. Leia todas as esspecificaçõões do progrrama antess de começa ar a implem mentar! a. Especificaações geraiis: o conttrole é reppresentado através a de uma tabella conforme o exemplo (T Tabela 1), denominada d a Tabela de Controle dee Acessos. Nenhuma variável v gloobal deve ser ussada, tampoouco macross ou constanntes com #ddefine. A taabela será representadaa no programa aatravés de matrizes m de estruturas ccom os tipoos apropriaddos. Estas estruturas e seerão locais à funnção main, e as outrass funções deeverão receeber, ou retoornar, ponteeiros para estas estruturas, quando neccessário. Tabela 1: Cadastro de usuários, sen nhas e priviléégios (exempllo). Login lcalrissian n organa ackbar ... Senh ha 88aagh h 7ghav0 0 4sithlo o ... Priv vilégio Arma amento 1 3 8 ... Privilég gio Navegaç ção 0 2 8 ... P Privilégio Com municaçõe es 2 5 5 ... b. Função main: definiir nesta funnção as mattrizes de esttruturas quee armazenarrão a tabelaa de controle dee acessos, prevendo p o campo c loginn com tamaanho máxim mo de 12 e o campo sennha com tamannho máximoo de 6 (deciida quanto à quantidadde máxima de usuárioss). O conteúúdo das matrizzes deve esttar zerado. Esta funçção proveráá um menu para o usu uário, onde ele escolherá a operaçãoo que desejja fazer: ccadastrar usuários, u seenhas e privilégios; liistar usuários, senhas e privilégios; acessar sub-sistemaa armamennto; acessaar sub-sisteema o programaa. Cada op pção do meenu, navegação; acessar suub-sistema comunicações; sair do mandos ex xtras obviamentee, chamaráá a(s) funnção(ões) aapropriadas e executaará os com porventuraa necessários. 2/2 Dissciplina: Estrrutura de Daados Proof.: Marcos Portnoi P I. N Nas três opçções para acessar a sub-sistemas, o programaa deverá lerr do teclad do o lo ogin e senha (usando a(s) a função((ões) especiificadas) e vverificar see o usuário tem t prrivilégio dee acesso ao sub-sistem ma solicitado o. Para quee o acesso seja s liberado o, o prrivilégio do o usuário tem m de ser igu ual ou maio or ao priviléégio mínimo o requerido por su ub-sistema, de acordo com a Tabeela 2. Se o acesso for liberado, im mprimir na tela Se o usuário não tiiver privilégio suficiente, a mensagem m “acesso liberado”. l im mprimir na tela a menssagem “acessso negado””. Se a senhha do usuárrio for inválida, im mprimir “seenha inválid da ou usuáriio inexistente”. Taabela 2: Priviilégios de aceesso por sub-ssistema. Sub-S Sistema Armam mento Navegaação Comun nicações Privilégio 8 3 4 c. Função caadastra_usu uario: Estaa função criiará a tabela de controole de acesssos, com daados digitados por p um adm ministrador de d sistema. A função deve d solicitaar a digitaçãão do login, da senha e dos privilégio os de acesso o para cada usuário, con ntinuamentee, até que o administraador decida encerrar a entrada de dado os. Gravar estes dadoss nas estrutuuras já defin nidas dentro o da função main. A funçãão deve preever um cam mpo login de d tamanho limite 12, o campo sen nha com taman nho máximo o de 6, mass esta funçãão deve ser capaz de trrabalhar com tabelas com c qualquer núúmero de liinhas (e estee número nãão será digitado pelo usuário). d. Função lissta_usuarioos: imprime na tela o conteúdo da d tabela dee controle de d acessos (que ( foi criada em outra função fu do programa), p c com um caabeçalho aprropriado. A função deve d mpo login com c tamanh ho máximo o 12, camp po senha coom tamanho o máximo 6 e prever cam qualquer núúmero de liinhas. e. Função peedido_acessso: ler, do d teclado, o login e a senha ddo usuário. Esta fun nção determinarrá se a senha digitada coincide c com m a senha armazenada a a na Tabela de Controlee de Acessos. Caso posittivo, a funçção deve reetornar o valor v do prrivilégio de acesso qu ue o m para o su ub-sistema; este sub-ssistema em questão será passado para a fun nção usuário tem como parââmetro. Se a senha nãão for válid da ou o log gin não forr encontrado o na Tabelaa, a função devve retornar o valor -1. r dois valores, um m representaando o privilégio mínim mo de acessso a f. Função meensagem: recebe um sub-sisstema, e ou utro represen ntando o prrivilégio do o usuário. Compara os dois valo ores. Se o privilégio do usu uário for maaior ou iguaal ao mínim mo do sub-sistema, imp primir na tela a m “acesso lib berado”. Se o usuário não tiver privilégio p suuficiente, im mprimir na tela mensagem a mensageem “acesso negado”. Se o priviléégio do usu uário for iguual a -1, im mprimir “sen nha inválida ou u usuário in nexistente”.