ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

PROYECTOS ALGORITMIA "METODOS DE ORDENACIÓN"

alexlopeztelloTrabajo20 de Noviembre de 2019

1.845 Palabras (8 Páginas)184 Visitas

Página 1 de 8

#include<stdio.h>

#include<windows.h>

#include<conio.h>

#include <time.h>

#include <limits.h>

#include <string.h>

#include <stdlib.h>

#define INFINITY 9999

#define MAX 10

#define MAX2 100

#define INICIAL 1

#define ESPERANDO 2

#define VISITADO 3

//Matriz de adyacencia general

int G[MAX][MAX];

//Cantidad de nodos

int n;

// Funciones 'Dijkstra'

void entradaDatosDijkstra();

void dijkstra(int G[MAX][MAX],int n,int startnode, char Nombres[MAX]);

int indiceNodo(char Nombres[MAX],char c, int n);

// Funciones, estructuras y variables 'Kruskal'

void entradaDatosKruskal();

typedef struct edge

{

int u,v,w;

}edge;

typedef struct edgelist

{

edge data[MAX];

int n;

}edgelist;

edgelist elist;

edgelist spanlist;

void kruskal();

int find(int belongs[],int vertexno);

void union1(int belongs[],int c1,int c2);

void sort();

void printSubGrafo(char Nombres[MAX]);

//Variables y funciones 'Prim'

int spanning[MAX][MAX];

int prims();

void entradaDatosPrim();

// Variables y funcion ´Primero en Profundidad´ (DFS)

void entradaDatosDFS();

void DFS(int, int, char Nombres[MAX]);

int visited[10];

// Funciones 'Primero en anchura' (BFS)

int adj[MAX2][MAX2];

int state[MAX2];

void create_graph();

void BF_Traversal();

void BFS(int v);

int queue[MAX2], front = -1,rear = -1;

void insert_queue(int vertex);

int delete_queue();

int isEmpty_queue();

void entradaDatosBFS();

//Bellman-Ford

struct Edge

{

int source, destination, weight;

};

struct Graph

{

int V, E;

struct Edge* edge;

};

struct Graph* createGraph(int V, int E)

{

struct Graph* graph = (struct Graph*) malloc( sizeof(struct Graph));

graph->V = V;

graph->E = E;

graph->edge = (struct Edge*) malloc( graph->E * sizeof( struct Edge ) );

return graph;

}

void FinalSolution(int dist[], int n);

void BellmanFord(struct Graph* graph, int source);

void entradaDatosBellman();

/*FUNCION QUE AYUDA A CONTROLAR EL PUNTERO*/

void gotoxy(int x, int y){

HANDLE hCon;

COORD dwPos;

dwPos.X = x;

dwPos.Y = y;

hCon = GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleCursorPosition(hCon,dwPos);

}

/*FUNCION ESPECIFICA DEL MARCO GRAFICO*/

marco (int x1,int y1,int x2,int y2,int c1,int c2){

for(int i=x1+1;i<x2; i++){

gotoxy(i,y1);printf("%c",c1);

gotoxy(i,y2);printf("%c",c1);

}

for(int i=y1+1;i<y2;i++){

gotoxy(x1,i);printf("%c",c2);

gotoxy(x2,i);printf("%c",c2);

}

gotoxy(x1,y1);printf("%c",201);

gotoxy(x2,y1);printf("%c",187);

gotoxy(x1,y2);printf("%c",200);

gotoxy(x2,y2);printf("%c",188);

}

/*MENU EN DONDE DA OPCION DE RECURSIVO E ITERATIVO*/

int menuinterno(){

int opc2;

do{

system("cls");

marco(28,5,58,17,205,186);

gotoxy(30,9);printf("1. Recursivo\n");

gotoxy(30,10);printf("2. Iterativo\n");

gotoxy(30,11);printf("3. Regresar al menu anterior\n");

gotoxy(30,12);printf("Elije una opcion: ");

scanf("%d",&opc2);

switch(opc2){

case 1:

return 1;

break;

case 2:

return 2;

break;

case 3:

gotoxy(30,14);printf("Regresando al menu anterior");

Sleep(1000);

break;

default:

gotoxy(30,14);printf("Opcion no valida");

Sleep(1000);

break;

}

}while(opc2 !=3);

}

/*ALGORITMO FACTORIAL*/

unsigned long long factorial(int x){

if(x == 0)

return 1;

else

return (x*factorial(x-1));

}

