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”.