Anda di halaman 1dari 3

Poder Executivo

Ministrio da Educao
Universidade Federal do Amazonas
Instituto de Computao
LAB!A"#!I $E P!%!AMA&' A(A)&A$A
*UA!" "!ABAL+ P!,"IC
%!AF-
B.E"I(
Relembrar os conceitos bsicos de estruturas de dados e ponteiros obtidos nas disciplinas de AED1 e
AED2 atravs da implementao de um Grafo No-Direcionado ue represente uma rede sem fio!
Neste "rafo# os vrtices tero as informa$es de um n% &dispositivo' da rede (int id; double
pos_x, double pos_y) e# caso a dist(ncia entre dois n%s se)a menor ue o raio de comunicao
&i!e!# os n%s conse"uem se comunicar'# *aver uma aresta entre os dois vrtices do "rafo &i!e!# eles
sero vi+in*os'!
*UE-"' /)ICA
, Grafo acima representa uma rede sem fio formada por 1- n%s com raio de comunicao de# por
e.emplo# /0m!
Grafos podem ser implementados &principalmente' de duas formas1
&1' usando uma matriz de ad0ac1ncia N.N# onde N a uantidade de vrtices2 ou
&2' usando uma lista de ad0ac1ncia# ue um vetor de taman*o N em ue cada item possui uma lista
de vi+in*os!
3omo no caso de uma rede sem fio# o "rafo ser relativamente esparso &o ue si"nifica ue no
*aver muitas arestas'# a mel*or representao atravs da lista de ad0ac1ncia! Esta dever ser a
representao usada neste trabalho!
Neste trabal*o# voc4 dever implementar um 2ra3o onde os n4s sero os dispositivos da rede sem
3io! 3ada n% ter informa$es de id (int), posio X e Y (double) e a sua lista de vi+in*os
&lista encadeada de inteiros'! 5ua rede &o "rafo' ser um vetor destes n%s!
As informa$es da rede &n6mero de n%s e raio de comunicao' e dos n%s sero todos passados por
um ar5uivo de entrada &ar"v718'! A primeira lin*a deste aruivo ter o se"uinte formato1
<nmero-de-ns>\t<rio-de-!omuni!o>\n
onde <nmero-de-ns> a uantidade de n%s na rede e <rio-de-!omuni!o> o raio de
comunicao entre os n%s! 3aso a dist(ncia f9sica entre dois n%s se)a menor ue este raio de
comunicao# eles podem se comunicar e# portanto# e.istir uma aresta entre eles!
Av. Gal. Rodrigo Otvio Jordo Ramos, 6200, Coroado, Campus Universitrio etor !orte. "ns#tuto de Computa$o.
C%&' 6(0))*000 +anaus,A+ -ele.ones' /(20 1102*2303
As lin*as se"uintes do aruivo de entrada# tero o se"uinte formato1
<"#>\t<posio-X>\t<posio-Y>\n
,nde <"#> o id do dispositivo m%vel &n6mero da lin*a' e <posio-X> e <posio-Y> a posio
fsica do n%! :ara cada lin*a# adicione o n% atual no "rafo! Depois de inserir todos os n%s# e.ecute uma
funo para popular &atuali+ar' a lista de vi+in*os de todos os n%s! Esta funo# para cada n% &n% ;i<'#
ir compar-lo com todos os n4s da rede &n% ;$<' e# caso a dist(ncia entre i e $ se)a menor ue o
raio de comunicao# adicione i = lista de vi+in*os de $! Ap%s ler todo o aruivo de entrada# para cada
n% do "rafo# liste os seus vi+in*os como no formato especificado a se"uir1
Exemplo de Entrada 6ar5uivo7entrada8txt9:
10 38.0
0 6.0 20.5
1 33.4 6.2
2 23.7 41.6
3 51.0 54.8
4 50.9 27.8
5 71.1 7.2
6 79.1 41.9
7 99.6 21.6
8 109.3 51.6
9 128.7 7.3
-a;da Esperada 68<2ra3o ar5uivo7entrada8txt9:
N 0: 2 1
N 1: 5 4 2 0
N 2: 4 3 1 0
N 3: 6 4 2
N 4: 6 5 3 2 1
N 5: 7 6 4 1
N 6: 8 7 5 4 3
N 7: 9 8 6 5
N 8: 7 6
N 9: 7
$ICA-
5u"esto de fun$es a serem implementadas1
bool list_%i&in'os_di!ionr(int %i&in'o, list_%i&in'os_t ((list);
>? Adiciona um inteiro &id de um vi+in*o' ao in9cio de uma lista encadeada
>? list_%i&in'os_t ser uma lista de inteiros# portanto no * necessidade de criar um tipo
;vi+in*o@t<!
%oid list_%i&in'os_imprimir(list_%i&in'os_t (list);
>? Amprime os n6meros &ids' da lista se vi+in*os
)r*o_t )r*o_!rir(int tm);
>? Aloca mem%ria para um vetor de n%s!
>? )r*o_t pode ser definido como1 typede* no_t( )r*o_t;
%oid )r*o_tuli&r_%i&in'os(int tm, double rio, )r*o_t )r*o)
>? :ara cada n% &n% ;i<' do vetor de n%s do "rafo# compar-lo com todos os outros n%s da rede &n%
;$<# sendo $ +, i' e# caso a dist(ncia entre i e $ se)a menor ue o raio de comunicao# adicione i =
lista de vi+in*os de $!
>? 3lculo de dist(ncias Euclidianas1
s-rt(po.()r*o/i01x - )r*o/$01x, 2) 3 po.()r*o/i01y - )r*o/$01y, 2))
Av. Gal. Rodrigo Otvio Jordo Ramos, 6200, Coroado, Campus Universitrio etor !orte. "ns#tuto de Computa$o.
C%&' 6(0))*000 +anaus,A+ -ele.ones' /(20 1102*2303
%oid )r*o_imprimir(int tm, )r*o_t )r*o);
>? :ara cada posio do vetor# e.ecuta a funo lista@vi+in*os@imprimir!
int min(int r)!, !'r ((r)%);
>? Abre o aruivo de entrada2
>? B4 a primeira lin*a usando o fscanf com o formato C4d\t4l*\nC para ler a uantidade de n%s e o
raio de comunicao!
>? 3ria o "rafo2
>? 3ria um contador i2
>? :ara cada lin*a do aruivo de entrada# l4 os dados de id# x e y diretamente para o )r*o/i0 e
faa com ue )r*o/i01list_%i&in'os , 56772 Ancremente i!
>? Atuali+a os vi+in*os2
>? Amprime!
Este trabal*o deve ser entre"ue no dia 2/D-ED2-1F! Entretanto# vou liberar a entre"a at a data m.ima
de 2GD-ED2-1F &se"unda' at meia-noite!
3oloue no assunto1 7B:AH-I:-F8!
Av. Gal. Rodrigo Otvio Jordo Ramos, 6200, Coroado, Campus Universitrio etor !orte. "ns#tuto de Computa$o.
C%&' 6(0))*000 +anaus,A+ -ele.ones' /(20 1102*2303

Anda mungkin juga menyukai