Optimierung



  • Hallo,

    printf("Wert 0); //5 Werte einlesen
    scanf("%f",&a0);
    printf("Wert 1);
    scanf("%f",&a1);
    printf("Wert 2);
    scanf("%f",&a2);
    printf("Wert 3);
    scanf("%f",&a3);
    printf("Wert 4);
    scanf("%f",&a4);
    printf("Wert 5);
    scanf("%f",&a5);
    
    // Jetzt will ich abfragen ob die einzelnen Werte != 0 sind
    // Da das 6 Werte sind gibt es ziemlich viele Möglichkeiten wie die Sache
    //ausgeht. Da müsste man ja auch ziemlich viele if-else Verzweigungen 
    //schreiben um alle Möglichkeiten abzudecken.
    

    Gibt es eine Möglichkeit diese Werte ohne if-else abzufragen?

    Danke im Vorraus



  • if (a0 != 0 && a1 != 0 && a2 != 0 && a3 != 0 && a4 != 0 && a5 != 0) ;

    Ohne vergleiche geht ein Vergleich nunmal nicht.



  • das heißt also:

    a5!=0:1111100000.... usw. bis alle Möglichkeiten abgedeckt sind ? 🙄
    a4!=0:1111001000...
    a3!=0:1110001100...
    a2!=0:1100001110...
    a1!=0:1000001111....



  • TheSilence schrieb:

    das heißt also:

    a5!=0:1111100000.... usw. bis alle Möglichkeiten abgedeckt sind ? 🙄
    a4!=0:1111001000...
    a3!=0:1110001100...
    a2!=0:1100001110...
    a1!=0:1000001111....

    kapier ich nicht... ich dachte du willst wissen ob alle Werte ungleich 0 sind?

    Was willst du denn wissen?? (auf was willst du die Werte testen)



  • Ich weiß ja nicht, aber du wirst sicher nicht alle 2^6 mögliche Kombinationen
    benötigen



  • Ich hoffe ich habe deine Frage richtig verstanden, aber du könntest auch mit Arrays arbeiten:

    double array[6];
    int i;
    int flag = 0;
    
    for(i=0; i<6; ++i)
    {
      printf("Wert %i: ", i+1);
      scanf("%f", &array[i]);
    }
    
    for(i=0; i<6 && !flag; ++i)
    {
      if(array[i] == 0.0)
        flag = 1;
    }
    
    if(flag)   //wenn irgendein Wert 0 war, dann ist das flag = 1, die Bedingung also wahr
    {
      //...
      //dann mach das hier
    }
    


  • Steven schrieb:

    for(i=0; i<6 && !flag; ++i) 
    { 
      if(array[i] == 0.0) 
        flag = 1; 
    }
    

    🙄 🙄

    TheSilence schrieb:

    Gibt es eine Möglichkeit diese Werte ohne if-else abzufragen?

    @TheSilence
    Wieso willst du denn das alles ohne if machen?
    Wenn du wirklich alle kombinationen durchtesten willst wirds glaubich eher das gegenteil von optimierung. Außerdem wird der kompiler bei dem normalen if Aufruf schon mal ne menge reißen können, denk ich.


Anmelden zum Antworten