int main() { int indice,n=5; tipo_clave clave=20; //tipo_clave clave=25; //descomentar este y ver que pasa Persona profesores[n]; inicializar(profesores,n); printf("Registros en un principio:\n"); listar(profesores,n); iniciarCuentaTiempo(); ordenar(profesores,n); terminarCuentaTiempo(); printf("Registros al final:\n"); listar(profesores,n); imprimirCuentaTiempo(); printf("Buscando clave %d...\n",clave); indice=busquedaBinaria(profesores,n,clave); if (indice==n){ printf("No se encontro %d en el arreglo y si se quisiera insertar uno nuevo, seria al final",clave); } else if (profesores[indice].clave==clave){ printf("Se encontro %d en el indice %d\n",clave,indice); } else{ printf("No se encontro y la posicion donde lo insertaria es %d\n",indice); } pausar(); char cad[15]; printf("ahora con elementos repetidos\n"); profesores[2].clave=20; strcpy(profesores[2].nombre,"Luis "); strcat(profesores[2].nombre,itoa(20, cad, 10)); strcat(profesores[2].nombre,"o."); listar(profesores,n); indice=busquedaBinaria(profesores,n,clave); if (indice==n){ printf("No se encontro %d en el arreglo y si se quisiera insertar uno nuevo, seria al final",clave); } else if (profesores[indice].clave==clave){ printf("Se encontro %d en el indice %d\n",clave,indice); } else printf("No se encontro y la posicion donde lo insertaria es %d\n", indice); return 0; }
Nat campusSeguro::busquedaBinaria( Arreglo<TuplaAgYSan> arr,Nat posInicio,Nat posFin,Nat valorBuscado) { Nat pivote=(posFin-posInicio)/2; // division de enteros es entera en c++. if( arr[pivote].Sanciones>valorBuscado ) { busquedaBinaria(arr,posInicio,pivote,valorBuscado); } else { if( arr[pivote].Sanciones < valorBuscado ) { busquedaBinaria(arr, pivote, posFin, valorBuscado); } else { if( arr[pivote].Sanciones == valorBuscado ) { return pivote; } } } return pivote; }
Conj<Agente> campusSeguro::conKSanciones(Nat k) { Conj<Agente> res; Nat posK; if(KSanciones.buffer) // .buffer es el .pi2 { posK = busquedaBinaria(KSanciones.arreglo,0,KSanciones.arreglo.Tamanho()-1,k); res = KSanciones.arreglo[posK].conjAgentes; // pi1=.arreglo y el otro .pi1=conjAgentes } else { ConjsEqu<Agente>::Iterador it = KSanciones.itMenosSanciones; //Arreglo<campusSeguro::TuplaAgYSan> arreglo = Arreglo(agentes.Cardinal()); Arreglo<campusSeguro::TuplaAgYSan> arreglo(_agentes.Cardinal()); Nat indice = 0; Nat valAct = -1; while( it.HaySiguiente() ) { if( it.valorActual() != valAct ) { valAct = it.valorActual(); campusSeguro::TuplaAgYSan clase; clase.conjAgentes = it.claseActual(); clase.Sanciones = it.valorActual(); arreglo[indice] = clase; indice++; }// fin if it.Avanzar(); }// fin 1er while while( indice < arreglo.Tamanho() ) { campusSeguro::TuplaAgYSan claseVac; Conj<Agente> conjvacio; // creo un conjunto vacio, sin elementos. claseVac.conjAgentes = conjvacio; claseVac.Sanciones = valAct+1; arreglo[indice]=claseVac; indice++; }// fin 2do while KSanciones.arreglo = arreglo; KSanciones.buffer = true; KSanciones.itMenosSanciones = KSanciones.itMenosSanciones; // esta demas,pero lo pongo asi queda clara la idea. } // fin else return res; }
//------------------------------------------------------ // void rutina_tout0(void) // // Descripción: // Función de atención a la interrupción para TIMER0 //------------------------------------------------------ void rutina_tout0(void) { static int sumaSeno[MAX_FRECS]; // Almacena todos los valores (el sumatorio) de la parte imaginaria de la DFT static int sumaCoseno[MAX_FRECS]; // Almacena todos los valores (el sumatorio) de la parte real de la DFT int dato = ADC_dato(); // Número obtenido tras interpretar el número leído a la entrada (int ADC_leeRxRAM() de m5272adc_dac.c) mbar_writeShort(MCFSIM_TER0,BORRA_REF); // Reset del bit de fin de cuenta /* Se incrementa contadorDFT para llevar la cuenta de cuantas interrupciones van. Recorremos con i las 20 frecuencias. Si estamos en la primera interrupción, ponemos cada componente de los arrays sumaSeno[] y sumaCoseno[] a 0. Después se rellena cada posición de dichos arrays (cada posición representa una frecuencia distinta) con el dato multiplpicado por un valor de sinusoide10HZ[]. Para el seno este valor es resto de dividir entre el numero de muestras (400) el valor del paso correspondiente a cada frecuencia (pasos[i]) multiplicado por contadorDFT. Para el coseno es similar, hay que sumar al producto pasos[i] * contadorDFT el desfase necesario para convertir el seno en un coseno. Sabemos que cos(x) = sen(x + pi/2). Este desfase se traduce como un desfase de la cuarta parte de NUM_MUESTRAS_PERIODO_10HZ, que son 100 muestras. Después, si hemos hecho todas las interrupciones necesarias (contadorDFT == n_dft), contadorDFT se reinicia a 0, realizamos el desescalado de los arrays del seno y del coseno, y en el array S_out[] guardamos para cada frecuencia el resultado que devuelva la función busquedaBinaria de sumaCoseno[k]^2 + sumaSeno[k]^2, es decir, el módulo de la DFT. El objetivo de busquedaBinaria es escalar dicho módulo. */ contadorDFT++; // Incrementamos contadorDFT if (contadorDFT == 1) { // Si contadorDFT es 1 memset(sumaSeno, 0, MAX_FRECS); // Todas las posiciones de sumaSeno[i] se ponen a 0 memset(sumaCoseno, 0, MAX_FRECS); // Todas las posiciones de sumaCoseno[i] se ponen a 0 } for (i = 0; i < n_frecs; i++) { // Para cada frecuencia sumaSeno[i] += (dato * (sinusoide10Hz[(pasos[i] * (contadorDFT - 1))%NUM_MUESTRAS_PERIODO_10HZ])); // Rellenamos sumaSeno[i] con los valores correspondientes a cada frecuencia sumaCoseno[i] += (dato * (sinusoide10Hz[((pasos[i] * (contadorDFT - 1)) + NUM_MUESTRAS_PERIODO_10HZ/4)%NUM_MUESTRAS_PERIODO_10HZ])); // Rellenamos sumaCoseno[i] con los valores correspondientes a cada frecuencia } if (contadorDFT == n_dft) { // Si hemos hecho todas las interrupciones necesarias contadorDFT = 0; // Reiniciamos contadorDFT for (j = 0; j < n_frecs; j++) { // Para cada frecuencia sumaSeno[j] >>= 10; // Desescalado de 1024 (mover a la derecha 10 bits) para que no se produzcan desbordamientos sumaCoseno[j] >>= 10; // Desescalado de 1024 (mover a la derecha 10 bits) para que no se produzcan desbordamientos S_out[j] = busquedaBinaria((sumaCoseno[j] * sumaCoseno[j]) + (sumaSeno[j] * sumaSeno[j])); // Almacenamos en S_out[j] el módulo cuantificado de la DFT de cada frecuencia if (j == 0) { dft_lcd = S_out[0]; frec_lcd = 0; } if (j > 0 && S_out[j] > dft_lcd) { dft_lcd = S_out[j]; frec_lcd = 10 * pasos[j]; } } }
int menu(int *f){ int op,i,opcion,x,columna=43,fila=6; int pos; char nombre[20]; char aapp[15]; static Alumno Alum[Max]; static int contAlum=0; system("cls"); switch(*f){ case INICIO+3: system("cls"); gotoxy(50,10);printf("AGREGAR ALUMNO"); Captura(Alum,&contAlum); gotoxy(43,27);printf("...PRESIONA UNA TECLA PARA CONTINUAR..."); getch(); break; case INICIO+6: system("cls"); if(band == 1){ gotoxy(columna,fila+3);printf("ELIMINAR ALUMNO"); gotoxy(columna-25,fila+6);printf("APELLIDO PATERNO "); fflush(stdin); gotoxy(columna-23,fila+8);gets(aapp); strupr(aapp); gotoxy(columna+5,fila+6);printf("NOMBRE "); fflush(stdin); gotoxy(columna,fila+8);gets(nombre); strupr(nombre); for(i=0; i<contAlum; i++) if(Alum[i].Edad != 0) Eliminar(Alum,&contAlum,i,nombre,aapp); else gotoxy(columna,fila+24);printf("EL ALUMNO NO EXISTE"); gotoxy(40,27);printf("...PRESIONA UNA TECLA PARA CONTINUAR..."); getch(); } else{ gotoxy(40,7);printf("...NO HAY DATOS CAPTURADOS..."); getch(); } break; case INICIO+9: if(band == 1){ do{ system("cls"); gotoxy(columna,fila+3);printf("MOSTRAR ALUMNO"); gotoxy(columna,fila+6);printf("1. NOMBRE"); gotoxy(columna,fila+9);printf("2. APELLIDO PATERNO"); gotoxy(columna,fila+12);printf("3. APELLIDO MATERNO"); gotoxy(columna,fila+15);printf("4. EDAD"); gotoxy(columna,fila+18);printf("5. SEMESTRE"); gotoxy(columna,fila+21);printf("6. SALIR"); gotoxy(columna,fila+24);printf("Elige una Opcion: "); scanf("%d",&opcion); switch(opcion){ case 1: system("cls"); gotoxy(columna+5,fila);printf("ALUMNOS"); insercionNom(Alum,contAlum); i=0; do{ mostrarAlum(Alum,i); i++; }while(i<contAlum); gotoxy(columna,fila+(i+15));printf("...PRESIONA UNA TECLA PARA CONTINUAR..."); getch(); break; case 2: system("cls"); gotoxy(columna+5,fila);printf("ALUMNOS"); quickSortAP(Alum,0,(contAlum-1)); for(i=0; i<contAlum; i++) mostrarAlum(Alum,i); gotoxy(columna,fila+(i+15));printf("...PRESIONA UNA TECLA PARA CONTINUAR..."); getch(); break; case 3: system("cls"); gotoxy(columna+5,fila);printf("ALUMNOS"); burbujaMejoradoAM(Alum,contAlum); for(i=0; i<contAlum; i++) mostrarAlum(Alum,i); gotoxy(columna,fila+(i+15));printf("...PRESIONA UNA TECLA PARA CONTINUAR..."); getch(); break; case 4: system("cls"); gotoxy(columna+5,fila);printf("ALUMNOS"); seleccionEdad(Alum,contAlum); for(i=0; i<contAlum; i++) mostrarAlum(Alum,i); gotoxy(columna,fila+(i+15));printf("...PRESIONA UNA TECLA PARA CONTINUAR..."); getch(); break; case 5: system("cls"); gotoxy(columna+5,fila);printf("ALUMNOS"); shellSortSem(Alum,contAlum); for(i=0; i<contAlum; i++) mostrarAlum(Alum,i); gotoxy(columna,fila+(i+15));printf("...PRESIONA UNA TECLA PARA CONTINUAR..."); getch(); break; case 6: system("cls"); gotoxy(columna+5,fila);printf("ABANDONAR MENU MOSTRAR..."); gotoxy(columna,fila+(i+15));printf("...PRESIONA UNA TECLA PARA CONTINUAR..."); getch(); break; default: system("cls"); gotoxy(columna+5,fila);printf("OPCION INCORRECTA"); gotoxy(columna,fila+(i+15));printf("...PRESIONA UNA TECLA PARA CONTINUAR..."); getch(); } }while(opcion != 6); } else{ gotoxy(40,7);printf("...NO HAY DATOS CAPTURADOS..."); getch(); } break; case INICIO+12: if(band == 1){ system("cls"); gotoxy(columna,fila+3);printf("BUSQUEDA"); gotoxy(columna-25,fila+6);printf("APELLIDO PATERNO"); fflush(stdin); gotoxy(columna-23,fila+8);gets(aapp); strupr(aapp); gotoxy(columna-10,fila+6);printf("NOMBRE:"); fflush(stdin); gotoxy(columna-10,fila+6);gets(nombre); strupr(nombre); pos=busquedaBinaria(Alum,contAlum,aapp,nombre); if(x != -1){ if(Alum[pos].Edad != 0){ system("cls"); printf("ALUMNOS ENCONTRADOS"); mostrarAlum(Alum,pos); gotoxy(40,7);printf("...PRESIONA UNA TECLA PARA CONTINUAR..."); getch(); } else gotoxy(43,23);printf("ALUMNO NO ENCONTRADO"); } else gotoxy(43,23);printf("ALUMNO NO ENCONTRADO"); gotoxy(40,7);printf("...PRESIONA UNA TECLA PARA CONTINUAR..."); getch(); } else{ gotoxy(40,7);printf("...NO HAY DATOS CAPTURADOS..."); getch(); } break; case INICIO+15: system("cls"); gotoxy(columna+15,fila);printf("...ABANDONAR PROGRAMA..."); gotoxy(columna+5,fila+2);printf("...PRESIONA UNA TECLA PARA CONTINUAR...\n"); getch(); return 27; break; } return 0; }
bool Parser::isStopWord(char* word) { int pos = busquedaBinaria(word,&stopWords); return pos>=0; }