Vektorennormen

Neue Frage »

Auf diesen Beitrag antworten »
Roflcopter789456 Vektorennormen

Hallo,

ich habe die Aufgabe, ein Programm zu schreiben, dass drei verschiedene Vektornormen berechnet.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>


int main ()

{
   int Wahl; 
printf("Programm zur Berechnung von Vektornormen\n");
printf("Bitte wählen Sie eine der Normen\n");
printf("Summennorm(1),Euklidische Norm(2), oder Maximalnorm(3)");
scanf("%d" , &Wahl);

if (Wahl == 2);
int n;
printf("Bitte geben Sie die Größe des Vektors N ein\n");
scanf("%d" , &n);
{
double norm (int n, double v[n])
{
int quadrat, i;
double wurzel;

quadrat = 0;
for (i = 0;i<n; i++)
{
quadrat = quadrat + ((v[i])*(v[i]));
}

wurzel = sqrt(quadrat);

return(wurzel);
}

{
    
    double x[n];
    int i;
    double euklidnorm;
    
  
    printf("Bitte geben Sie %d Zahlen ein\n" , n);
    for (i=0; i<n; i++)
        
    {
        printf("Zahl %d: ", i+1);
        scanf("%lf", &x[i]);
    }
    euklidnorm = norm(*x);
    
    printf("Norm = %5.21f" , euklidnorm);
    printf("\n");
    }
    }
if (Wahl == 1)
{
    double einsnorm ( int n, double *v)
    {
        double Ergebniss = 0;
        int i;
    for( i = 0; i < n; ++i)
    Ergebniss =Ergebniss + fabs(v[i]);
    return (Ergebniss);
    }

    {
        double *x;
        int i, n;
        printf("Geben Sie die Länge N ihres Vektors ein;\n");
        scanf("%d", &n);
        x = malloc(n * sizeof(double));
        for( i = 0; i < n; ++i)
        {
            printf("Geben sie x %d ein:\n", i+1);
            scanf("%lf", &x[i]);
        }
      
        printf("Die Summennorm ihres Vektors ist: %lf\n", einsnorm(n, x));
        return 0;
    }
}

if (Wahl == 3)

{

    int i,n,Adresse = 1;
    double Maximum,*v;
    
   printf("Geben Sie die Länge des Vektors N ein\n");
   scanf("%d" , &n);
   
   printf("Geben Sie %d Zahlen ein\n" , n);
   
   for(i = 0 ;i < n;i++)
       scanf("%lf", &v[i]);
   
   Maximum = v[0];
   
   for(i = 1;i < n;i++)
   {
   if (v[n] < Maximum)
   {
       Maximum = v[i];
       Adresse = i+1;
   }
   }
   printf("Der Maximale Betrag ist in Adresse %d und lautet %lf.\n",Adresse,Maximum);
   return 0;
}
}


Allerdings habe ich das Problem , dass ich bei der zweiten Norm(Euklid) eine Fehlermeldung bekomme



Vektorennorm.c:50:18: error: too few arguments to function 'norm'
euklidnorm = norm(*x)

Vektorennorm.c:20:8: note: declared here
double norm (int n, double v[n])


Ich habe bereits einiges versucht und umgeschrieben , jedoch ohne Erfolg.

Das Programm habe ich ursprünglich nur für die Euklidnorm geschrieben , wobei dann noch alles funktioniert hat.



Könnte mir jemand vllt. helfen?
 
 
Neue Frage »
Antworten »


Verwandte Themen