For-Schleife für den Switch-Case



  • [quote="_matze"]

    Source2702 schrieb:

    Ungetestet:

    for(int i = 1; i < 121; i++){
      sprintf(UD->string, "d%03d", i-1);
    }
    

    So läuft es nicht, weil FD->numb nicht berücksichtigt wurde!



  • [quote="skyforce"]

    _matze schrieb:

    Source2702 schrieb:

    Ungetestet:

    for(int i = 1; i < 121; i++){
      sprintf(UD->string, "d%03d", i-1);
    }
    

    So läuft es nicht, weil FD->numb nicht berücksichtigt wurde!

    Du musst ja auch nicht alles 1:1 kopieren. Aber die Idee sollte doch klar werden. Kannst du dir nicht selber denken, wo genau du jetzt dein FD->numb unterbringen musst? Dein Riesen-switch kannst du jedenfalls mit einer Zeile abfrühstücken (Tipp: du brauchst auch keine for-Schleife).



  • Ich habe grad das hier probiert:

    sprintf(UD->string,"d%03d",(FD->numb));
    

    Das macht nicht genau das was ich will, aber für mein Vorhaben reicht das.
    Ich bin ein absoluter Neuling in Sachen Programmieren, komm mit den ganzen Codes von Zemax nicht ganz klar.



  • ...



  • Das sollte doch genau das machen, was du mit deinem switch-Statement gezeigt hast. 😕



  • Naja ich will ja nur 121 Variablen definieren. Mit dieser Zeile definiert er die größtmögliche Anzahl an Variablen nämlich 242. aber egal vielen Dank für eure Hilfe!!



  • ...



  • Ich hab im 1. Post geschrieben, dass ich 121 Cases (Fälle) definieren möchte.
    Aber es ist nicht schlimm.

    Das ganze ist ein DLL, welche eine 3D-Fläche (B-Splines) definiert, und später in das Optik-Programm Zemax eingebaut werden soll. Für die Fläche brauche ich 121 Kontrollpunkte als Variablen, deswegen muss ich diese Variablen definieren. Es ist nicht schlimm wenn es mehr wird, dann verwende ich einfach nur 121, der Rest bleibt 0. Und "numb" geht bis max 242

    1000 Dank nochmal für Eure Hilfen!



  • Ok, so wird das nix. Du musst dringend lernen, dich klar auszudrücken. Für das, was du bislang gezeigt hast, haben wir dir soweit wie möglich eine Entsprechung gezeigt, die deine paar Hundert Zeilen in einer einzigen abbildet. Und jetzt redest du irgendwas von "121 Variablen definieren". Das habe ich aus deinem Eingangspost und vor allem aus deinem Code nicht herauslesen können. Du solltest mal wirklich deutlich sagen, welche Daten du in welchem Format brauchst. Beschreibe das mal ganz genau, und liefere den Typ von "UD" gleich mal mit. Ich bin sicher, wir können dir zeigen, wie du mit wenigen Zeilen deine Daten zusammengebastelt kriegst. Du musst uns halt nur vernünftig vermitteln, was du eigentlich brauchst.



  • Vielen Dank für den Hinweis

    Ehrlich gesagt verstehe ich noch nicht alles was in einer DLL drin steht. Zemax liefert ein paar Beispiele mit, damit man sich die Codes anschauen kann. Zemax will aber nicht alles preisgeben. Mein Problem ist soweit gelöst, von daher kann man den Thread jetzt schließen.


  • Mod

    Wieso braucht man dafür case Blöcke?

    sprintf(UD->string, "d%02d", FD->numb-1);
    


  • Martin Richter schrieb:

    Wieso braucht man dafür case Blöcke?

    Weil er seinen Code nur ausgeführt haben will, wenn

    1 <= FD->numb <= 121
    

    gilt.

    Im fehlt also noch ein simples "if".


Anmelden zum Antworten