You are on page 1of 3

REALIZACION DE LA ESTRUCTURA DE UNA RED NEURONAL PROGRAMADA EN

LENGUAJE C
GARCIA SERRATOS JAVIER
RAMOS RAMIREZ IGNACIO
#include
#include
#include
#include

<stdio.h>
<stdlib.h>
<math.h>
<time.h>

typedef struct _sinapsis{


double peso;
void *conexion;
}sinapsis;
typedef struct _neurona{
int dato;
sinapsis *conexion;
struct _neurona *sig;
}neurona;
void datos(int *tamCE,int *tamCO,int *tamCS);
neurona *crear(int tam);
void crearConexion(neurona *capaEntrada,neurona *capaOculta,int tamCO);
void crearSinapsis(sinapsis *temp,neurona *capaOculta,int tamCO);
void imprimirNeurona(neurona *capa);
void imprimirSinapsis(neurona *temp,int tamCO,int i);
float numerosAleatorios();
void main(){
int tamCE,tamCO,tamCS;
datos(&tamCE,&tamCO,&tamCS);
neurona *capaEntrada=crear(tamCE);
neurona *capaOculta=crear(tamCO);
neurona *capaSalida=crear(tamCS);
crearConexion(capaEntrada,capaOculta,tamCO);
crearConexion(capaOculta,capaSalida,tamCS);
}
void crearConexion(neurona *capaEntrada,neurona *capaOculta,int tamCO){
if(capaEntrada != NULL){
sinapsis *temp=(sinapsis *)malloc(sizeof(sinapsis)*tamCO);
crearSinapsis(temp,capaOculta,tamCO);
capaEntrada->conexion=temp;
imprimirSinapsis(capaEntrada,tamCO,0);
crearConexion(capaEntrada->sig,capaOculta,tamCO);
}

}
void imprimirSinapsis(neurona *capa,int tamCO,int i){
if(tamCO >0){
sinapsis *temp=capa->conexion;
printf(" Neurona : %d Peso: %f ",capa->dato,(temp+i)->peso);
neurona *temp2=(temp+i)->conexion;
printf(" -> %d\n",temp2->dato);
imprimirSinapsis(capa,tamCO-1,i+1);
}
}
float numerosAleatorios(){
srand(clock());
float Q;
Q=sin(rand()%361);
return Q;
}
void crearSinapsis(sinapsis *temp,neurona *capaOculta,int tamCO){
if(tamCO >0){
temp-> peso=numerosAleatorios();
temp->conexion=capaOculta;
crearSinapsis(temp+1,capaOculta->sig,tamCO-1);
}
}
void imprimirNeurona(neurona *capa){
if(capa != NULL){
printf("%d -> ",capa->dato);
imprimirNeurona(capa->sig);
}
}
neurona *crear(int tam){
if(tam==0){
return NULL;
}else{
int a;
neurona *nuevo=(neurona *)malloc(sizeof(neurona));
printf("\ningrese dato: ");
scanf("%d",&a);
nuevo->dato=a;
nuevo->sig=crear(tam-1);
return nuevo;
}
}

void datos(int *tamCE,int *tamCO,int *tamCS){


printf("ingrese el tamanio de la capa de entrada: ");
scanf("%d",tamCE);
printf("ingrese el tamanio de la capa oculta: ");
scanf("%d",tamCO);
printf("ingrese el tamanio de la capa de salida: ");
scanf("%d",tamCS);
}

You might also like