C++ Schleife funktioniert nicht wie geplant

A

array123

Gast
Hier erstmal das Programm:

char Str[] = "Ein Satzzz zumm tesstteeeen";

int l = sizeof(Str) / sizeof(char);
int i = 0;
char eingabe;
int count = 0;

cout << "Geben Sie einen Buchstaben ein: ";
cin >> eingabe;

for(i = 0; i < l; i++)
{
if(Str == eingabe)
{
count++;

if(count > 1)
{
cout << "Kommt öfter vor" << endl;
}
else
{
cout << "Kommt garnicht vor" << endl;
}
}

}

Was ich vorhabe:
Bei einer Eingabe will ich überprüfen, wie oft der eingegebene Buchstabe im String vorkommt.
Wenn er mehr als einmal vorkommt soll dementsprechend ausgegeben werden.
Wenn der eingegebene Buchstabe garnicht vorkommt, soll auch dementsprechend ausgegeben werden.

Ich habe überlegt erst mal zu schauen wie oft der eingegebene Buchstabe vorkommt. Dann dachte ich 'count' in einer if Abfrage zu schreiben um zu überprüfen, ob der eingegebene Buchstabe nun öfter als einmal vorkommt, damit dann cout ausgegeben werden kann.
Das alles funktioniert aber nicht.
Habt ihr Tipps?
Die else Anweisung ist glaub ich auch völlig falsch.
Ich habe das Gefühl, dass ich die if Abfragen anders setzen muss. Nur weiß ich nicht wie.
 
...
C++:
char Str[] = "Ein Satzzz zumm tesstteeeen";
int l = sizeof(Str) / sizeof(char);
int i = 0;
char eingabe;
int count = 0;
cout << "Geben Sie einen Buchstaben ein: ";
cin >> eingabe;
for(i = 0; i < l; i++) {
  if(Str == eingabe) {
    count++;
    if(count > 1) {
      cout << "Kommt öfter vor" << endl;
    }
    else {
      cout << "Kommt garnicht vor" << endl;
    }
  }
}
gleich weiter, koche gerade

teste mal was die rueckgabe deiner Bedingungbei if ist
 
  • Gefällt mir
Reaktionen: abcddcba
Ich habe vergessen zu erwähnen, dass ich erst seit 1 Monat programmiere. Das heißt ich bin ein Anfänger.
Bringe mir das alles mehr oder weniger selber bei.
Ergänzung ()

@madmax2010 Das Programm gibt alles richtig aus bis zur ersten if- Abfrage. Also nach der ersten if-Abfrage läuft da irgendetwas schief.
Bei der ersten if- Abfrage zählt er die Buchstaben wie geplant. Danach passt gar nichts mehr
 
Eigentlich willst du Str doch durchiterieren, dafür ist doch die Schleife? Also immer das Element an Stelle i des Arrays.
Edit: Außerdem solltest du dir überlegen, an welcher Stelle du wirklich alle Vorkommen gezählt haben wirst und die Unterscheidung 0/1/mehr sinnvoll ist.
 
  • Gefällt mir
Reaktionen: madmax2010
Darf man fragen, wer dir diese Aufgabe gegeben hat? Also für gewöhnlich, egal wo, ob im Studium, reinen Selbststudium, ... wird man so eine Aufgabe nicht einfach so bekommen, denn normalerweise basiert sie ja auf den Inhalten, die zuvor vermittelt wurden. Und eigentlich solltest du zuerst diese Inhalte konsultieren.

Okay, du hast geschrieben, du bringst es dir selbst bei: Dann stellt sich die Frage, warum du eine so syntaktisch beschissene Sprache wie C++ dafür verwendest. Selbst wenn du es irgendwann programmieren können wirst, Auto-Fahren lernt man meistens auch nicht in einem Formel-1-Auto.

Wenn du wirklich was lernen willst, würde ich dir empfehlen geführte Tutorials zu machen, oder eine höhere Bereitschaft, selbst nach Lösungen zu suchen. Denn wenn man alles vorgekauft bekommt, ist der Lerneffekt meistens deutlich kleiner. (was dann irgendwie wieder gegen die Tutorials spricht :D)
 
  • Gefällt mir
Reaktionen: madmax2010
Wenn man ehrlich ist, ist das auch kein C++, sondern C ;)
 
  • Gefällt mir
Reaktionen: madmax2010 und tollertyp
Richtig :-) Aber selbst C ist vielleicht nicht die empfehlenswerteste Einsteigersprache.

