Neuronen und Vektoren in C: Programmierbeispiele mit Lösungen
Neuronas
Neuronas
Das folgende C-Programm simuliert ein einfaches Neuron. Es liest fünf Eingabewerte und fünf Gewichte ein, berechnet die gewichtete Summe und prüft, ob diese den Schwellenwert überschreitet.
#include <stdio.h>
int main() {
int entrada[5], pesos[5], limite, i;
putchar('\n');
for (i = 0; i < 5; i++) {
printf("Eintrag %d: ", i);
scanf("%d", &entrada[i]);
}
putchar('\n');
for (i = 0; i < 5; i++) {
printf("Gewicht %d: ", i);
scanf("%d", &pesos[i]);
}
putchar('\n');
printf("Limit: ");
scanf("%d", &limite);
putchar('\n');
if (neurona_activa(entrada, pesos, limite))
printf("Das Neuron ist aktiv.");
else
printf("Das Neuron ist nicht aktiv.");
getchar();
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);
}Vektor
VEKTOR
Das folgende Programm führt Vektoroperationen durch: Addition und Subtraktion, Multiplikation mit einem Skalar, Kreuzprodukt, Skalarprodukt und Betrag (Modul).
#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], signed char signo);
void trasponer(double v1[3]);
void escalar(double v1[3], double v2[3], double n);
void vector(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 n;
double v1[3], v2[3], v3[3];
char signo;
double num;
printf("Geben Sie die Werte des Vektors v1:\n");
leer(v1);
printf("\n");
printf("Geben Sie die Werte des Vektors v2:\n");
leer(v2);
printf("\n");
printf("Geben Sie die Werte des Vektors v3:\n");
leer(v3);
printf("\n");
printf("Geben Sie den Wert des Skalars ein: ");
scanf("%d", &n);
getchar();
printf("\n");
printf("Geben Sie das Vorzeichen ein (+ oder -): ");
signo = getchar();
suma_resta(v1, v2, v3, signo);
printf("Das Ergebnis der Summe ist: ");
imprimir(v3);
printf("\n");
trasponer(v1);
printf("\nDer Wert der Transponierung ist: ");
imprimir(v1);
printf("\n");
vector(v1, v2, v3);
printf("\nDer Wert des Kreuzprodukts ist %lf %lf %lf", v3[0], v3[1], v3[2]);
num = producto_escalar(v1, v2);
printf("\nDer Wert des Skalarprodukts ist %lf", num);
escalar(v1, v3, n);
printf("\nDas Produkt mit dem Skalar ist: ");
imprimir(v3);
printf("\nDer Betrag ist: %lf\n\n", modulo(v1));
system("pause");
return 0;
}ID-Berechnung (DNI-Buchstabe)
ID:
Das folgende Programm berechnet den Kontrollbuchstaben einer spanischen Personalausweisnummer (DNI) anhand des Restes der Division durch 23.
#include <stdio.h>
int main() {
unsigned long int id;
char letra;
puts("Ein ---> SEPA Ihre ID <---\n");
printf("Ausweisnummer eingeben: ");
scanf("%lu", &id);
switch (id % 23) {
case 0: letra = 'T'; break;
case 1: letra = 'R'; break;
case 2: letra = 'W'; break;
case 3: letra = 'A'; break;
case 4: letra = 'G'; break;
case 5: letra = 'M'; break;
case 6: letra = 'Y'; break;
case 7: letra = 'F'; break;
case 8: letra = 'P'; break;
case 9: letra = 'D'; break;
case 10: letra = 'X'; break;
case 11: letra = 'B'; break;
case 12: letra = 'N'; break;
case 13: letra = 'J'; break;
case 14: letra = 'Z'; break;
case 15: letra = 'S'; break;
case 16: letra = 'Q'; break;
case 17: letra = 'V'; break;
case 18: letra = 'H'; break;
case 19: letra = 'L'; break;
case 20: letra = 'C'; break;
case 21: letra = 'K'; break;
case 22: letra = 'E'; break;
}
printf("Nach seiner Buchstabe ist der Steuerbuchstabe: %c\n", letra);
return 0;
}