/*ALGORITMO FIBONACCI*/

int fibonacci(int x){

if(x == 1)

return 1;

if(x == 0)

return 0;

return fibonacci(x-2) + fibonacci(x-1);

}

/*SUMA DE DIGITOS*/

digitos(int x,int y){

if(x==0)

return y;

y = y + (x%10);

x = x/10;

digitos(x,y);

}

/*DADOS DOS NUMEROS ENCONTRAR EL MAXIMO COMUN DIVISOR*/

mcd(int x,int y){

if(y==0)

return x;

else

return mcd(y,x%y);

}

/*FUNCION QUE IMPRIME GRFAICA EN PANTALLA*/

void grafica(int v[10]){

for(int i=29;i<70;i++){

gotoxy(i,23);printf("%c",205);

}

for(int i=3;i<23;i++){

gotoxy(28,i);printf("%c",186);

}

gotoxy(28,23);printf("%c",200);

for(int i=1;i<=10;i++){

gotoxy(i*3+26,24);printf("|%-2d|",v[i]);

for(int j=0;j<v[i];j++){

gotoxy(i*3+27,22-j);printf("%c%c",219,219);

}

}

}

/*ALGORITMO QUICK*/

void partition(int v[],int izq,int der){

int i,j,key,piv;

i = izq;

j = der;

piv=v[(i+j)/2];

do{

while(v[i]<piv && i<der)

i++;

while(piv<v[j] && j>izq)j--;

if(i <=j){

key= v[i];

v[i]=v[j];

system("cls");

grafica(v);

Sleep(2000);

v[j]=key;

system("cls");

grafica(v);

Sleep(2000);

i++;

j--;

}

}while(i<=j);

if(izq<j){

partition(v,izq,j);

}

if(der>i){

partition(v,i,der);

}

}

void quicksort(int v[],int n){

partition(v,1,n-1);

}

/*MENU GENERAL CON IMPRESIONES A USUARIO*/

main(){

srand(time(NULL));

clock_t tiempo_inicio, tiempo_final;

float segundos;

int opc,opc2,opc3,x=0,y=0,fibo,z;

unsigned long long r;

do{

system("cls");

marco(28,5,58,17,205,186);

gotoxy(30,6);printf("MENU\n");

gotoxy(30,7);printf("1. Factorial\n"); //Listo

gotoxy(30,8);printf("2. Fibonacci\n"); //Listo

gotoxy(30,9);printf("3. Suma de digitos\n"); //Listo

gotoxy(30,10);printf("4. MCD de 2 numeros"); //Listo

gotoxy(30,11);printf("5. Hanoi\n"); //

gotoxy(30,12);printf("6. Metodos de ordenacion\n"); //

gotoxy(30,13);printf("7. Algoritmos con grafos\n");

gotoxy(30,14);printf("8. Salir\n");

gotoxy(30,14);printf("Elije una opcion: ");

scanf("%d",&opc);

switch(opc){

case 1:

opc2 = menuinterno();

if(opc2 == 1){

system("cls");

marco(28,5,88,17,205,186);

gotoxy(30,8);printf("Ingresa el numero al que le quieres sacar factorial: ");

scanf("%d",&x);

r = factorial(x);

gotoxy(30,10);printf("El factorial de %d es: %llu\n",x,r);

Sleep(2000);

}

if(opc2 == 2){

system("cls");

marco(28,5,88,17,205,186);

gotoxy(30,8);printf("Ingresa el numero al que le quieres sacar factorial: ");

scanf("%d",&x);

r = 1;

for(int i=1;i<=x;i++){

r = r*i;

}

gotoxy(30,10);printf("El factorial de %d es %llu",x,r);

Sleep(2000);

}

break;

case 2:

opc2 = menuinterno();

if(opc2 == 1){

system("cls");

marco(18,5,80,17,205,186);

gotoxy(30,8);printf("Cuantos elementos de la serie quieres? ");

scanf("%d",&x);

for(int i=0;i<x;i++){

y = fibonacci(i);

gotoxy(i*5+30,10);printf(" %-3d, ",y);

Sleep(500);

}

Sleep(2000);

}

if(opc2 == 2){

system("cls");

marco(18,5,80,17,205,186);

gotoxy(30,8);printf("Cuantos

...

Descargar como (para miembros actualizados) txt (26 Kb) pdf (84 Kb) docx (32 Kb)
Leer 7 páginas más »
Disponible sólo en Clubensayos.com