beliebige Zeilen von der Tastatur einlesen und ausgeben wenn das zeichen'@' kommt
-
Hey Leute,
ich sitzte schhon eine Weile an einem Programm, das meine eingegebenen Buchstaben, bis das Zeichen @ erscheint einlesen und sie anschließend ausgeben soll. Aber es funktioniert einfach nicht.
Ich hoffe Ihr habt eine Idee.
Danke.Mein Versuch:
#include <iostream>
using namespace std;
int main()
{
char buchstaben[100];
char buchstabenZiffern[27] = "abcdefghijklmnopqrstuvwxyz";
int zaehler[27];for (int k=0; k<26; k++)
{
zaehler[k]=0;
}cout << "Bitte geben Sie eine Buchstabenfolge ein: ";
cin >> buchstaben;for(int i=0; buchstaben[i]=='@'; i++)
{
for(int j=0; j<26; j++)
{
if (buchstaben[i] == buchstabenZiffern[j])
{
zaehler[1] = 15;
}
if (j == 26)
{
cout << "Fehler!" << endl <<"In Ihrer Eingabe " << buchstaben << " ist " << buchstaben[i] <<
" nicht richtig.";
}
}
}for(int i=0; i<26; i++)
{
if (zaehler[i]>0)
{
cout << "Buchstabe " << buchstabenZiffern[i] << " gibt es " << zaehler[i] << " mal" << endl;
}
}return 0;
}
-
Wo veränderst du denn zaehler[i ] ?
-
Achja, nimm die Code-Tags für den Code.
Code mit der Maus markieren und auf den C++-Button unter dem
klicken.
Nutze die Vorschau.
-
#include <iostream> using namespace std; int main() { char buchstaben[100]; // dieses buchstabenZiffern Array ... das würde ich nochmal überdenken // ob ein Buchstabe innerhalb des Alphabets liegt kannst du auch relativ // einfach überprüfen in dem du sowas hier machst // char myLetter = 't'; // if(myLetter >= 'a' && myLetter <= 'z') // { do sth. } char buchstabenZiffern[27] = "abcdefghijklmnopqrstuvwxyz"; int zaehler[27]; for (int k=0; k<26; k++) { zaehler[k]=0; } cout << "Bitte geben Sie eine Buchstabenfolge ein: "; cin >> buchstaben; for(int i=0; buchstaben[i]=='@'; i++) { for(int j=0; j<26; j++) { if (buchstaben[i] == buchstabenZiffern[j]) { // hier hast du dich anscheinend mit den Indezes vertan, bzw. erst // gar nicht den Index aus einer der beiden for-Schleifen benutzt, // sondern statt dessen einfach für den Buchstaben b den Zähler auf // 15 gesetzt. zaehler[j]++; } if (j == 26) { // hier sollte es relativ unmöglich sein reinzukommen, da du die Schleif // ja nur bis j<26 laufen lässt ... daher ist das eine sehr unnötige // Überprüfung cout << "Fehler!" << endl << "In Ihrer Eingabe " << buchstaben << " ist " << buchstaben[i] << " nicht richtig."; } } } for(int i=0; i<26; i++) { if (zaehler[i]>0) { cout << "Buchstabe " << buchstabenZiffern[i] << " gibt es " << zaehler[i] << " mal" << endl; } } return 0; }Aber ... was ist denn genau dein Problem? Was funktioniert nicht?
Ich hab bis jetzt nur mal deinen Quellcode eingerückt und in Code-Tags gepackt, damit die Wahrscheinlichkeit, das jemand anderes deinen Code überfliegt etwas grösser wird.
-
for(int i=0; buchstaben[i]=='@'; i++) { ... }ist natürlich auch eine Wahnsinns-Bedingung für die Schleife.
for(int i=0; buchstaben[i]!='@' && // Wenn buchstaben[i] == '@' ist soll ja abgebrochen werden und solange es ungleich ist, soll die Schleife weiterlaufen strlen(buchstaben) <= i; // das dient dann dazu, dass wir nicht über die Array Grenze hinweg laufen i++) { ... }