Wie kann das in C programmieren???
-
# include <stdio.h> # include <math.h> void main() { float alfa; float beta; float erg; scanf("%f",&alfa); scanf("%f",&beta); if(beta > alfa) { /* hier soll alfa mit beta vertauscht werden. alfa soll den Wert von beta erhalten und beta den Wert von alfa. Aber das soll in einer Funktion geschehen. Darum erfolgt hier nur der Aufruf: */ swapf(&alfa, &beta); // alfa = beta; gehört hier dann nicht mehr hin. } /* die Berechnung der folgenden Funktion soll laut Aufgabenstellung in einer Funktion erfolgen erg = 0.5* sqrt(1.345*(alfa-beta)); Darum erfolgt hier nur der Aufruf: */ erg = funktion(alfa, beta); printf("%f", erg); }
-
hier eine kleine Anregung für die Funktion swapf:
void swapf(float *a, float *b){ if (a != b){ (*(int*)a) ^= *(int*)b; (*(int*)b) ^= *(int*)a; (*(int*)a) ^= *(int*)b; } }
-
und was ist, wenn sizeof(float) != sizeof(int) ist
-
mov eax, [add_a] xchg eax, [add_b] mov [add_a], eax
Ne kleiner Scherz.
void swapf(float *a, float *b) { if(a!=b) { float c=*a; *a=*b; *b=c; } }
Müsste so gehen.
-
DirkB schrieb:
und was ist, wenn sizeof(float) != sizeof(int) ist
wird schon nicht
-
Llrot schrieb:
wird schon nicht
Bei meinem Quick-C ist int 16-Bit und float 4-Byte
-
Auf SPARC64/Solaris findet man manchmal sizeof(int) == 8. Auf Crays gibt es sogar sizeof(short) == 8.
-
Warum nicht so:
if(beta > alfa) erg = funktion(beta, alfa) else erg = funktion(alfa, beta)
-
DirkB schrieb:
Bei meinem Quick-C ist int 16-Bit und float 4-Byte
wer sowas uraltes hat würde nicht so anspruchsvolle Fragen stellen
-
Llrot schrieb:
wer sowas uraltes hat ...
Das gilt dann aber auch für die Cray