Hilfe bei Consolen-Anwendung
-
Ich habe unteranderem im Studium Informatik und bräuchte mal eure fachmännische Unterstützung.
Ich bin totaler Anfänger in Sachen programmieren.Vielleicht hat ja einer von euch ein bisschen Zeit mir hierbei weiterzuhelfen.Wir haben jetzt folgende Aufabe bekommen:
^Aufgabenstellung: Verwendung einer Array-Variablen vom Typ vector
Ihr Programm soll in der Lage sein, Lottozahlen (6 aus 49) plus Superzahl als jeweils ein „Tipp“ zu
erzeugen, die sechs Lottozahlen zu sortieren und den gesamten Tipp auszugeben.
Die zentrale Datenstruktur in Ihrem Programm ist das dynamisches Integer-Array (‚lotto’) vom
Datentyp vector mit sieben Speicherplätzen.
Die folgenden Funktionen, deren Prototyp im Folgenden gegeben wird, sind zu erstellen:
//Funktionsprototypen
void tippErzeugen(vector<int>&lotto);
void tippSortieren(vector<int>&lotto);
void vertausche(int& a, int& b);
void tippAusgabe(vector<int>lotto);
Das Programm ist als Konsolen-Anwendung mit der IDE TurboC++ zu realisieren.
Funktion main()
• Deklaration des dynamischen Arrays ‚lotto’ vom Datentyp vector mit sieben Speicherplätzen,
• Setzen des Startwertes für den Pseudozufallsgenerator Æ Funktion: randomize()
• In einer do{…}while()-Schleife werden Lottozahlen erzeugt, wenn der Benutzer auf Anfrage
die ‚j’-Taste drückt. In der Schleife werden folgende Funktionen aufgerufen:
void tippErzeugen(vector<int>&lotto);
void tippSortieren(vector<int>&lotto);
void tippAusgabe(vector<int>lotto);
• Drückt der Benutzer eine andere Taste, wird das Programm mit der return-Anweisung
verlassen.Funktion tippErzeugen():
Die Grösse des Lottozahlen-Arrays kann über die Elementfunktion size() bestimmt werden:
int size = lotto.size();
• Deklaration der Integer-Variablen ‚zahl’ und ‚zaehler’ und der boolschen Variable
‚vorhanden’
• In einer While-Schleife werden solange Zufallszahlen erzeugt, solange der Wert der Variablen
‚zaehler’ kleiner als der Wert der Variablen ‚size-1’ ist.
o Erzeugen einer Zufallszahl im Bereich 1 … 49o For-Schleife und Alternativanweisung zur Kontrolle, ob die gerade erzeugte
Zufallszahl vielleicht schon im Array gespeichert wurde
o Falls die Zahl schon vorhanden ist, wird die Variable ‚vorhanden’ auf true gesetzt
und die For-Schleife verlassen.
o Gibt es den neuen Zufallszahlenwert noch nicht im Array, wird dieser im Array am
Index ‚zaehler’ gespeichert und der Zähler ‚zaehler’ wird inkrementiert.
o Für den nächsten Zyklus der While-Schleife muss die Variable ‚vorhanden’ wieder
zurückgesetzt werden.
o Erzeugen der Superzahl im Bereich von 0…9 und Speichern der Zahl im Array.Funktion tippSortieren():
• Implementieren Sie den Bubble-Sort-Algorithmus (s. Vorlesungsskript) für Datensätze vom
Typ int.
• Ermitteln Sie die Array-Grösse mit der Elementfunktion size() Æ int size =
lotto.size();
• Die Superzahl sollte nicht mitsortiert werden!
• Das Vertauschen sollte ebenfalls als Funktion implementiert werden.
Funktion tippAusgabe():
• Ermitteln Sie die Array-Grösse mit der Elementfunktion size() Æ int size =
lotto.size();
• Ausgabe der sechs Lottozahlen durch einen Tabulator voneinander
getrennt in einer Zeile
• Ausgabe der Superzahl: cout << " Superzahl: " << lotto[size-1];^Die Ausgabe sollte später so aussehen :
^Ich bin Ihre persoenliche Lottofee !
4 6 12 28 36 38 Superzahl: 7
Einen neuen Tipp erzeugen [j/n]
1 6 31 37 39 40 Superzahl: 9^
-
Hallo
Fang doch erstmal an und versuch die einzelnen Punkte Schritt für Schritt in Quellcode umzusetzen. Wenn du dann konkrete Fragen und Probleme hast werden wir dir gerne helfen. Niemand wird hier deine Hausaufgaben machen.
Da du offenbar ein Konsolenprogramm schreiben sollst verschieb ich dich mal.
bis bald
akari
-
Dieser Thread wurde von Moderator/in akari aus dem Forum VCL (C++ Builder) in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Danke fürs verschieben !
Das hier habe ich bis jetzt zusammengebastelt

