ein Wert mit Z.B 20 werte vergleichen,die auf eine Tabelle sind.



  • kann vielleicht mir jemanden helfen!!!!

    aslo mein Problem besteht darin ,dass ich ein Wert(dv1) schon gerechnet habe und ich will diesen Wert mit Werte die in einer Liste(Tablle) sind,vergleichen und der größere approximative wert zu (dv1) aus der Liste ausgeben.
    Z.B habe ich dv1=22,2 und die Tabelle enthält folgende Werte{10.5,20,22,23.2....}das Programm soll mir den Wert 23.2 als größere approximative im vergleich zu dv1=22.2 Wert liefern.

    Es wäre sehr nett wenn jemand mir eine lösung vorschlagen oder eine Funktion wie Vergleich im Excel.

    Beßte Grüße. 🙂



  • Wo genau liegt das Problem?
    Weißt du nicht wie man die Elemente (Einträge) eines Arrays (Tabelle) einzeln anspricht? Oder weißt du nicht wie du auf den Wert kommst?



  • engentlich habe ich ein Programm geschrieben dass ein Durchmesser eines Rohres berechnet kann.und ich habe eine Tabelle,die die Durchmessserwerte enthält, die auf dem Markt vorhanden sind.(Tabelle hier entspricht eine Matrix mit 3 Spalten und 50 zeilen).was ich genau will,dass die Tabelle als Reference zu dem berechneten Durchmesser sei,der mit meinem Programm zuerst gerechnet habe.

    dank im Voraus.



  • Also das Zusammenspiel zwischen deinem berechneten Wert und der Tabelle verstehe ich noch nicht so recht.

    Willst du einen Wert in der Tabelle (Matrix) ermitteln, der am nächsten an deinem berechneten Wert dran liegt?

    Kannst du mal ein Beispiel geben? (Mit einer 3 x 3 Matrix z. B.; "müssen" nicht alle 50 Zeilen sein ;))



  • also was ich genau brauche,ist eine Funktion in "C" die mir der minimale Wert in einem Array bestimmen kann.

    Danke im Voraus 🙂 👍



  • Na dann geh doch einfach jedes Element in deinem Array durch und prüfe ab, ob es größer ist.
    Wenn ja, dann ist das vorhergehende Element dein gesuchtes Element.



  • also ich stelle mein code im Netz und sag mir bitte was mir fehlt.oder was ich machen soll.
    Danke sehr.

    dvwahl()
    {
    const int ms=18,alpha=45,dr=38;
    const float pi=3.14;
    int i;
    float diff[21];
    float MIN;
    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*/

    dv1=((dr+ms)*360/(alpha*pi));

    for(i=0;i<21;i++)

    {
    diff[i]=dv1-a[i];
    diff[i+1]=dv1-a[i+1];
    diff[i+2]=dv1-a[i+2];

    if(diff[i]<=dv1)
    {
    MIN=diff[i];
    }
    else{
    dv=MIN;
    }
    printf("gewaehlte dv ist:dv=%.2f",dv);

    }

    }



  • Bitte Code immer zwischen den CodeTags schreiben.
    Unter dem Fenster, siehst du doch den Knopf "C/C++".
    Diesen drücken, Code schreiben und Knopf drücken.

    Gut, ich versuch das jetzt mal runterzubrechen.

    float approximate(float*, float, int size);
    
    int main() {
      float DurchschnittsWerte[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};
    
      float approx = approximate(DurchschnittsWerte, 22.3, 22);
    
      return 0;
    }
    
    float approximate(float* pWerte, float Wert, int size) {
      // Wir gehen alle Einträge des Arrays durch.
      for(int i = 0; i < size; ++i) {
        // Da dieses Array geordnet ist folgt dieses:
        // Ist der Wert im Array > als unser Wert,
        // so ist das vorhergehende Element unser gesuchtes Element.
        if(pWerte[i] > Wert)
          // Und wir geben es einfach zurück.
          return pWerte[--i];
      } 
      // Sollte nichts gefunden werden, gibt's ne 0.0.
      return 0.0;
    }
    


  • 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


Anmelden zum Antworten