Hallo liebe Gemeinde!
Ich komme hier einfach nicht weiter und wollte die Profis hier um Hilfe bitten, bevor ich endgültig verzweifel.
Ich will ein C Programm schreiben, dass mittels 3 Funktionen Vektornormen (Summennorm, Eukl. Norm und Max. Norm) berechnet.
Eine Main soll die 3 Funktionen dann einfach nur testen, also die Funktionen aufrufen und zwar für Vektoren der Länge 100 - initialisiert mit Zufallszahlen aus [0; 1).
So, die 3 Funktionen habe ich hinbekommen, plus ein Großteil der Main. Aber irgendwie läuft es nicht ganz rund bzw. lässt sich nicht kompilieren. Probleme gibt es beim Aufrufen der Funktionen und der Compiler meckert über die RAND Funktion und den RAND_MAX Ausdruck. Komme einfach nicht weiter. Bin auch gerade erst ganz ganz frisch in die Themen Pointer und Felder eingestiegen, von daher bitte ich um Nachsicht :shiner:...
Hier mal der Quellcode:
#include <stdio.h>
#include <math.h>
#include <time.h>
enum { N = 100 }; // zeigt nur weitere Eigenschaft von Enum -> konst. Wert
double norm1(int n, double* v)
{
double v1 = 0;
for(int i = 0; i < n; i++)
{
v1 += fabs(v[i]);
}
return v1;
}
double norm2(int n, double* v)
{
double v2 = 0;
for(int i = 0; i < n; i++)
{
v2 += pow(v[i], 2);
}
v2 = sqrt(v2);
return v2;
}
double normInf(int n, double* v)
{
double vmax = v[0];
for(int i = 0; i < n; i++)
{
if(fabs(v[i]) > vmax)
vmax = v[i];
}
return vmax;
}
int main(void)
{
double v[N];
// Initialisiere v mit Zufallszahlen
// srand(time(NULL));
srand(time(NULL));
// v[N] = rand() % 2;
for(int i = 0; i < N; i++)
{
v[i] = (double)rand() / RAND_MAX;
printf("%lf", v[i]);
}
printf("Vektornorm 1: %lf\n", norm1(N, &v[i]));
printf("Vektornorm 2: %lf\n", norm2(N, &v[i]));
printf("Vektornorm Inf: %lf\n", normInf(N, &v[i]));
return 0;
}
Alles anzeigen