pline * linea( point pp1, point pp2 ){ //p1 < p2 int x=0; point p; point p1 , p2 ; pline *retlinea=NULL; int inclinacion=0; if( pp1.x< pp2.x ){ p1= pp1; p2= pp2; }else if( pp1.x > pp2.x ){ p1 = pp2 ; p2 = pp1 ; } if( p2.x == p1.x ){ //linea vertical printf(" p2.x= p1.x x=%d \n", p1.x); p.x = p1.x; for(p.y= p1.y+1 ; ( p.y < p2.y) ; p.y++){ inserta( p, &retlinea ); } return ( retlinea ); } else inclinacion=m(p2, p1 ); if ( inclinacion ==0 ){ //linea horizontal printf("inclinacion es igual a 0 \n"); p.y= p1.y ; for( p.x = p1.x+1 ; p.x < p2.x ; p.x++ ){ inserta( p, &retlinea ); } return ( retlinea ); }//linea es recta horizontal else{ /* inclinacion no es vertical ni horizontal */ printf("P1(%d,%d) P2(%d,%d)\n", p1.x, p1.y, p2.x, p2.y ); for( p.x= p1.x +1; p.x < p2.x ; p.x++ ){ p.y= y( inclinacion , p.x , p1 ); inserta( p, &retlinea ); } return ( retlinea ); } return ( retlinea ); }
int main() { scanf("%d,",&N); inserta(N); mezmod(1,N); printf("%d\n",r); return 0; }
int main(int a,char* args[]){ double utime0, stime0, wtime0,utime1, stime1, wtime1; //Variables para medición de tiempos int *numeros,n,i; Nodo *arbol; uswtime(&utime0, &stime0, &wtime0); numeros = (int*)malloc(10000000*sizeof(int)); arbol = NULL; //Limite de numeros n = atoi(args[1]); //Leer n numeros del archivo for(i = 0;i < n;i++){ scanf("%d",&numeros[i]); //printf("%d ",numeros[i]); } //putchar('\n'); //Implementacion del Arbol Binario for(i = 0;i < n;i++){ inserta(&arbol,numeros[i]); }//Fin For printf("====================NUMEROS=================\n"); //Recorremos el Arbol InOrden para obtener los Numero Ordenados (Imprime) inOrden(arbol); printf("!===================NUMEROS=================!\n"); uswtime(&utime1, &stime1, &wtime1); //Cálculo del tiempo de ejecución del programa printf("\n"); printf("real (Tiempo total) %.10f s\n", wtime1 - wtime0); printf("user (Tiempo de procesamiento en CPU) %.10f s\n", utime1 - utime0); printf("sys (Tiempo en acciónes de E/S) %.10f s\n", stime1 - stime0); printf("CPU/Wall %.10f %% \n",100.0 * (utime1 - utime0 + stime1 - stime0) / (wtime1 - wtime0)); printf("\n"); //Mostrar los tiempos en formato exponecial printf("\n"); printf("real (Tiempo total) %.10e s\n", wtime1 - wtime0); printf("user (Tiempo de procesamiento en CPU) %.10e s\n", utime1 - utime0); printf("sys (Tiempo en acciónes de E/S) %.10e s\n", stime1 - stime0); printf("CPU/Wall %.10f %% \n",100.0 * (utime1 - utime0 + stime1 - stime0) / (wtime1 - wtime0)); printf("\n"); //****************************************************************** return 1; }
/* Copia: */ void copia(PCola destino,PCola origen){ PNodoCola temp; if (tamano(origen)==0) /* Origen no debe estar vacio*/ return; while((tamano(destino))>0) /* Borrado de la cola destino */ { extrae(destino); } temp = origen->iterador; /* Almaceno temporalmente el iterador */ inicio(origen); inserta(destino,examina(origen)); while (avanza(origen)) /* Recorro la cola origen,y la voy insertando */ { inserta(destino,examina(origen)); /* Si he llegado al elemento que estaba señalado,fijo el iterador * en el final de destino */ if (origen->iterador==temp) fin(destino); } origen->iterador=temp; /* Recolocar el iterador en origen */ }
int main() { Arbol a = NULL; // Se crea un árbol vacío. // Ahora se insertan unos cuantos valores inserta(100, &a); inserta(200, &a); inserta(50, &a); inserta(150, &a); inserta(250, &a); inserta(20, &a); inserta(75, &a); inserta(60, &a); inserta(80, &a); inserta(170, &a); inserta(230, &a); inserta(300, &a); inserta(30, &a); inserta(120, &a); // Un recorrido para ver que todo está bien printf("\nBusqueda ENORDEN\n"); enorden(a); // Ahora se hacen algunas búquedas if (busca(60, a)) printf("\nmuy bien\n"); else printf("\nmuy mal\n"); if (busca(85,a)) printf("\nmuy mal\n"); else printf("\nmuy bien\n"); // Ahora borramos un elemento del árbol elimina(60, &a); // Para ver que se haya hecho bien, se hace un recorrido printf("\nBusqueda ENORDEN\n"); enorden(a); // Ahora borramos otro elemento. elimina(75, &a); // De nuevo, revisamos que todo esté bien printf("\nBusqueda ENORDEN\n"); enorden(a); // Finalmente, borramos otro elemento elimina(200, &a); // Revisamos printf("\nBusqueda ENORDEN\n"); enorden(a); // Ahora los otros recorridos, para que no hayan sido en balde printf("\nBusqueda PREORDEN\n"); preorden(a); printf("\nBusqueda POSTORDEN\n"); postorden(a); }
int main() { FILE *input; int nOvejas=10; int nEsquinas=0; short i=0; pline *ovejas=NULL; pline *esquinas=NULL; pline punto; pline * conjuntoG=NULL ; pline * conjuntoO=NULL; pline *p=NULL; point p1, p2 ; if ( !(input=fopen("bahaa.in" , "r+t") ) ) { perror( " no puedo abrir el archivo \n") ; } fscanf( input, "%d %d", &nOvejas, &nEsquinas ); printf("se leeran %d ovejas \n", nOvejas ); printf("se leeran %d esquinas \n", nEsquinas ); printf("ovejas \n"); for( i=0; i< nOvejas ; i++ ) { fscanf( input, "%d" , &punto.x ) ; fscanf( input, "%d" , &punto.y ) ; inserta(punto, &conjuntoO ); printf("(%d,%d) \n", punto.x , punto.y ); } printf("esquinas \n"); for( i=0 ; i< nEsquinas; i++ ){ fscanf( input, "%d", &punto.x ) ; fscanf( input, "%d", &punto.y ) ; inserta( punto, &esquinas ); printf("(%d,%d) \n",punto.x , punto.y); } p=conjuntoO; printf("conjunto de puntos de Ovejas \n"); while ( p ){ printf(" (%d,%d) \n", p->x, p->y ); p=p->sig; } printf("conjunto de punto de Esquinas \n"); p=esquinas; while( p ){ printf(" (%d,%d) \n", p->x, p->y ); p=p->sig; } p=esquinas ; p1.x = p->x; p1.y = p->y; p2.x = p->sig->x; p2.y = p->sig->y; conjuntoG=linea( p1, p2 ); printf(" puntos entre el primer y segundo punto \n"); printf(" p1.x = %d, p1.y= %d | p2.x=%d,p2.y=%d \n ", p1.x, p1.y, p2.x , p2.y); printf(" %p direcccion que apunta conjuntoG \n", conjuntoG ); p=conjuntoG; while( p ) { printf("(%d,%d)\n", p->x, p->y ); p=p->sig; } return 0 ; }
int main (){ tipo_elem x; struct Nodo * pun; struct encabezado * E; int n, i,opc; inicializa (&E); do{ clrscr(); printf ("...........Menu............\n"); printf ("1-Inserta.....\n"); printf ("2-Suprime.....\n"); printf ("3-Localiza....\n"); printf ("4-Imprime.....\n"); printf ("5-Vacia.......\n"); printf ("6-Anula.......\n"); printf ("7-Salir.......\n"); printf ("Elige una opcion:....\n"); scanf ("%d", &opc); switch(opc){ case 1: printf ("\nDame numero a insertar.....\n"); scanf("%d",& x); inserta(x,E); break; case 2: printf ("\nDame numero a suprimir.....\n"); scanf ("%d",& x); suprimir(localiza(x,E)); break; case 3: printf ("\nDame numero a localizar.....\n"); scanf ("%d",& x); pun=localiza(x,E); if(pun==NULL) printf("Numero no encontrado"); else printf("%p\n",pun); getch(); break; case 4: clrscr(); imprime(E); getch(); break; case 5: if(vacia(E)) printf("SI"); else printf("NO"); getch(); break; case 6: anula(E); printf("La lista fue anulada"); getch(); break; } } while(opc!=7); getch(); return 0; }
void main() { char opcion; unsigned int sw; estudiante *Ptr, *Avail,*P,*Q,*T; float Inf; //creacion del menú sw=0; do{ clrscr(); gotoxy(10,2); printf("*** M E N U PRINCIPAL ** MANEJO DE LISTAS LINEALES ENLAZADAS ***"); gotoxy(15,4); printf("1- Definir Listas Lineales Enlazadas"); gotoxy(15,6); printf("2- Crear Listas Enlazadas"); gotoxy(15,8); printf("3- Inserta Antes Del Nodo Con INF Dada"); gotoxy(15,10); printf("4- Cancelar Antes Del Nodo Con INF Dada"); gotoxy(15,12); printf("5- Mostrar Nodos De Lista"); gotoxy(15,14); printf("6- SALIR"); gotoxy(15,16); printf("7- Digite Opción"); do{ opcion=getchar(); }while (opcion'0'&& opcion<'6'); switch (opcion){ case '1': if (sw==0){ sw=1; clrscr(); //Definicion de la LLE Ptr=0; Avail=0; printf("LISTA LINEAL ENLAZADA YA DEFINIDA...Digite 0 y <Enter> continua"); do{ opcion=getchar(); }while (opcion!= '0'); } else { clrscr(); printf("LISTA YA DEFINIDA...Digite 0 y <Enter> continua"); do { opcion=getchar(); } while (opcion != '0'); } break; case '2': if (sw==1){ crear_nodo_lle(&Ptr); } else{ clrscr(); printf("Lista NO defenida...Digite 0 y <Enter> continua"); do{ opcion getchar(); } while (opcion != '0'); } break; case '3':if (sw==1){ captura_nodo(&Inf,&T,&Avail); inserta(&Ptr,Inf,T); } else{ clrscr(); printf("Lista NO defenida...Digite 0 y <Enter> continua"); do{ opcion getchar(); } while (opcion != '0'); } break; case '4': if (sw==1){ clrscr(); gotoxy(10,2) printf("INFORMACION DEL NODO A CANCELAR"); gotoxy(15,4); printf("Codigo : "); scanf("%f",&Inf); Cancelar(&Ptr,&Avail,Inf); } else{ clrscr(); printf("Lista NO defenida...Digite 0 y <Enter> continua"); do{ opcion getchar(); } while (opcion != '0'); } break; case '5':if (sw==1){ clrscr(); escribir_nodos_lle(ptr); printf("\n\n Digite 0 y <Enter> Continua"); do{ opcion getchar(); } while (opcion != '0'); } else{ clrscr(); printf("Lista NO defenida...Digite 0 y <Enter> continua"); do{ opcion getchar(); } while (opcion != '0'); } break; default : break; } }while (opcion != '6'); clrscr(); printf("Fin Del Proceso"); } }
int main (){ tipo_elem x; posicion E; posicion pun; int n, i,opc; inicializa (&E); do{ ("sys"); printf ("...........Menu............\n"); printf ("1-Inserta.....\n"); printf ("2-Suprime.....\n"); printf ("3-Localiza....\n"); printf ("4-Imprime.....\n"); printf ("5-Vacia.......\n"); printf ("6-Anula.......\n"); printf ("7-Salir.......\n"); printf ("Elige una opcion:....\n"); scanf ("%d", &opc); switch(opc){ case 1: printf ("\nDame numero a insertar.....\n"); scanf("%d",& x); inserta(x,(&E.cont+1),&E); break; case 2: printf ("\nDame numero a suprimir.....\n"); scanf ("%d",& x); suprimir(localiza(x,E),&E); break; case 3: printf ("\nDame numero a localizar.....\n"); scanf ("%d",& x); pun=localiza(x,E); if(pun==NULL) printf("Numero no encontrado"); else printf("%p\n",pun); getch(); break; case 4: imprimir(E); getch(); break; case 5: if(vacia(E)) printf("SI"); else printf("NO"); getch(); break; case 6: anula(&E); printf("La lista fue anulada"); getch(); break; default: printf("Opcion No Valida"); } } while(opc!=7); return 0; }
//Función que devolve ao analizador sintáctico o lexema co seu código, nel fanse as chamadas ao resto das funcións tipoelem automataPrincipal() { int erro=0,estado=0,band=0; char aux; tipoelem elem; elem.numID=0; lexema = (char *) calloc(2, sizeof (char));//Reservamos memoria para o lexema (un caracter) while (!erro) { switch (estado) { case 0: aux=avanzarCaracter(); if((aux==' ') || (aux== '\t'))//Comprobamos si hai tabulacion ou espacio estado=0; else if(aux=='\n'){ //Comprobamos si hai salto de linea nLinea++; estado=0; }else if(aux=='#')//Si detectamos un # vamos ao estado=1, automata de comentarios estado=1; else if(isalpha(aux))//Si detectamos unha letra vamos ao estado=2, automata de identificadores e palabras reservadas estado=2; else if(isdigit(aux))//Si encontramos un numero vamos ao estado=3, automata dos numeros estado=3; else if((aux=='>') || (aux=='<') || (aux=='=') || (aux=='|') || (aux=='/') || (aux=='+') || (aux=='-'))//Si encontramos os seguintes simbolos accedemos ao estado=4, automata de operadores estado=4; else if(aux=='"')//Si encontramos un ", accedemos ao estado=5, automata de cadenas estado=5; else if((aux==',') || (aux=='(') || (aux==')') || (aux=='*') || (aux=='^') || (aux==';')){//Si encontramos algun destes simbolos gardamos o codigo na estructura tipoelem lexema[i]=aux; lexema[i+1]=0; erro=1; elem.numID=aux; }else if(aux==EOF){//Si encontramos o final de ficheiro, reservamos memoria e copiamos EOF para detectar o final do arquivo lexema=(char *) realloc(lexema, 4); strcpy(lexema, "EOF"); erro=1; }else xestionErros(1,1, nLinea); break; case 1://Accedemos ao automata de comentarios automataComentarios(); estado=0; break; case 2://Accedemos ao automata de palabra reservada e identificadores lexema[i]=aux; lexema[i+1]=0; i++; erro=automataID_Reservada(&elem,&band); break; case 3://Accedemos ao automata para detectar numeros lexema[i]=aux; lexema[i+1]=0; i++; erro=automataNumeros(&elem,aux); break; case 4://Accedemos ao automata dos operadores lexema[i]=aux; lexema[i+1]=0; i++; erro=automataOperadores(&elem,aux); break; case 5://Accedemos automata de cadenas lexema[i]=aux; lexema[i+1]=0; i++; erro=automataCadenas(&elem); break; }//Salimos do bucle, cando error!=0. Cando entramos nun automata retornamos un valor, con este valor salimos } i=0; resetearLexema();//Función para volver a colocar o inicio do proximo lexema cargarTipoelem(&elem);//Cargar os datos na estructura tipoelem if (band==1) inserta(&arbore, elem);//Si e un identificador e non esta na tabla de simbolos, introducimolo return elem;//Devolvemos o lexema co seu numero para que o utilice o analizador sintactico }