Lunkens hat geschrieben:NERDFIGHT INCOMING!!!
Rangoo hat geschrieben:
Alternativ auch mit Sprungmarke, allerdings weiß ich da bei C++ nicht, inwiefern die genutzt werden dürfen und sollen.
Bei c++ "darf" man eigentlich alles.
Man sollte aber, wenn man alles macht, da ja alles erlaubt ist, immer im Hinterkopf behalten, wo man seine Variablen in den Speicher abgelegt hat, sonst springt man schnell mal von der Titten- in die Mösensektion, findet es gut, weiß aber nicht genau, warum das so gut flutschte...
Da ich durch C# inzw. verwöhnt und verweichlicht bin, muss ich an dieser Stelle auf jeden Fall aber auch mal erwähnen, dass es alleine aus Design-Pattern-Sicht heraus zum kotzen, äh ich meine, schlechter Stil ist, aus einer Schleife mit einer Sprungmarke auszubrechen.
Wer so simplifiziert vorgeht, hat über die Schleifen-Bedingung nicht richtig nachgedacht...klassisch für "fauler Sack"
Denn bei einer gut durchdachten Schleife braucht man keinen "Rauswurf" am Ende, da sie für sich ein Ende in der Bedingung ihrer Existenz findet.
(Mit Ausnahme einer Ausnahme natürlich. Aber dafür sollte jeder gute Programmierer einen Ausnahme-Bevollmächtigten eingebettet haben
)
while faulersack
verhaudich++;
until !faulersack
Grütze aus der Mütze
Torge
PS:
Kleiner Tipp @ Ricken:
-Ricken- hat geschrieben:Code: Alles auswählen
#include <iostream>
using namespace std;
int main()
{
char zeichen[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;
cout << "Bitte geben Sie eine Zeichenkette aus Kleinbuchstaben ein: ";
cin >> zeichen;
for (int i=0; zeichen[i]!='@'; i++)
{
if (zeichen[i] == 'a') b + 1;
else if (zeichen[i] == 'b') b + 1;
else if (zeichen[i] == 'c') c + 1;
else if (zeichen[i] == 'd') d + 1;
else if (zeichen[i] == 'e') e + 1;
else if (zeichen[i] == 'f') f + 1;
else if (zeichen[i] == 'g') g + 1;
else if (zeichen[i] == 'h') h + 1;
else if (zeichen[i] == 'i') i + 1;
else if (zeichen[i] == 'j') j + 1;
else if (zeichen[i] == 'k') k + 1;
else if (zeichen[i] == 'l') l + 1;
else if (zeichen[i] == 'm') m + 1;
else if (zeichen[i] == 'n') n + 1;
else if (zeichen[i] == 'o') o + 1;
else if (zeichen[i] == 'p') p + 1;
else if (zeichen[i] == 'q') q + 1;
else if (zeichen[i] == 'r') r + 1;
else if (zeichen[i] == 's') s + 1;
else if (zeichen[i] == 't') t + 1;
else if (zeichen[i] == 'u') u + 1;
else if (zeichen[i] == 'v') v + 1;
else if (zeichen[i] == 'w') w + 1;
else if (zeichen[i] == 'x') x + 1;
else if (zeichen[i] == 'y') y + 1;
else if (zeichen[i] == 'z') z + 1;
}
cout << "Der Buchstabe 'a' kommt " << a << " mal vor" << endl;
cout << "Der Buchstabe 'b' kommt " << b << " mal vor" << endl;
cout << "Der Buchstabe 'c' kommt " << c << " mal vor" << endl;
cout << "Der Buchstabe 'd' kommt " << d << " mal vor" << endl;
cout << "Der Buchstabe 'e' kommt " << e << " mal vor" << endl;
cout << "Der Buchstabe 'f' kommt " << f << " mal vor" << endl;
cout << "Der Buchstabe 'g' kommt " << g << " mal vor" << endl;
cout << "Der Buchstabe 'h' kommt " << h << " mal vor" << endl;
cout << "Der Buchstabe 'i' kommt " << i << " mal vor" << endl;
cout << "Der Buchstabe 'j' kommt " << j << " mal vor" << endl;
cout << "Der Buchstabe 'k' kommt " << k << " mal vor" << endl;
cout << "Der Buchstabe 'l' kommt " << l << " mal vor" << endl;
cout << "Der Buchstabe 'm' kommt " << m << " mal vor" << endl;
cout << "Der Buchstabe 'n' kommt " << n << " mal vor" << endl;
cout << "Der Buchstabe 'o' kommt " << o << " mal vor" << endl;
cout << "Der Buchstabe 'p' kommt " << p << " mal vor" << endl;
cout << "Der Buchstabe 'q' kommt " << q << " mal vor" << endl;
cout << "Der Buchstabe 'r' kommt " << r << " mal vor" << endl;
cout << "Der Buchstabe 's' kommt " << s << " mal vor" << endl;
cout << "Der Buchstabe 't' kommt " << t << " mal vor" << endl;
cout << "Der Buchstabe 'u' kommt " << u << " mal vor" << endl;
cout << "Der Buchstabe 'v' kommt " << v << " mal vor" << endl;
cout << "Der Buchstabe 'w' kommt " << w << " mal vor" << endl;
cout << "Der Buchstabe 'x' kommt " << x << " mal vor" << endl;
cout << "Der Buchstabe 'y' kommt " << y << " mal vor" << endl;
cout << "Der Buchstabe 'z' kommt " << z << " mal vor" << endl;
int test;
cin >> test;
return 0;
}
Falls du tatsächlich mal nicht um so eine "Massen"-Abfrage herum kommst, empfehle ich dir eine strukturierte case-Abfrage.
Ach und, mag eine Art persönlicher Geschmack sein, for-Zählschleifen sollte man auch eher umgehen.
Ist das Problem simpel, 1-2-3, dann for-Schleife, aber ansonsten würde ich immer, wie ja auch hier in den "Korrekturen" gezeigt, immer while-Schleifen verwenden.
Es sei denn, die Logik der Schleife erlaubte eine while-Schleife nur, weil sie mit einer in ihr befindlichen z.B. if-Bedingung umgangen werden kann oder eine Schleife soll
mindestens einmal durchlaufen, bevor die Bedingung greift.
Beispiel:
Die Schleife
var bool a:=true;
while (!a)
messagebox.show("blub");
a:=!a;
;
wird gar nicht erst "ausgeführt".
Kehrst du die Bedingung der Schleife um, damit sie überhaupt startet, sehe dies so aus:
var bool a:=true;
while (a)
if (!a)
messagebox.show ("blub");
;
Willst du aber auf jeden Fall in der "ersten" Logik bleiben und
mindestens ein "blub" lesen, musst du in dieser Logik eine for-Schleife verwenden. Aber nur in dieser...
Beispiel:
var bool a:=true;
for (int x:=0 to x++)
if (!a)
messagebox.show ("blub")
a:=!a;
;
In diesem Falle bekommst du zwar unendlich minus 1 viele "blub"'s, aber ich hoffe, dass Prinzip wurde klar.
Kann daran liegen, dass ich gerade betrunken bin, aber deine IFelseIFelse-Abfrage macht in sich schon keinen Sinn, da du nach falls ja, dann, falls nein, falls ja, dann fragst, oder sehe ich hier gerade eine ZWEI???
Grütze aus der Mütze
Torge
PS: Mann hab ich einen im Kahn...
Mir fällt gerade ein, dass es ja auch noch Do-While-Schleifen gibt....also vergiss die for-Schleifen!