Z
Da ich nicht ganz verstehe was du wirklich berechnen will biete ich einmal zwei mögliche Varianten an. Soll nur das Prinzip verdeutlichen. Fehlerbehandlung wenn nichts gefunden wird musst du selbst einbauen.
#include "stdio.h"
#include "math.h"
const float a[22]={10.2,13.5,17.2,21.3,26.9,33.7,42.4,48.3,60.3,76.1,88.9,114.3,139.7,168.3,219.1,273,323.9,355.6,
406.4,457,508,610};/* die Tabelle wo ich der aproximative wert zu (dv1)suche*/
float get_next_bigger( float d ) {
int idx=0;
while ( idx < 22 ) {
if ( a[idx] > d )
break;
idx++;
}
return a[idx];
}
float get_least_deviating( float d ) {
int residx=0;
float delta = a[0] - d;
int idx;
for ( idx = 0; idx < 22; idx++ ) {
if ( fabs( d - a[idx] ) < fabs( delta ) ) {
residx = idx; delta = d - a[idx];
}
}
return a[residx];
}
dvwahl() {
const int ms=18,alpha=45,dr=38;
const float pi=3.14;
float dv1=((dr+ms)*360/(alpha*pi));
printf("der berechnete dv ist: dv=%.2f\n", dv1 );
printf("der nächst grüssere dv ist: dv=%.2f\n",get_next_bigger(dv1));
printf("der am wenigsten abweichende dv ist: dv=%.2f\n",get_least_deviating(dv1));
}
int main() {
dvwahl();
}
Kurt