Tarea2
View more presentations from melizondo_amaya.
#!/usr/bin/awk -f
BEGIN {
nodos=0;
coordx=201.348998;
coordy=63.024305;
nodoi=17;
nodoj=42;
radio=100;
minD=1000000;
maxD=0;
minimoD="";
maximoD="";
for(k=0; k<3 ;k++){
suma[k]=0;
min[k]=1000000;
max[k]=0;
minimo[k]="";
maximo[k]=""
}
cIN=0;
for(k=0; k<60; k++){
grado[k]=0;
}
adyacentes=0;
}
{
if(NR==1){
nodos=$0
}
if(NR>1 && NR<=(nodos+1)){
#Array de nodos cuya distancia al pundo tado es menor al
#radio de cobertura
D=sqrt(((coordx-$2)^2+(coordy-$3)^2))
if(D<=radio){
nodosIN[cIN]=$1
cIN++
}
#Suma de actividades nodales y obtencion de minimos y maximos
for(k=0; k<3; k++){
suma[k]=$(k+4)
if (min[k]>=$(k+4)){
min[k]=$(k+4)
minimo[k]=$1
}
else if (max[k]<=$(k+4)){
max[k]=$(k+4)
maximo[k]=$1
}
}
}
for(k=0; k<3; k++){
promedio[k]=suma[k]/nodos;
}
#busca adyacencias
if (NR==(nodos+2))
adyacencias=$0
if (NR>(nodos+2) && NR<(nodos+2+adyacencias)){
grado[$1]++
grado[$2]++
if(($1==nodoi && $2==nodoj) || ($1==nodoj && $2==nodoi))
adyacentes=1;
}
}
END{
print "\n Cantidad de nodos= " nodos "\n"
print " Nodos dentro de un radio de cobertura r= " radio
print " para el punto (" coordx "," coordy ") :"
for (k=0;k<cIN;k++){
print nodosIN[k]
}
print "\n Minimos y maximos para actividades nodales: \n"
for (k=0;k<3;k++){
print "\n Actividad " k+1 " : \n El promedio es: " promedio[k] "
print " El minimo es el nodo " minimo[k] " con " min[k]
print " El maximo es el nodo " maximo[k] " con " max[k]
}
print "\n En total hay " adyacencias " adyacencias"
print " El grado de cada nodo es el siguiente: \n"
for(k=0; k<nodos;k++){
print "Nodo " k+1 ": grado " grado[k]
}
if(adyacentes==0)
print "Los nodos proporcionados " nodoi " y " nodoj " NO son adyacentes"
else
print "Los nodos proporcionados " nodoi " y " nodoj " SI son adyacentes"
}
No hay comentarios:
Publicar un comentario