Brauche Hilfe bei einer C++ Aufgabe.
-
Hallöchen!
Bin ziemlich verzweifelt. Bräuchte dringend die Lösung für folgende Aufgabe und es wäre super, wenn mir jemand helfen könnte!
Aufgabe:
Schreiben Sie ein CPP Programm, das folgende Aufgabe erfüllt:
- Allgemeine Ausgaben über den Programmierer (Name) und den Sinn des Programms (Überschrift)
- Im Hauptprogramm wird ein Zufallsstring mit 20 Buchstaben erzeugt
- Dieser Zufallsstring besteht nur aus Kleinbuchstaben
- bei jedem Aufruf des Programms wird ein anderer Zufallsstring erzeugt
- Das Hauptprogramm übergibt den Zufallsstring einer FunktionDie Funktion hat folgende Aufgabe:
- Die Anzahl der im Zufallsstring enthaltenen Vokale a oder e wird mit der Funktion ermittelt und ausgegeben
- anschließend werden der Buchstabe i aus dem zufallsstring entfernt
- dieser string wird an der Hauptprogramm zurückgegeben und dort ausgegebenIch bin in C++ echt eine Niete. Kann mir bitte jemand ganz schnell helfen???
BITTE
-
naja hausaufgaben machen wir nicht, aber lies dir doch erstmal ein tutorial durch, es gibt so viele gute tutorials, da wirst du schon was brauchbares finden,
nur noch ein paar tipps zum finden von buchstaben,sieh dich mal nach string::find und string::erase um
-
Immerhin ist die zweite Antwort besser als die erste. *lol*
Ich habe ja auch schon ein bisschen was gemacht, aber komme nicht mehr weiter.
Hier ist das was ich schon gemacht habe:#include<iostream>
#include<conio.c>
#include<stdlib.h>
#include<time.h>
#include<string>
using namespace std;int main()
{
cout<<"12.03.08\n\nSCHNICKY\nZufallsstring mit 20 Buchstaben\n\n";
srand (time(NULL));
string buchstaben;
int anzahl=0;for (int i=0;i<20;i++){
buchstaben=rand()%26+97;
cout<<buchstaben<<" ";}getch();
return 0;
}
-
wenn du das nächste mal code postest bitte benutze die code-tags
ansonsten, gebe ich dir folgenden Tip.
Wenn du "zufällige" buchstaben erstellen sollst, dann musst du dir einen zufallswert erzeugen dessen untergrenze 65 ist und obere grenze 122 ist. weil das die teilweise alle druckbaren zeichen des alphabets sind. so und dann wandelst du diese zahl in einen string um
-
Hilft das?
std::string filter(const std::string &str){ // neuen zähler auf 0 setzen // schleife über jeden Buchstaben // - schauen ob es ein vokal ist // - wenn ja dann zähler erhöhen // zähler ausgeben // http://www.cppreference.com/cppalgorithm/remove.html anschauen // und das ergebnis zurückgeben }
-
Also ich bin weiblich und verstehe die ganze Sache an sich überhaupt nicht wirklich.

Ich bin froh, wenn ich überhaupt ein bisschen kapiere.
-
Also ich bin weiblich
Ah ok dann kriegste wahrscheinlich gleich die Komplettlösung
-
na wieso was verstehste denn jetzt nicht? ich habe dir schon ein paar gute tips gegeben und fellhuhn hat auch noch einen drauf gelegt
-
Ich verstehe die Sprache nicht.

-
dann muss ich leider sagen, setzt dich hin und lies dir ein tutorial durch und probier aus;) ohne lernen und probieren wird das nichts
-
schnicky schrieb:
Also ich ...verstehe die ganze Sache an sich überhaupt nicht wirklich. :(...
...Ich verstehe die Sprache nicht. ...Und ? Soll das so bleiben ?
Wenn ja, dann wirst Du doch mit einer 6 ganz treffend benotet und solltest ab jetzt Deiner Freizeit genießen, statt im Internet in Foren rumzuhängen zu Themen, die Dich nicht interessieren ... :pGruß,
Simon2.
-
Doch ich will die endlich richtig lernen, aber leider komme ich erst zu dem Osterferien dazu. Ich mache mein Abi auf der Abendschule und gehe vorher 8 Std. am Tag arbeiten, d. h. ich habe nur meine Wochenenden zum lernen.
Ich werde mich über Ostern hinsetzen und diese Sprache lernen.
-
schnicky schrieb:
Doch ich will die endlich richtig lernen, aber leider komme ich erst zu dem Osterferien dazu. ...
Also in der Zeit, in der Du Dich hier im Forum schon rumgetrieben hast, hättest Du (z.B. anhand der Vorschläge hier) schon Einiges über die Sprache lernen können.
Entweder hast Du gar keine Zeit - dann würden wir Dich hier gar nicht sehen - oder Du verbringst sie falsch (z.B. mit Betteln um Arbeitsabnahme).

Gruß,
Simon2.
-
Ich sitze auf Arbeit. Ich habe leider nicht soviel Freizeit, wo ich lernen kann. Mir bleibt praktisch nur mein Wochenende, aber egal.
-
soo heir is alles was du brauchst
http://www.google.de/search?hl=de&q=C%2B%2B+tutorial&btnG=Google-Suche&meta=
http://www.google.de/search?hl=de&q=C%2B%2B+strings&btnG=Suche&meta=
-
Ja, super! Danke für die Links, werde mir dieser aber leider erst am Wochenende angucken können.
-
#include <algorithm> #include <string> #include <iostream> #include <cstdlib> #include <ctime> #include <functor> std::string filter(std::string const&); inline char random_char() { return std::rand() % ('a' - 'z') + 'a'; } int main() { // Zufallszahlengenerator initialisieren ... std::srand(static_cast<unsigned>(std::time(NULL))); // Generate String std::string random_string(20, 0); std::generate(random_string.begin(), random_string.end(), random_char); std::cout << filter(random_string) << std::endl; } std::string filter(std::string string) { unsigned int a(0); unsigned int e(0); for (std::string::const_iterator it(string.begin()); it != string.end(); ++it) if (*it == 'a') ++a; else if (*it == 'e') ++e; std::cout << "a: " << a << "mal; e: " << e << "mal\n"; std::remove_if(string.begin(), string.end(), std::bind2nd(std::equal_to<char>(), 'i')); return string; }fertig

-
Sollte es hier
inline char random_char() { return std::rand() % ('a' - 'z') + 'a'; }nicht'z'-'a'heißen statt andersrum?
-
Simon2 schrieb:
darcon schrieb:
...
Soweit ich weiß ist D(Evil) schwul, hat also nichts mit ihrem Geschlecht zu tun.Oder eben doch ... sind doch angeblich die besten Frauenversteher überhaupt.

Gruß,
Simon2.
Naja.. Ich bezweifle das, da darcon nicht angemeldet ist und wie gross ist die Wahrscheinlichkeit, dass jemand, der ihn kennt gerade jetzt reinkommt und das auch noch durch seinen Namen durchsieht, dass das der ist..

-
Falls (D)Evils Lösung zu "fortgeschritten" (d.h. für einen Anfänger schlicht unveständlich) ist, hier eine Alternative. Weiß ja nicht, auf welchem Niveau ihr schon seid.

#include<iostream> #include<cstdlib> #include<ctime> #include<string> using namespace std; string meinefunktion(string s) { int a = 0; int e = 0; int h = 0; // Hilfsvariable string hilf(20,'+'); //Hilfsstring der Größe 20 gefüllt mit dem Zeichen '+' for (int i=0; i < 20; i++) { if (s[i] == 'a') // Vokale a zählen a++; if (s[i] == 'e') // Vokale e zählen e++; if (s[i] != 'i') { hilf[h] = s[i]; //Werte ungleich 'i' in den Hilfsstring schreiben h++; //Hilfsvariable h gibt die nächste freie Position im Hilfsstring an } } hilf.resize(h); //Hilfsstring auf die Anzahl der hineingeschriebenen Zeichen verkürzen // Anzahl der Vokale a und e ausgeben cout << "a: " << a << endl; cout << "e: " << e << endl; return hilf; //Hilfsstring zurückgeben } int main() { cout<<"12.03.08\n\nSCHNICKY\nZufallsstring mit 20 Buchstaben\n\n"; srand (time(NULL)); string buchstaben(20,'+'); //String der Länge 20 gefüllt mit dem Zeichen '+' // Die Positionen 0 bis 19 des Strings "buchstaben" mit einem zufälligen Zeichen besetzen for (int i=0; i<20 ; i++){ buchstaben[i] = rand() % 26 + 97; } // Zufallsstring "buchstaben" an eine Funktion übergeben buchstaben = meinefunktion(buchstaben); // String ausgeben cout << buchstaben << endl; return 0; }Falls es reicht die Vokale i einfach durch ein Leerzeichen zu ersetzen tut es auch folgenden Funktion:
string meinefunktion(string s) { int a = 0; int e = 0; for (int i=0; i < 20; i++) { if (s[i] == 'a') a++; if (s[i] == 'e') e++; if (s[i] == 'i') s[i] = ' '; } // Anzahl der Vokale a und e ausgeben cout << "a: " << a << endl; cout << "e: " << e << endl; return s; }
-
Badestrand schrieb:
Sollte es hier
inline char random_char() { return std::rand() % ('a' - 'z') + 'a'; }nicht'z'-'a'heißen statt andersrum?Auszug aus dem Standard:
"... If both operands are nonnegative then the remainder is nonnegative; if not, the sign of the remainder is implementation-defined..."
Ich würde sagen wenn man es venünftig machen will, ist 'z'-'a' die eindeutig bessere Wahl.
