String inkrementieren
-
CStoll schrieb:
Das könntest du auch in eine Schleife packen:
for(i=7;i>=0;++i) if(number[i]==0xFF) number[i]==0; else { ++number[i]; break; }
Müsste es aber nicht
int i; for(i=7;i>=0;i--) { if(number[i]==0xFF) { number[i]=0; } else { number[i]++; break; } }
heißen?
-
Guenther:
Mit dem Schleifenkopf (-- vs ++) dürftest Du Recht haben, der Rest ist allerdings identisch
-
LordJaxom schrieb:
Mit dem Schleifenkopf (-- vs ++) dürftest Du Recht haben, der Rest ist allerdings identisch
Was anderes habe ich auch nicht behauptet. Danke an alle.
Günther :xmas1:
-
Guenther schrieb:
Na wenn das keine FAQ wert ist.
Wie meinst denn das?
-
TactX schrieb:
Guenther schrieb:
Na wenn das keine FAQ wert ist.
Wie meinst denn das?
Was? Das?
Habe ich das geschrieben?
Nee, mal im Ernst. Ich dachte, so eine schöne Funktion um einen String zu erhöhen kann doch für alle diejenigen, die das gleiche Problem haben in die FAQs aufgenommen werden. Ich meine, wer hatte noch nicht das Problem, einen String zu erhöhen und wusste nicht wie?
Blöde Idee? Hm. Stimmt wohl.
Sanfte Grüße
vom Günther :xmas2:
-
Naja, soviele Leute habe ich noch nicht gesehen, die ein char-Array als Ultra-Long-Integer mißbraucht haben
Und die sind (meist) intelligent genug, sich da selber etwas zusammenzuspinnen.
Normalerweise versteht man unter einem String auch eine Zeichenkette - und die muß man bestenfalls vergleichen, durchsuchen und umbauen, aber nur in seltenen Fällen "erhöhen".
*grübelt* sollte ich vielleicht einen Artikel zum Thema "eigene Super-Int Klasse" in Angriff nehmen?
-
CStoll schrieb:
Und die sind (meist) intelligent genug, sich da selber etwas zusammenzuspinnen.
Toll, du hältst mich also für etwas blöd. Interessant.
Weniger Erfahrung + Wunsch nach einfachen Lösungen = blöd?
Günther
-
Guenther schrieb:
CStoll schrieb:
Und die sind (meist) intelligent genug, sich da selber etwas zusammenzuspinnen.
Toll, du hältst mich also für etwas blöd. Interessant.
Das nicht - nur zu ungeduldig, um selber länger nachzudenken
(dein Ansatz mit der geschachtelten if-Anweisung war schonmal nicht schlecht - und auf eine Schleife wärst du sicher auch noch gekommen (hoffe ich mal))
-
CStoll schrieb:
nur zu ungeduldig, um selber länger nachzudenken
(dein Ansatz mit der geschachtelten if-Anweisung war schonmal nicht schlecht - und auf eine Schleife wärst du sicher auch noch gekommen (hoffe ich mal))Ich habe schlicht nicht gewusst, dass man ne for-Schleife mit nem break unterbrechen kann. Die Versuche mit Rekursion und anderen Schleifen, die ich hatte, waren erfolglos oder zu kompliziert, als dass irgendjemand sie ohne größeren Aufwand hätte nachvollziehen können.
Danke trotzdem für deine Kritik.
Günther
-
Guenther schrieb:
Ich habe schlicht nicht gewusst, dass man ne for-Schleife mit nem break unterbrechen kann.
Das gehört schon fast in die Rubrik "fehlendes Grundlagenwissen" - mit einem break kommst du aus JEDER Schleife raus
-
CStoll schrieb:
Das gehört schon fast in die Rubrik "fehlendes Grundlagenwissen"
JETZT fühle ich mich schlecht.
-
Guenther schrieb:
CStoll schrieb:
Das gehört schon fast in die Rubrik "fehlendes Grundlagenwissen"
JETZT fühle ich mich schlecht.
Ärgere dich nicht, CStoll hat unrecht. Mit "break" kommt man nicht aus jeder Schleife raus.
-
@Guenther: Sorry, das war nicht beabsichtigt.
Andromeda schrieb:
Ärgere dich nicht, CStoll hat unrecht. Mit "break" kommt man nicht aus jeder Schleife raus.
Kannst du das auch belegen? Sprich: Zeig mir eine Schleife, die du nicht per break verlassen kannst.
-
Ich denke er meint, dass man mit break nur aus der inneren Schleife rausspringen kann, nicht aber aus der äußeren. Wobei das auch eine sehr esoterische Auslegung der Sache wäre.
-
CStoll schrieb:
Kannst du das auch belegen? Sprich: Zeig mir eine Schleife, die du nicht per break verlassen kannst.
Eine Schleife ist per Definition die "wiederholte Ausführung eines Programmteils". In diesem Sinne kann diese Schleife
int x = 10; loop: printf ("Hello\n"); if (x-- != 0) goto loop;
nicht mit "break" abgebrochen werden.
-
Das ist auch keine Schleife im C- Sinn, sondern primitivstes goto-Gegurke (und gehört imho sowieso verboten). Schleifen in C sind for(), while() und do-while(). Punkt.
-
Andromeda schrieb:
Eine Schleife ist per Definition die "wiederholte Ausführung eines Programmteils".
Das ist deine Definition? Oder wessen? Egal, es ist _nicht_ die Definition des ANSI C Standards.
-
Hallo ihr beiden,
CStoll schrieb:
Das ist auch keine Schleife im C- Sinn, sondern primitivstes goto-Gegurke
Nein, das ist IMHO legaler C Code.
TactX schrieb:
...es ist _nicht_ die Definition des ANSI C Standards.
Was eine Schleife ist oder nicht ist, unterliegt nicht der Zuständigkeit des ANSI C Standards. Außerdem schreibt der Standard nicht vor, daß die Konstruktion von Schleifen nur mit Hilfe der C-Kontrollstrukturen "for/while/do" erlaubt ist.
-
Andromeda schrieb:
Hallo ihr beiden,
CStoll schrieb:
Das ist auch keine Schleife im C- Sinn, sondern primitivstes goto-Gegurke
Nein, das ist IMHO legaler C Code.
Auch legaler C Code kann "Gegurke" sein. Und mit deinem goto kannst du von mir aus in Assambler weitermachen - in vernünftig strukturierten C Programmen gibt es nur SEHHR wenige Situationen, wo man es benötigt.
TactX schrieb:
...es ist _nicht_ die Definition des ANSI C Standards.
Was eine Schleife ist oder nicht ist, unterliegt nicht der Zuständigkeit des ANSI C Standards. Außerdem schreibt der Standard nicht vor, daß die Konstruktion von Schleifen nur mit Hilfe der C-Kontrollstrukturen "for/while/do" erlaubt ist.
Nein, aber break ist Bestandteil des ANSI C Standards - und bezieht sich deshalb auf die ANSI-Definition, was eine Schleife ist.
-
Hallo CStoll,
CStoll schrieb:
Auch legaler C Code kann "Gegurke" sein. Und mit deinem goto kannst du von mir aus in Assambler weitermachen...
Es ist schwer Vorurteile wieder los zu werden, aber vielleicht siehst du dir mal das hier an: http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf
CStoll schrieb:
...aber break ist Bestandteil des ANSI C Standards - und bezieht sich deshalb auf die ANSI-Definition, was eine Schleife ist.
Du mißverstehst da etwas. Der ANSI C Standard definiert sogenannte "Iteration statements", die einen Schleifenkörper haben. Aus so einem Schleifenkörper kann man mit "break" herausspringen. Er definiert nicht was Schleifen sind.