Gerade am Anfang ist es ja eher wichtig die Konzepte zu lernen, auch wenn viele denken dass es die Syntax wäre.

Edit:
Vielleicht ist meine Haltung bzgl. Nachfragen in Foren wegen solchen Dingen auch aufgrund der Tatsache, dass als ich mir Programmieren beigebracht habe, Internetanschlüsse in Privathaushalten reine Fiktion waren. Verdammt, ich bin alt :-(
 
  • Gefällt mir
Reaktionen: madmax2010
@tollertyp
Moin und ja, die Aufgabe wurde uns in der Uni gestellt. Daher meinte ich auch dass ich mehr oder weniger mir das selbst beibringe, weil man in der Uni nicht wirklich was lernt. Also meiner Meinung nach.
 
Ehrlich gesagt fand ich das damals ganz gut, die OOP anhand von C++ zu lernen, gerade weil man auch etwas hardwarenäher mit arbeiten kann. Aber ich bin auch kein Informatiker, sondern habe Elektro-/Informationstechnik studiert.
 
Also ich war auch an einer Uni und bei mir wurden nie und vor allem nicht am Anfang Aufgaben gestellt, die nicht auf Basis des zuvor behandelten Stoffs machbar waren.

@herrhannes: Wobei hardwarenah und OOP eigentlich schnell wieder Nackenhaare zu Berge steigen lassen mit der ganzen dynamischen Speicherverwaltung. Ich sage nicht, dass man es nicht kann. Aber eigentlich lohnt es dann auch nur, wenn man etwas hat, was man hardwarenah entwickeln möchte - wie einen Arduino. :-)
 
  • Gefällt mir
Reaktionen: BeBur und madmax2010
Weil keine Sprachelemente/Datentypen genutzt werden, die erst in C++ dazu gekommen sind.

Mist, ich war ja gar nicht gefragt.

Und man es in "vernünftigem" C++ dann wohl mit anderen Typen machen würde.

Aber beschränke dich doch auf das, was man bislang versuchte euch zu vermitteln. Und besser als in Foren zu fragen ist es sich an Kommilitonen zu wenden, denn denen geht es meistens genauso wie dir.
 
  • Gefällt mir
Reaktionen: madmax2010
Strings in char-Arrays ist typisch C, C++ hat dafür eine Klasse std::string. Da kann man auch entsprechend durchiterieren. Also als ein Beispiel...
Ergänzung ()

Wenn man ganz korrekt sein möchte: std::cin ist schon c++, da fehlt aber einiges am Code, dass das überhaupt so kompiliert.
 
  • Gefällt mir
Reaktionen: tollertyp
Ah ok.
Ich muss aber auch ehrlich sagen, dass programmieren spaß macht. Ich höre aber von sehr vielen, dass C/C++ als Einstieg sehr schlecht bzw. schwer ist.
Ich kann es aber nunmal nicht ändern :-)
Ich muss das einfach so gut es geht lernen.
 
@herrhannes: Stimmt, da hab ich mich blind auf dich verlassen und schon war ich verlassen. :-)

@array123: Wobei es nicht verboten ist, auch im Studium links und rechts zu schauen und Programmieren über das im Studium gelehrte Hinaus zu lernen: Weil ich will dich nicht enttäuschen, aber im Studium lernst du Syntax und Konzepte, aber nicht wie man programmiert.

Meine Mutter sagte mal zu mir: Autofahren lernst du erst richtig, wenn du den Führerschein hast. Und so ähnlich ist das da halt auch. Falls das irgendwie nachvollziehbar ist.
 
Doch, das ist schon c++. In C gibt es diese komischen << (Stream) Dinger nicht.
 
@tollertyp
Die Aufgabe wurde von unserem Prof erstellt. Wir bekommen jede Woche Übungen und das ist eins davon.
Wir haben anfangs leichtere Aufgaben bekommen wie z.B. Hello World usw. Nach und nach Vorlesung zu Vorlesung wurde das dann immer schwieriger.
Und aktuell hänge ich an dieser Aufgabe :-)

@tollertyp
Ich verstehe das mit dem Autofahren sehr gut. Kann ich auch bestätigen.
Mir ist auch klar, dass wir in der Uni das richtige programmieren nicht lernen und man es sich selbst beibringen muss, um es 'richtig' zu können :-)
 
Zurück
Oben