//--------------------------------------------------------------------------- #include <iostream> #include <vector> #include <cstdlib> #include <conio.h> #include <stdlib.h> //--------------------------------------------------------------------------- using namespace std; //--------------------------------------------------------------------------- void tippErzeugen (vector<int>&lotto); void tippSortieren (vector<int>&lotto); void vertausche (int& a, int &b); void tippAusgabe (vector<int>lotto); //--------------------------------------------------------------------------- main (void) { char c; vector<int>lotto(7 , 0); randomize(); cout<< "Ich bin ihre persoenliche Lottofee !\n\n\n"; do { tippErzeugen (lotto); tippSortieren (lotto); tippAusgabe (lotto); cout << endl << "Einen neuen Tipp erzeugen? [j/n]\n"; c=getch(); } while(c=='j'); } //--------------------------------------------------------------------------- void tippErzeugen (vector<int>&lotto) { int size = lotto.size(); int zahl=0, zaehler=0; bool vorhanden; while(zaehler<size-1) { zahl=rand()%49+1; vorhanden=false; for(int i=0;i<size&&!vorhanden;i++) { if(zahl==lotto[i]) vorhanden=true; } if(!vorhanden) { lotto[zaehler++]=zahl; } } lotto[zaehler]=rand()%9+1; }Wäre super wenn mir einer von euch weiterhelfen könnte.
ps jetzt auch formatiert danke für den tip Th ..
Greez ixuss
-
Am besten, du formatierst erst mal deinen Code mittels des C/C++ Buttons (Editieren deines Beitrags).
Du mußt halt innerhalb der while-Schleife nochmals eine Schleife setzen, welche alle vorherigen Lottozahlen mit der aktuellen vergleicht und nur, wenn keine Übereinstimmung stattfindet, den Zähler erhöhen.
Ansonsten such mal nach anderen Lotto-Programmen hier im Forum...
-
So würde es nach der Vorgabenlösung aussehen.
So umständlich würde man das aber niemals machen.
Einen vector kann man über sort sortieren. Da braucht man auch keine Funktion vertauschen (swap).#include <iostream> #include <vector> #include <cstdlib> #include <conio.h> #include <stdlib.h> //--------------------------------------------------------------------------- using namespace std; //--------------------------------------------------------------------------- void tippErzeugen (vector<int>&lotto); void tippSortieren (vector<int>&lotto); void vertausche (int& a, int &b); void tippAusgabe (vector<int>&lotto); //--------------------------------------------------------------------------- int main () { char c; vector<int>lotto(7 , 0); randomize(); cout<< "Ich bin ihre persoenliche Lottofee !\n\n\n"; do { tippErzeugen (lotto); tippSortieren (lotto); tippAusgabe (lotto); cout << endl << "Einen neuen Tipp erzeugen? [j/n]\n"; c=getch(); } while(c=='j'); } //--------------------------------------------------------------------------- void tippErzeugen (vector<int>&lotto) { int size = lotto.size(); int zahl=0, zaehler=0; bool vorhanden; while(zaehler<size-1) { zahl=rand()%49+1; vorhanden=false; for(int i=0;i<size&&!vorhanden;i++) { if(zahl==lotto[i]) vorhanden=true; } if(!vorhanden) { lotto[zaehler++]=zahl; } } lotto[zaehler]=rand()%9+1; } void tippSortieren (vector<int>&lotto) { int size=lotto.size(); for(int i=0;i<size-1;i++) { for(int j=0;j<size-1;j++) { if(lotto[i]<lotto[j]) { vertausche(lotto[i],lotto[j]); } } } } void vertausche (int& a, int &b) { int c=a; a=b; b=c; } void tippAusgabe(vector<int>&lotto) { int size=lotto.size(); for(int i=0;i<size-1;i++) { cout << lotto[i] << "\t"; } cout << endl << "Superzahl: " << lotto[size-1] << endl; }
-
Hey super danke hausaufgabenmacher

Aber eine Sache ist mir noch nicht ganz kla.Wie funktioniert dieser Bubble Sort. Mir kommt es so vor als würde er von hinten nach vorn sortieren.Kann man den nicht auch anders schreiben ?
irgendwie so (fänd ich irgendwie logischer,funktioniert aber nicht)
void tippSortieren (vector<int>&lotto) { int size=lotto.size(); for(int i=size-1;i>0;i--) { cout<<lotto[i]<<endl; for(int j=0;j<i;j++) { if(lotto[j]>lotto[j+1]) { vertausche(lotto[i],lotto[j]); } } }Greez ixuss
-
Vllt. wollte dich der 'hausaufgabenmacher' nur testen -)
Den BubbleSort-Algortihmus gibt es in den verschiedensten Varianten, aber wenn du ihn nicht wirklich selbst erstellen mußt, dann kannst du einfach folgendes benutzen (so wie 'hausaufgabenmacher' ja auch vorgeschlagen hat):
#include <algorithm> void TippSortieren(vector<int> &v) { std::sort(v.begin(), v.end()); }
-
#include <vector> #include <algorithm> #include <iostream> #include <iterator> using namespace std; int main() { srand(time(0)); char c; vector<int> v(49); // Lotto Zahlen einfüllen for(int i = 0; i < v.size(); ++i) v[i] = i + 1; do{ // schüttel ... schüttel ... schüttel random_shuffle(v.begin(), v.end()); // sortieren sort(v.begin(), v.begin() + 6); copy(v.begin(), v.begin() + 6, ostream_iterator<int>(cout, " ")); // und noch die Zusatzzahl cout << " " << rand()%9+1 << endl; cout << "Einen neuen Tipp erzeugen? [j/n] "; cin >> c; }while(c == 'j'); }:xmas1: :xmas1:
-
@hausaufgabenmacher:
#include <iostream> #include <vector> #include <cstdlib> #include <conio.h> #include <stdlib.h>gesehen und aufgehört deinen Code zu lesen. Scheinst 0 peil zu haben was du da machst ^^ Das einzige was mich noch wundert, dass er nicht Namensdoppelungen hat, da du den namespace std ja used. (std::rand, rand)