Пример #1
0
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;
}
Пример #2
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;
}
Пример #3
0
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;
}
Пример #4
0
//------------------------------------------------------
// 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];
			}
		}
	}
Пример #5
0
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;
}
Пример #6
0
bool Parser::isStopWord(char* word) {
	int pos = busquedaBinaria(word,&stopWords);
	return pos>=0;
}