Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ofertas en Spa El DF
1 Oferta Genial x Día
Mejores Spas y Retiros Del DF!
www.GROUPON.com.mx/Ciudad-de-Mexico
C++ Database
High Scalability, High Availability
Large Data Sets, High Performance
www.versant.com/objectdatabase
Learn C Programming
Basic-Advanced Programming Courses
Easily Learn to Program in C -Fast!
www.e-learningcenter.com
//http://www.inguta.cl/wp/?p=280
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
void ingresar_grafo();
void imprimir_grafo();
int w =0;
int n;
typedef struct nodo
{
int dato;
struct nodo *sgte;
}nodo;
nodo *vector[20],*actual;
main()
{int opcion;
do
{
system("CLS");
printf("\n\t\t\t\t***MENU***\n");
printf("\n\n Diagrama De Pert\n");
printf("\n * Solo trabajar con numeros *\n\n");
printf("\n 1.- Ingresar Nodos");
printf("\n 2.- Imprimir Diagrama:");
printf("\n 3.- SALIR");
printf("\n\n Ingrese una opcion: ");
cin>>opcion;
if(opcion>3 || opcion<0)
{
printf("\n Opcion NO VALIDA concentrese porfavor");
printf("\n\n ** PRESIONE CUALQUIER TECLA PARA VOLVER AL MENU **");
getch();
}switch(opcion)
case 1:
ingresar_grafo();
break;
case 2:
imprimir_grafo();
break;
case 3:
opcion=0;
}
}while(opcion!=0);
getch();
}void ingresar_grafo()
{
int i,m,j,valor, x[20],y[20];
printf( "Ingrese n: ");
cin>>n;
for(i=0;i<n;i++)
adyacente:
{
y[i]=i+1;
if(i==n-1)
{
printf("\n\nNodo final\n");
}printf("Ingrese numero de vertices adyacentes a %d:",i+1);
cin>>m;
if(i==n-1)
{
m=0;
printf("No Se Puede Poner Un Nodo Adyacente Al Nodo
Final\n\n");
getch();
}if(m==0 && i!=n-1)
{
printf("Debe Se alar a Un Nodo\n\n");
�
getch();
goto adyacente;
}for(j=0;j<m;j++)
{
intenta:
printf("Ingrese vertice:");
cin>>valor;
if(valor==i+1)
{
printf("No Puedes Apuntar Al Mismo
Nodo\n\n");
goto intenta;
}x[j]=valor;
if(valor==1)
{
printf("No Puedes Apuntar Al Nodo
Inicio\n\n");
goto intenta;
}if(valor>n||valor<1)
{
printf("No Puedes Crear Mas Nodos De Los
Preestablecidos\n\n");
goto intenta;
}for(int h=0 ;h!=j;h++)
if(x[h]==x[j])
{
printf("No Puedes Apuntar 2
veces A Un Nodo\n\n");
goto intenta;
}
}if(i>2)
Enlaces
Foro
GrafCreativo
Trukazo
Universidad Tarapaca
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void buscar();
void bpp();
void ingresar_grafo();
void imprimir_grafo();
nodo *vector[5]={NULL,NULL,NULL,NULL,NULL},*actual;
int marca[5];
int n;
main()
{
int opcion;
fflush(stdin);
do
{
system("color ");
system("CLS");
printf("\n\t\t\t\t***MENU***\n");
printf("\n\n Trabajo Grafos\n");
printf("\n * Solo trabajar con numeros *\n\n");
if(opcion>4)
{
printf("\n Opcion NO VALIDA concentrese porfavor");
printf("\n\n ** PRESIONE CUALQUIER TECLA PARA VOLVER AL MENU **");
getch();
}
switch(opcion)
{
case 1:
ingresar_grafo();
break;
case 2:
imprimir_grafo();
break;
case 3:
buscar();
break;
case 4:
exit(0);
}
}
while(opcion!=0);
getch();
}
void ingresar_grafo()
{
int i,m,j,valor;
printf( "ingrese n: ");
scanf("%d",&amp;amp;amp;amp;n);
for(i=0;i<n;i++)
{
printf("Ingrese numero de vertices adyacentes a %d:",i+1);
scanf("%d",&amp;amp;amp;amp;m);
for(j=0;j<m;j++)
{
printf(" Ingrese vertice:");
scanf("%d",&amp;amp;amp;amp;valor);
actual = (nodo *) malloc(sizeof(nodo));
actual->dato = valor;
actual->sgte = vector[i];
vector[i] = actual;
}
}
}
void imprimir_grafo()
{
int i;
for(i=0;i<5;i++)
{printf("\nAdyacente al nodo %d: ",i+1);
actual=vector[i];
while(actual != NULL)
{
printf("% d", actual->dato);
getch();
actual = actual->sgte;
}
}
void bpp(int i)
{
int v;
marca[i]=1;
printf("\n Es: %d",i+1);
getch();
actual=vector[i];
while(actual!=NULL)
{
if(marca[actual->dato-1]==0)
bpp(actual->dato-1);
actual = actual->sgte;
}
}
void buscar()
{
int i,v;
for(i=1;i<n;i++)
marca[i]=0;
for(v=0;v<n;v++)
{
if(marca[v] == 0)
bpp(v);
}
}
saludos
Publicado en C
walter dice:
Deja un comentario
Nombre (requerido)