void main(){ t10 = p + 0; STACK[ t10] = 10; t11 = p + 1; STACK[ t11] = 15; t12 = p + 0; t13 = STACK[ t12]; t14 = p + 1; t15 = STACK[ t14]; t16 = p + 1; STACK[ t16] = t13; t17 = p + 2; STACK[ t17] = t15; p = p + 3; suma(); p = p - 3; t18 = STACK[p]; t19 = p + 2; STACK[ t19] = t18; t20 = p + 0; t21 = STACK[ t20]; t22 = p + 1; t23 = STACK[ t22]; t24 = p + 1; STACK[ t24] = t21; t25 = p + 2; STACK[ t25] = t23; p = p + 3; resta(); p = p - 3; t26 = STACK[p]; t27 = p + 3; STACK[ t27] = t26; }
int main(void) { int val1,val2,op,r; printf("Ingrese 1 para suma, 2 para resta, 3 para multipliacion y 4 para division\n"); scanf(&op,"%d"); printf("Ingrese el dato 1\n"); scanf(&val1,"%d"); printf("Ingrese el segundo valor\n"); scanf(&val2,"%d"); switch (op) { case 1: r=suma(val1,val2); break; case 2: r=resta(val1,val2); break; case 3: r=multiplicacion(val1,val2); break; case 4: r=division(val1,val2); break; default r=0; break; } printf("El resultado es %d",r); return 0; }
void main() { //("Resta inicia\n"); leerMatriz1(); leerMatriz2(); resta(); exit(0); }
int main(void) { int op, a, b, r; printf("Escoja la operacion a realizar:\n\t1. Suma\n\t2. Resta\n\t3. Multiplicacion\n\t4. Division\n"); scanf("%d", &op); printf("Ingrese el numero:\t"); scanf("%d", &a); printf("Ingrese el numero:\t"); scanf("%d", &a); switch(op) { case 1: r=suma(a,b); printf("El resultado es:\t %d", r); case 2: r=resta(a,b); printf("El resultado es:\t %d", r); case 3: r=multiplicacion(a,b); printf("El resultado es:\t %d", r); case 4: r=division(a,b); printf("El resultado es:\t %d", r); default: printf("Error!"); } return 0; }
int main(void){ char op; int a,b,r; printf("Que operacion desea realizar?\n<a>-Suma\n<b>-Resta\n<c>-Multiplicacion\n<d>-Division\n"); scanf("%c",&op); printf("Ingrese el primer valor"); scanf("%d",&a); printf("Ingrese el segundo valor"); scanf("%d",&b); switch(op){ case 'a': r=suma(a,b); break; case 'b': r=resta(a,b); break; case 'c': r=multiplicacion(a,b); break; case 'd': r=division(a,b); break; } printf("\nEl resultado es: %d",r); return 0; }
main() { int op; float a,b; printf("Operacion a realizar:\n1) SUMA\n2) RESTA \n3) MULTIPLICACION\n4) DIVICION\n"); scanf("%d",&op); while(op<1||op>4){ printf("Valor no valido debe de ser del 1 - 4:\n"); scanf("%d",&op); } switch(op){ case 1: float suma(); printf("La respuesta es: %.1f\n",suma()); break; case 2: float resta(); printf("La respuesta es: %.1f\n",resta()); break; case 3: float multiplicacion(); printf("La respuesta es: %.1f\n",multiplicacion()); break; case 4: float divicion(); printf("La respuesta es: %.1f\n",divicion()); break; } system("pause"); }
int main (void) { int valor1,valor2,operacion,resultado; printf ("Que operacion desea \n1 para Resta\n2 para Suma\n3 para Division\n4 para Multiplicacion"); scanf ("%d",&operacion); printf ("Ingrese el primer valor a los cuales le desea hacer la operacion"); scanf ("%d",&valor1); printf ("\nIngrese el segundo valor"); scanf ("%d",&valor2); swich (i) { case 1: z=resta(valor1,valor2); break; case 2: z=suma(valor1,valor2); break; case 3: z=division(valor1,valor2); break; case 4: z=multiplicacion(valor1,valor2) break; } printf("El resultado de la operacion es: %d", z); return 0; }
int main(int argc, char const *argv[]) { char sel; int v1[ELEMENTOS]={1,3,5,7,9}; int v2[ELEMENTOS]={0,2,4,6,8}; while (1){ printf("Seleccione operación\n"); printf("s: suma, r: resta, m: multiplicación, d: división, x: salir\n"); printf("Selección: "); sel= getchar(); switch (sel){ case 's': suma(v1, v2); break; case 'r': resta(v1, v2); break; case 'm': multiplica(v1,v2); break; case 'd': divide(v1, v2); break; case 'x': exit(0); default: printf("Selección inválida.\n"); } } return 0; }
int main (){ int op1 = 4; int op2 = 3; printf ("SUMA: %i \n", suma(op1, op2)); printf ("RESTA: %i \n", resta(op1, op2)); printf ("MULTIPLICACION: %i \n", multiplicacion(op1, op2)); return 0; }
//main int main(){ int resultado=0; int a=3; int b=2; resultado=resta(a,b); printf("el numero es %i", resultado); return 0; }
/*Calcula la potencia de los motores*/ float CalcularMotores(float velomax, float combu){ float resultado = 0; float a = velomax; float b = combu; resultado = resta(a, b); float obtener = dividir(resultado, b); return obtener; }
void main (void) { int resr = 0, resi = 0; char op; clrscr (); do { printf ("Introduzca el primer número imaginario(a,b)(a+bi): "); scanf ("%d%d", &num1, &num1i); printf ("Introduzca el segundo número imaginario: "); scanf ("%d%d", &num2, &num2i); printf ("Introduzca un operador (+(1),-(2),*(3),/(4)): "); scanf ("%d", &operador); switch (operador) { case 1: suma (num1, num2, num1i, num2i, &resr, &resi); op = '+'; break; case 2: resta (num1, num2, num1i, num2i, &resr, &resi); op = '-'; break; case 3: producto (num1, num2, num1i, num2i, &resr, &resi); op = '*'; break; case 4: cociente (num1, num2, num1i, num2i, &resr, &resi); op = '/'; break; default: printf (":-}\n"); break; }; if ((resr != 0) && (resi != 0)) printf ("(%d+%di) %c (%d+%di) = (%d+%di)", num1, num1i, op, num2, num2i, resr, resi); else if (resr == 0) printf ("(%d+%di) %c (%d+%di) = %di", num1, num1i, op, num2, num2i, resi); else printf ("(%d+%di) %c (%d+%di) = %d", num1, num1i, op, num2, num2i, resr); printf ("\n¿Desea realizar otra operación?(s(1)/n(2)): "); scanf ("%d", &operador); } while (operador == 1); }
/*Calcula los angulos de las alas manteniendolos estables en gravedad cero*/ float CalcularAnguloEnGravedad(float preArri, float VeloMaxi){ float valortotal = 0; float estable = 0; float minima = 2;/*el angulo estable es el promedio del 50% cuando se encuentra en gravedad cero*/ float valor1 = preArri; float valor2 = VeloMaxi; valortotal = resta(valor1, valor2); estable = dividir(valortotal, minima); return estable; }
void parametros_crear(parametros_t* parametros, int n, float pCero, float pUno, float varianza, int*senialCero, int* senialUno) { if (parametros == NULL) return; parametros->largo = n; parametros->gamma = calcularGamma(n, pCero, pUno, varianza, senialCero, senialUno); int* senialAux = malloc(sizeof(int) * n); resta(senialUno, senialCero, senialAux, n); parametros->senialResta = senialAux; }
long oper(long num1, long num2, char op) { if (op == '+') return suma(num1, num2); if (op == '-') return resta(num1, num2); if (op == '*') return mult(num1, num2); if (op == '/') return div(num1, num2); }
void resta(long double Nloopsfin,long double Nloops,int cont,edge * my_edge,size_t *imp_index,nodo * my_node,int N,int Nedges,int contmax) { double aux; int nodo_in,nodo_out; aux=Nloops-my_edge[imp_index[cont-1]].importance; //cont da el tamaño del vector de links eff donde se almacenan los q no son cero //restamos usando los nuevos, que tienen menos, pero tenemos que tratar con este vector a traves del extendido con los ceros //printf("vamosa restar edge[%ld].importance=%d %d->%d\n",imp_index[cont-1],my_edge[imp_index[cont-1]].importance,my_edge[imp_index[cont-1]].in,my_edge[imp_index[cont-1]].out); printf("aux=%lf = %Lf - %d //Nloop_exp=%Lf\n",aux,Nloops,my_edge[imp_index[cont-1]].importance,Nloopsfin); if((aux>Nloopsfin) and (cont>=1)) { //printf("\n"); Nloops=aux; nodo_in=my_edge[imp_index[cont-1]].in; nodo_out=my_edge[imp_index[cont-1]].out; //printf(" quitando loops donde aparece el link %d -%d // %lf de %Lf\n",nodo_in,nodo_out,aux,Nloopsfin); quitar_link(my_node,nodo_in,nodo_out); recalcular_links(my_edge,my_node,N,nodo_in,nodo_out,Nedges,contmax);//elimono los links q ya he recortado indirectamente //cont --;siempre intenta restar el mayor despues de reordenar //reordeno la lista de links por importancia! if (my_edge[imp_index[cont-1]].importance > 0){ my_edge[imp_index[cont-1]].importance=0;//quito tb la importance del loop q acabo de romper, tengo q haber quitado todos esos loops reordenar_importance(my_edge,imp_index,Nedges);//devuelve el vector imp_index reordenado resta(Nloopsfin,Nloops,cont,my_edge,imp_index,my_node,N,Nedges,contmax); cont=Nedges-1; //printf(" cont=%d ",cont); } //si la importancia es cero ya jno lo puedo quitar!! } else if ((aux<Nloopsfin) and (cont>=1)){ //printf("demasié! cont=%d de %d\n",cont,Nedges); cont --;//si no puede con el mayor, intenta el siguiente resta(Nloopsfin,Nloops,cont,my_edge,imp_index,my_node,N,Nedges,contmax); } else if ((aux == Nloopsfin) or (cont =1)){ //printf("yata!\n"); } return; }
int main() { int o1 = 1, o2 = 2, v1, v2; printf("1+2 = %d\n", suma(o1,o2)); printf("1-2 = %d\n", resta(o1,o2)); /* o1 y o2 se pasan por valor v1 y v2 se pasan por referencia */ suma_resta(o1,o2,&v1,&v2); printf("1+2 = %d\n", v1); printf("1-2 = %d\n", v2); return EXIT_SUCCESS; }
int main() { int res,a,b; scanf("%d",& a); scanf("%d",& b); res=suma(a, b); printf("El resultado de la suma es: %d\n", res); res=resta(a, b); printf("El resultado de la resta es: %d\n", res); res=multi(a, b); printf("El resultado de la multiplicacion es: %d\n", res); res=div(a, b); printf("El resultado de la division es: %d", res); }
int main() { int res; res= suma (2,2); printf("La suma es...%d\n",res); int resu; resu = resta (2,1); printf("La resta es... %d\n",resu); int resul; resul = multiplicacion (2,2); printf("La multiplicacion es %d\n",resul); float result; //si le pongo int el resultado me sale a 1, pero si le pongo float el resultado me sale a 0 ¿? result = division (5,3); printf("El resultado de la division es... %d\n",result); }
int main(void) { int op,a,b,c; printf("\tcalculadora de enteros\n"); printf("ingrese un numero entero\n"); scanf("%d",&a); printf("ingrese otro numero entero\n"); scanf("%d",&b); printf("digite la operacion q desea realizar\n"); print("1-suma, 2-resta, 3-multiplicacion, 4-division\n\t"); scanf("%d",&op); switch(op) { case 1: c = suma(a,b); printf("\nel resultado de la suma es: %d",c); break; case 2: c = resta(a,b); printf("\nel resultado de la resta es: %d",c); break; case 3: c = multiplicacion(a,b); printf("\nel resultado de la multiplicacion es: %d",c); break; case 4: c = division(a,b); printf("\nel resultado de la division es: %d",c); break; } return 0; }
int main() { int opcion; float numero1; float numero2; float resultado; printf("Programa calculadora\n"); do{ imprime_menu(); scanf("%d", &opcion); switch(opcion) { case SUMA: introducir_datos(&numero1, &numero2); resultado = suma(numero1, numero2); imprimir_resultado(resultado); break; case RESTA: introducir_datos(&numero1, &numero2); resultado = resta(numero1, numero2); imprimir_resultado(resultado); break; case MULTIPLICACION: introducir_datos(&numero1, &numero2); resultado = multiplicacion(numero1, numero2); imprimir_resultado(resultado); break; case DIVISION: introducir_datos(&numero1, &numero2); resultado = division(numero1, numero2); imprimir_resultado(resultado); break; default: break; } }while (opcion != 5); return 0; }
int main() { int a=3, b=2, c; float area; char inicial; //Hago Suma y resta e imprimo. c=suma(a,b); printf("c: %d\n",c); c=resta(a,b); printf("c: %d\n",c); //Calculo el area de un circulo e imprimo. area=area_circulo(2); printf("area: %f\n",area); //Obtengo la inicial de una cadena e imprimo. inicial=primer_caracter("chelin"); printf("primre caracter: %c",inicial); return 0; }
int main(int argc, char* argv[]) { FILE *inFile; char *fileName; complejo *complejos; if(argc != 2){ printf("error arguments\n"); printf("./a.out <nombre archivo> \n"); exit(1); } fileName = argv[1]; inFile = fopen(fileName, "r"); if(inFile == NULL){ printf("No se puede abrir el fichero: %s\n", fileName); exit(EXIT_FAILURE); } /*Invo functions*/ numComplejos = getNumComplejos(inFile); complejos = (complejo *)malloc(sizeof(complejo) * numComplejos); readNumbers(complejos, inFile); showNumbers(complejos, inFile); suma(complejos); resta(complejos); multiplicacion(complejos); /*Close*/ fclose(inFile); return 0; }
int main() { int res; int a,b; scanf("%d",&a); scanf("%d",&b); res=suma(a,b); printf("%d\n",res); res = resta(a,b); printf("%d\n",res); res=mult(a,b); printf("%d\n",res); res=divi(a,b); if(res>=0) { printf("%d\n",res); } else{ printf("el numero es menor a cero y no se muestra"); } }
void main(){ int a,b; printf(" Dos numeros para sumar\n"); scanf("%d %d", &a, &b ); suma(a,b); printf(" Dos numeros para restar\n"); scanf("%d %d", &a, &b ); printf("resta : %d\n", resta(a,b) ); multiplicacion(); printf("divicion : %d\n", divicion() ); #ifdef _WIN32 getch(); #endif return; }
decimal &decimal::operator-=(const decimal &d) { /* * Resta: * * M inuendo * - S ustraendo * --- * R esultado * * Dependiendo del signo de M y de S, y de su valor absoluto, tendremos que * realizar una operación u otra: * - Si M(+) y S(+): * - Si abs(M) >= abs(S) R = abs(M) - abs(S), R(+). * - Si abs(M) < abs(S) R = abs(S) - abs(M), R(-). * - Si M(+) y S(-): R = abs(M) + abs(S), R(+). * - Si M(-) y S(+): R = abs(M) + abs(S), R(-). * - Si M(-) y S(-): * - Si abs(M) >= abs(S) R = abs(M) - abs(S), R(-). * - Si abs(M) < abs(S) R = abs(S) - abs(M), R(+). * */ // Cambiamos el tamaño del decimal a restar. Con esto garantizamos dos cosas: // 1. Que la resta se pueda realizar (mismo numero de enteros y decimales). // 2. Que se haya redondeado el decimal correctamente. decimal ss(d); ss.resize(cifs, decs); if(!this->is_negative() && !ss.is_negative()) { // M(+), S(+) if(*this >= ss) { resta(ss); } else { ss.resta(*this); *this = ss; this->set_negative(); } } else if(!this->is_negative() && ss.is_negative()) { // M(+), S(-) ss.set_positive(); // Ambos positivos. suma(ss); } else if(this->is_negative() && !ss.is_negative()) { // M(-), S(+) this->set_positive(); // Ambos positivos ahora. suma(ss); this->set_negative(); } else if(this->is_negative() && ss.is_negative()) { // M(-), S(-) // Los hacemos positivos. this->set_positive(); ss.set_positive(); if(*this >= ss) { resta(ss); this->set_negative(); } else { ss.resta(*this); *this = ss; } } // Comprobamos que no nos hayamos salido de rango. if(this->get_cifra(cifs - 1) > 9) throw std::out_of_range("La resta ha producido desbordamiento."); return *this; }
int main() { char seguir='s';//Variable para terminar el bucle while int opcion=0;//Opcion del menu float num1=0; float num2=0; /*Las variables num1 y num2 son los numeros ingresados por el usuario. Se inicializan en 0 para que no entre en el programa ningun dato basura que haya quedado en la direccion de memoria */ while(seguir=='s') { printf("1- Ingresar 1er operando (A=%.2f)\n", num1); printf("2- Ingresar 2do operando (B=%.2f)\n", num2); printf("3- Calcular la suma (A+B)\n"); printf("4- Calcular la resta (A-B)\n"); printf("5- Calcular la division (A/B)\n"); printf("6- Calcular la multiplicacion (A*B)\n"); printf("7- Calcular el factorial (A!)\n"); printf("8- Calcular todas las operacione\n"); printf("9- Salir\n"); scanf("%d",&opcion); system("cls");//Limpia la consola switch(opcion) { case 1://Pide el primer numero printf("Ingrese el 1er operando: "); scanf("%f", &num1); system("cls"); continue; case 2://Pide el segundo numero printf("Ingrese el 2do operando: "); scanf("%f", &num2); system("cls"); continue; case 3://Llama a la funcion suma y muestra el resultado printf("El resultado de la suma es: %.2f\n", suma(num1, num2)); break; case 4://Llama a la funcion resta y muestra el resultado printf("El resultado de la resta es: %.2f\n", resta(num1, num2)); break; case 5://Llama a la funcion division y muestra el resultado printf("El cociente de la division es: %.2f\n", division(num1, num2)); break; case 6://Llama a la funcion multiplicacion y muestra el resultado printf("El producto de la multiplicacion es: %.2f\n", multiplicacion(num1, num2)); break; case 7://Llama a la funcion factorial para cada operando y muestra los resultados factorial(num1); factorial(num2); break; case 8://Llama a todas las funciones y muestra todos los resultados printf("El resultado de la suma es: %.2f\n", suma(num1, num2)); printf("El resultado de la resta es: %.2f\n", resta(num1, num2)); printf("El producto de la multiplicacion es: %.2f\n", multiplicacion(num1, num2)); printf("El cociente de la division es: %.2f\n", division(num1, num2)); factorial(num1); factorial(num2); break; case 9://Salir del programa seguir = 'n'; break; default://Verifica que se ingrese una opcion valida del menu printf("La opcion es invalida, por favor elija una opcion del menu.\n"); } system("pause");//Congela la consola para ver el resultado system("cls");//Limpia la pantalla num1 = 0;//Vuelvo a asignarle 0 a las variables num1 y num2 para empezar el programa de nuevo num2 = 0; } return 0; }
int main() { char seguir='s'; int opcion=0; double operadorUno=0,operadorDos=0; double resultado; int band=0,band1=0; while(seguir=='s') { printf("1- Ingresar 1er operando (A=%0.Lf) \n",operadorUno); printf("2- Ingresar 2do operando (B=%0.Lf) \n",operadorDos); printf("-------------------------------------------\n"); printf("3- Calcular la suma (A+B) \n"); printf("4- Calcular la resta (A-B) \n"); printf("5- Calcular la division (A/B) \n"); printf("6- Calcular la multiplicacion (A*B) \n"); printf("7- Calcular el factorial (A!) \n"); printf("8- Calcular todas las operacione \n"); printf("-------------------------------------------\n"); printf("9- Salir \n"); printf("-------------------------------------------\n"); scanf("%d",&opcion); switch(opcion) { case 1: printf("Ingrese operador uno: "); scanf("%Lf",&operadorUno); band=1; system("cls"); break; case 2: printf("Ingrese operador dos: "); scanf("%Lf",&operadorDos); band1=1; system("cls"); break; case 3: if(band==1&&band1==1) { resultado=suma(operadorUno,operadorDos); printf("La suma es: %.2Lf\n",resultado); } else printf("Error, ingrese los operadores.\n"); system("pause"); system("cls"); break; case 4: if(band==1&&band1==1) { resultado=resta(operadorUno,operadorDos); printf("La resta es: %.2Lf\n",resultado); } else printf("Error, ingrese los operadores.\n"); system("pause"); system("cls"); break; case 5: if(band==1&&band==1) { if(operadorDos<0||operadorDos>0) { resultado=division(operadorUno,operadorDos); printf("La division es: %.2Lf\n",resultado); } else printf("Error, no se puede dividir por cero\n"); } else printf("Error, ingrese los operadores.\n"); system("pause"); system("cls"); break; case 6: if(band=1&&band1==1) { resultado=multiplicacion(operadorUno,operadorDos); printf("La multiplicacion es: %.2Lf\n",resultado); } else printf("Error, ingrese los operadores.\n"); system("pause"); system("cls"); break; case 7: if(band==1) { resultado=factorial(operadorUno); printf("El resultado del factoreo del operador uno es: %.2Lf\n",resultado); } else printf("Error, ingrese operador uno.\n"); system("pause"); system("cls"); break; case 8: if(band==1&&band1==1) { resultado=suma(operadorUno,operadorDos); printf("\nLa suma es: %.2Lf\n",resultado); resultado=resta(operadorUno,operadorDos); printf("\nLa resta es: %.2Lf\n",resultado); if(operadorDos<0||operadorDos>0) { resultado=division(operadorUno,operadorDos); printf("\nLa division es: %.2Lf\n",resultado); } else printf("\nError, no se puede dividir por cero\n"); resultado=multiplicacion(operadorUno,operadorDos); printf("\nLa multiplicacion es: %.2Lf\n",resultado); resultado=factorial(operadorUno); printf("\nEl resultado del factoreo del operador uno es: %.2Lf\n",resultado); } else printf("Error, ingrese los operadores.\n"); system("pause"); system("cls"); break; case 9: seguir = 'n'; break; }//swich }//while return 0; }//main
int main() { int opcion=0; float primerOperando; float segundoOperando; float sumar; float restar; float multiplicar; float dividir; int factorial; do { system("cls"); printf("calculadora\n"); printf("1- Ingresar 1er operando (A=x)\n"); printf("2- Ingresar 2do operando (B=y)\n"); printf("3- Calcular la suma (A+B)\n"); printf("4- Calcular la resta (A-B)\n"); printf("5- Calcular la division (A/B)\n"); printf("6- Calcular la multiplicacion (A*B)\n"); printf("7- Calcular el factorial (A!)\n"); printf("8- Calcular todas las operacione\n"); printf("9- Salir\n"); scanf("%d",&opcion); switch(opcion) { case 1: system("cls"); printf("ingrese el primer operando: "); scanf("%f",&primerOperando); break; case 2: system("cls"); printf("ingrese el segundo operando: "); scanf("%f",&segundoOperando); break; case 3: { system("cls"); sumar= suma(primerOperando, segundoOperando); printf("la suma es:%.2f",sumar); getch(); } break; case 4: { system("cls"); restar=resta(primerOperando, segundoOperando); printf("la resta es:%.2f",restar); getch(); } break; case 5: system("cls"); if(segundoOperando<=0) { printf("error.debe ingresar un divisor mayor a 0"); getch(); } else {dividir=division(primerOperando,segundoOperando); printf("la division es:%.2f",dividir); getch(); } break; case 6: { system("cls"); multiplicar=multiplicacion(primerOperando,segundoOperando); printf("la multiplicacion es:%.2f",multiplicar); getch(); } break; case 7: if(primerOperando<=0) { system("cls"); printf("Error:ingrese un numero mayor a 0\n"); system("pause"); } else { system("cls"); factorial=factorial2(primerOperando); printf("el factorial es:%d",factorial); getch(); } break; case 8: { system("cls"); sumar= suma(primerOperando, segundoOperando); printf("la suma es:%.2f\n",sumar); restar=resta(primerOperando, segundoOperando); printf("la resta es:%.2f\n",restar); dividir=division(segundoOperando,primerOperando); printf("la division es:%.2f\n",dividir); multiplicar=multiplicacion(primerOperando,segundoOperando); printf("la multiplicacion es:%.2f\n",multiplicar); getch(); } break; case 9: printf("Presione cualquier tecla para salir"); break; default: system("cls"); printf("Error.debe ingresar solamente las opciones de 1 a 9"); getch(); break; } } while(opcion!=9); return 0; }
nodo * crop_network(nodo *my_node,int N,edge *my_edge,int Nlinks,long double Nloops_rand,long double Nloops_exp,int contmax) { nodo *crop_node; double *importance,*importance2; size_t *importance_index; vector <int> aux; edge *new_edge; int Nlinks_eff; for (int i=0;i<Nlinks;i++) my_edge[i].label=-1; /* for(int i=0;i<Nlinks;i++) {*/ /* printf("Link[%d] (%d->%d).importance=%d\n",i,my_edge[i].in,my_edge[i].out,my_edge[i].importance);*/ /* }*/ //printf("defino un nuevo vector de links\n"); for(int i=0;i<Nlinks;i++) if (my_edge[i].importance != 0) aux.push_back(i); new_edge=(edge*)malloc(aux.size()*sizeof(edge)); for(int i=0;i<aux.size();i++) { new_edge[i].in = my_edge[aux[i]].in; new_edge[i].out = my_edge[aux[i]].out; new_edge[i].importance = my_edge[aux[i]].importance; new_edge[i].label= aux[i]; } Nlinks_eff=aux.size(); /* for(int i=0;i<Nlinks_eff;i++) {*/ /* printf("new_links[%d] (%d->%d).importance=%d\n",i,new_edge[i].in,new_edge[i].out,new_edge[i].importance);*/ /* }*/ importance=(double*)calloc(Nlinks_eff,sizeof(double)); importance2=(double*)calloc(Nlinks_eff,sizeof(double)); importance_index=(size_t*)malloc(Nlinks_eff*sizeof(size_t)); for (int i=0;i<Nlinks_eff;i++) importance[i]=importance2[i]=new_edge[i].importance*1.; gsl_sort(importance2,1,Nlinks_eff); gsl_sort_index(importance_index,importance,1,Nlinks_eff); //ya tenemos ordenados los edges por importancia, y su antiguo nombre esta en index //printf("primero establecemos los labels en la lista larga!\n"); for (int i=0;i<Nlinks_eff;i++) { //printf("para el new_link[%d][%d->%d]:\n",i,new_edge[i].in,new_edge[i].out); int index=0; for (int j=0;j<new_edge[i].in;j++){ index += my_node[j].kout; // printf("+M[%d].kout(%d) ",j,my_node[j].kout); } // printf("\n"); int nodoi=new_edge[i].in; for (int j=0;j<my_node[nodoi].kout;j++){ if (new_edge[i].out==my_node[nodoi].out_nodos[j]) break; index ++; // printf("+ 1(%d)",my_node[nodoi].out_nodos[j]); } // printf("\n"); //printf("en el largo es Links[%d][%d->%d]\n\n",index,my_edge[index].in,my_edge[index].out); my_edge[index].label=i; new_edge[i].label2=index; } //for (int i=0;i<Nlinks_eff;i++) printf("importance2[%d]=%.0lf label2[%d]=%d i[%d]=%d %d->%d \n",i,importance2[i],i,new_edge[i].label2,i,importance_index[i],new_edge[i].in,new_edge[i].out);//el nodo "inicial(label)" es el nuevo //for (int i=0;i<Nlinks_eff;i++) printf("importance[%d]=%.0lf i[%d]=%d \n",i,importance[i],i,importance_index[i]);//el nodo "inicial(label)" es el nuevo (label_index) int cont=Nlinks_eff; printf("Nlinks_eff=%d\n",Nlinks_eff); //printf("entramos al bucle\n"); resta(Nloops_exp,Nloops_rand,Nlinks_eff,new_edge,importance_index,my_node,N,Nlinks_eff,contmax); //printf("salimos del bucle\n"); aux.clear(); free(new_edge); free(importance); free(importance2); free(importance_index); return crop_node; }