Problem beim Vektor durchlauf



  • Hallo zusammen!
    Ich bin sehr, sehr grün was C angeht und würde mich freuen wenn mir einer von euch weiterhelfen kann.

    Mein Problem:
    Ich frage dem Benutzer nach einer zahl.
    Danach durchlaufe ich einen ansteigenden geordneten Vektor und halte dann an wenn der aktuelle wert vom vektor kleiner ist als die eingegebene zahl und die nächste zahle im vektor größer ist als die angegebene.
    Danach will ich rausfinden welche näher an der eingegebenen zahl dran ist.
    Hoffe es kann einer meine idee verstehen und mir weiterhelfen 🙂
    Schönen Dank vorweg.
    MfG



  • Zeig doch mal deinen Ansatz.



  • Ich habe es schon auf etlichen weisen versucht es hat aber nie geklappt.
    Mein vorschlag:

    printf("Zahl eingeben:");
           scanf("%d", &nom);
             for(i=0; i<num; i++)
              { 
                if (nom>=resist[i] && nom<=resist[i+1])
                 x=nom-resist[i];
                 z=resist[i+1]-nom;
                  if (x>z)
                   printf("%d ist am nahesten!", resist[i+1]); 
               i=100;
              }
    

    Hier komme ich jetzt nicht mehr weiter.
    Danke für deine Hilfe.
    MfG



  • Erstens: Da fehlt eine Abfrage für den Fall x<=z.

    Zweitens: Die if()-Bedingungen beziehen sich nur auf die jeweils nächste Anweisung. Wenn du mehrere Anweisungen zu einem if() zuordnen willst, mußt du die in geschweifte Klammern {...} setzen.

    Drittens: Die Lösung ist recht langsam. Du solltest auch ausnutzen, daß dein Array sortiert ist (Stichwort: binäre Suche).

    Viertens: Statt dem "i=100;" (wenn du Pech hast, landest du damit in einer Endlosschleife) solltest du lieber per "break;" aus der Schleife rausgehen.

    Fünftens: Kauf dir mal einen Duden - die Steigerung von "nah" ist "am nächsten" und mit der Großschreibung scheinst du auch Probleme zu haben 😃


Anmelden zum Antworten