Ejemplos de Programación en C: Neuronas, Vectores y DNI

Enviado por Comunidad Xuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 4,82 KB

Modelo Simple de Neurona en C

Este código implementa un modelo muy básico de neurona artificial, calculando la suma ponderada de entradas y comparándola con un umbral para determinar si la neurona se activa.

#include <stdio.h>

int main() {
  int Entrada[5], Peso[5], limite, i;

  putchar('\n');
  for (i = 0; i < 5; i++) {
      printf("Entrada %d: ", i);
      scanf("%d", &Entrada[i]);
  }

  putchar('\n');
  for (i = 0; i < 5; i++) {
      printf("Peso %d: ", i);
      scanf("%d", &Peso[i]);
  }

  putchar('\n');
  printf("Limite: ");
  scanf("%d", &limite);

  putchar('\n');

  if (Neurona_activa(Entrada, Peso, limite))
     printf("La neurona se activa.\n");
  else
     printf("La neurona NO se activa.\n");

  // getch(); // Esta función no es estándar y puede causar problemas en algunos entornos

  return 0;
}

int Neurona_activa(int X[5], int W[5], int umbral) {
  int i = 0, suma = 0;
  for (; i < 5; i++)
      suma += X[i] * W[i];
  return (suma > umbral);
}

Operaciones con Vectores en C

Este programa demuestra diversas operaciones comunes con vectores tridimensionales, como lectura, impresión, suma/resta, intercambio, producto escalar y vectorial, y cálculo del módulo.

#include <stdio.h>
#include <math.h>

void leer(double v[3]);
void imprimir(double v[3]);
void suma_resta(double v1[3], double v2[3], double v3[3], char signo);
void intercambia(double v1[3]);
void escalar(double v1[3], double v2[3], double n);
void vectorial(double v1[3], double v2[3], double v3[3]);
double producto_escalar(double v1[3], double v2[3]);
double modulo(double v[3]);

int main(){
    int i, n, p;
    double v1[3], v2[3], v3[3];
    char signo;
    double num;

    printf("Introduzca los valores del vector v1:\n");
    leer(v1);
    printf("\n");

    printf("Introduzca los valores del vector v2:\n");
    leer(v2);
    printf("\n");

    printf("Introduzca los valores del vector v3:\n");
    leer(v3);
    printf("\n");

    printf("Introduzca el valor del escalar n: ");
    scanf("%d", &n);
    getchar(); /* se lee el carácter "\n" */
    printf("\n");

    printf("Introduzca el valor del signo (+/-): ");
    signo = getchar(); /* Es mejor "getchar()" que "scanf()" en este caso */

    suma_resta(v1, v2, v3, signo);
    printf("Resultado de la suma/resta es: ");
    imprimir(v3);
    printf("\n");

    intercambia(v1);
    printf("\nEl vector v1 intercambiado es: ");
    imprimir(v1);
    printf("\n");

    vectorial(v1, v2, v3);
    printf("\nEl producto vectorial es: %lf %lf %lf\n", v3[0], v3[1], v3[2]);

    num = producto_escalar(v1, v2);
    printf("\nEl producto escalar es: %lf\n", num);

    escalar(v1, v3, n);
    printf("\nEl vector v1 escalado por %d es: ", n);
    imprimir(v3);
    printf("\n");

    printf("El módulo del vector v1 es: %lf\n\n", modulo(v1));

    // system("pause"); // Esta función no es estándar y puede causar problemas en algunos entornos

    return 0;
}

// Implementaciones de las funciones (faltan en el código original, se asume que existen)
/*
void leer(double v[3]) { ... }
void imprimir(double v[3]) { ... }
void suma_resta(double v1[3], double v2[3], double v3[3], char signo) { ... }
void intercambia(double v1[3]) { ... } // Asume intercambio de componentes, e.g., v[0] <-> v[2]
void escalar(double v1[3], double v2[3], double n) { ... } // Asume v2 = v1 * n
void vectorial(double v1[3], double v2[3], double v3[3]) { ... } // Asume v3 = v1 x v2
double producto_escalar(double v1[3], double v2[3]) { ... }
double modulo(double v[3]) { ... }
*/

Cálculo de la Letra del DNI en C

Este código calcula la letra correspondiente a un número de DNI español utilizando el algoritmo basado en el módulo 23.

#include <stdio.h>

void main() {
    char NIF;
    unsigned long int DNI;

    puts("\n---> SEPA su NIF <---\n");
    printf("\t-Dime tu número de DNI: ");
    scanf("%lu", &DNI);

    switch (DNI % 23) {
        case 0: NIF = 'T'; break;
        case 1: NIF = 'R'; break;
        case 2: NIF = 'W'; break;
        case 3: NIF = 'A'; break;
        case 4: NIF = 'G'; break;
        case 5: NIF = 'M'; break;
        case 6: NIF = 'Y'; break;
        case 7: NIF = 'U'; break;
        case 8: NIF = 'P'; break;
        case 9: NIF = 'D'; break;
        case 10: NIF = 'X'; break;
        case 11: NIF = 'B'; break;
        case 12: NIF = 'N'; break;
        case 13: NIF = 'J'; break;
        case 14: NIF = 'Z'; break;
        case 15: NIF = 'S'; break;
        case 16: NIF = 'Q'; break;
        case 17: NIF = 'V'; break;
        case 18: NIF = 'H'; break;
        case 19: NIF = 'L'; break;
        case 20: NIF = 'C'; break;
        case 21: NIF = 'K'; break;
        case 22: NIF = 'E'; break;
    };

    printf("\n\t- La letra de su NIF es: %c\n", NIF);
}