continue in C
-
SaHel schrieb:
Hallo,
ich habe ein recht einfaches Prob., das in anderen Programmiersprachen recht einfach zu lösen wäre...if (feld1 < feld2 && feld3 == feld4) ++feld1; else if (feld3 == feld4) return;
break geht auch nicht... Wie bringe ich das gute C dazu, bei "wahr" des zweiten "if" einfach weiterzumachen????
-
SaHel schrieb:
Naja und das mit dem doppelten "not" - Das arme Schwein, das dieses Programm vielleicht mal warten muss...
Warum auf eine Bedingung testen, die du gar nicht behandeln willst.
Wenn du das äußere ! nach innen ziehst, gibt es ein ==.
Und das ist leichter lesbar, als eine leere Anweisung. Da muss man meistens erklären warum die leer ist.
-
lolalterwasgeht schrieb:
Und in welcher Sprache der Welt soll ein continue außerhalb einer Schleife bitte sinnvoll sein?
In der schönsten Programmiersprache der Welt: Cobol
http://www.tek-tips.com/faqs.cfm?fid=1834READ MASTER-FILE AT END IF TOTAL-RECORD-COUNT > 0 CONTINUE ELSE PERFORM PROCESS-EMPTY-FILE END-IF SET MASTER-AT-END TO TRUE NOT AT END ADD 1 TO TOTAL-RECORD-COUNT END-READ
Gruss SaHel
-
SaHel schrieb:
lolalterwasgeht schrieb:
Und in welcher Sprache der Welt soll ein continue außerhalb einer Schleife bitte sinnvoll sein?
In der schönsten Programmiersprache der Welt: Cobol
http://www.tek-tips.com/faqs.cfm?fid=1834READ MASTER-FILE AT END IF TOTAL-RECORD-COUNT <= 0 PERFORM PROCESS-EMPTY-FILE END-IF SET MASTER-AT-END TO TRUE NOT AT END ADD 1 TO TOTAL-RECORD-COUNT END-READ
Gruss SaHel
-
Also..... ich habe den Code etwas verändert und dachte es so verständlicher darzustellen:
Folgend der Originalcode:if ((w1->decimal_point_count < w1->decimal_place) && (w1->decimal_point_set)) { w1->decimal_point_count++; } else { if (!w1->decimal_point_set) ; // war continue else return; } [...] [Bereite Eingabe auf] [...] return;
Hier geht es um ein Konstrukt, das folgendes Abdecken soll:
Sind die Anzahl Nachkommastellen nicht erreicht und ist es überhaupt eine Nachkommastelle - dann erhöhe den Nachkommazähler und mach weiter (Zeige die Eingabe an). Ist es keine Nachkommastelle, dann zeige die Eingabe auch an. Ansonsten mache nichts und return (man könnte eine Fehlermeldung ausgeben).Es eht hier um eine GUI Anwendung. Bessere Lösungen willkommen.
Gruss SaHel
-
SaHel schrieb:
In der schönsten Programmiersprache der Welt: Cobol
Der Anfang war schon super, nur das obol stört
-
SaHel schrieb:
Bessere Lösungen willkommen.
Hast du dir meine Beiträge mal durchgelesen?
Dieses if()continue else machwas ist doch total sinnlos, frag doch gleich die richtige Bedingung ab?
-
if( w1->decimal_point_set && (w1->decimal_point_count < w1->decimal_place) ) { w1->decimal_point_count++; } [...] [Bereite Eingabe auf] [...] return;
-
Wutz schrieb:
if( w1->decimal_point_set && (w1->decimal_point_count < w1->decimal_place) ) { w1->decimal_point_count++; } [...] [Bereite Eingabe auf] [...] return;
Vielen Dank - aber das ist es nicht....
Nochmal fürs Verständnis, dass ich nicht als vollkommen irrer Cobol Trottel hier erscheine:
In dieser Routine wird eine einzelne, eingegebene Ziffer untersucht. Dass es sich um eine gültige Ziffer handelt ist bereits validiert. Jetzt gibt es für diese Ziffer drei Interpretationsmöglichkeiten.
1. Handelt es sich um eine Vorkommaziffer
2. Handelt es sich um eine Nachkommaziffer
3. Ist es eine Nachkommaziffer und hat den Range (Anzahl Nachkommastellen) überschritten, so ist es eine fehlerhafte EingabeBei (2) muss der Nachkommastellenzähler erhöt werden
Die Ziffer wird dann auf einem extra Anzeigescreen (Man kann sich das wie beim Druck auf eine Taste auf einem Taschenrechner vorstellen, wo die entsprechende Ziffer im Display dann dargestellt wird) angezeigt. Gleichzeitig wird ein long long int Feld um diesen Wert erhöht(*10 + Ziffer), da damit gerechnet werden muss.
Klar - muss jetzt nicht jeder verstehen, aber ihr habt mir sehr geholfen.
Schönen Abend und Gruss
SaHel
-
Soll das heißen du schreibst immer noch
if (..) ; else return;
? Oh man, ich geb's auf.
-
cooky451 schrieb:
Soll das heißen du schreibst immer noch
if (..) ; else return;
? Oh man, ich geb's auf.
Nein ich habe das ! entfernt und den return direkt angegeben....
und jetzt gehe ich ein Bier trinken :xmas1:
-
if( w1->decimal_point_set ) if( w1->decimal_point_count < w1->decimal_place ) { w1->decimal_point_count++; } else return; [...] [Bereite Eingabe auf] [...] return;