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.