Text in Array
-
Guten Tag
Entschuldigung für meine Anfängerfrage.
Gibt es in C++ einen Datentyp für den man sowohl Buchstaben als auch Zahlen gleichzeitig verwenden kann?
Ich bin an einer Spielerverwaltung am schreiben. Dazu muss man den Spielernamen, Position, Alter und Rückennummer angeben und jedes einzelne soll in ein Array eingelesen werden und bei der Eingabe der Rückennummer alle Daten des Spielers ausgegeben werden.
Jetzt weiss ich nicht genau wie ich das machen soll mit den Array, und welchen Datentyp.
Besten Dank, bin wirklich dankbar!
-
Ein char kann man, je nachdem, wie man es interpretiert beides haben.
Aber das ist völliger Unsinn das so zu machen. Mach doch einfach ein struct und gutist.struct Spieler { std::string Name; int Position int Alter; int Nummer; };
-
Danke für die schnelle Antwort.
Den Auftrag habe ich vom Mitarbeiter bekommen, aber ich hatte struct und gutist noch nie gehört.
Er hat einfach gesagt mit Arrays, aber ich weiss eben nicht wie deklarieren, damit man wirklich ganze Namen eingeben kann.
Der erste Ansatz ist so:char YBarray[20]; char FCBarray[20]; int ArrayPosition = 0; CSpieler Spieler; cout << "Geben Sie den Namen eines YB Spielers ein:\n"; cin >> YBarray[ArrayPosition];Aber das geht ja noch nicht weil es nur der erste Buchstabe der Eingabe speichert.
Kannst du mir helfen?
Besten Dank!
-
Geh mal zu Google und gib mal da "c++ std::string" ein und lies dir die tutorials dazu durch. Damit kommst du viel einfacher und wesentlich komfortabler zum Ziel.
-
Aber der Auftrag ist mit Arrays..dann muss ich dies so lösen.
Könnt ihr mir denn nicht helfen, mit den Arrays?
Es tut mir leid, aber ich muss so..
Danke
-
Maethu schrieb:
Aber der Auftrag ist mit Arrays..dann muss ich dies so lösen.
Könnt ihr mir denn nicht helfen, mit den Arrays?
Es tut mir leid, aber ich muss so..
DankeWenn du ernsthaft C++ programmieren sollst, dann gehst du am besten zu dem Auftraggeber und sagst, dass die Standardbibliothek aktuell ist und etweiges gefrickel mit Arrays unsinnig ist.
Auch ansonsten ist die Aufabge völliger mist und du wirst da um hässliches rumgecaste nicht drum herum kommen.
Dann würdest du einen Zeiger auf char als Datentypen nehmen und die Zahlen kannst du da mit Gewalt reinpressen. Die Frage ist nur, wie du das wieder richtig rausbekommst.
Sorry, aber den, der die Aufgabe gestellt hat, sollte man schlagen.. Und zwar mit einem guten, schweren C++ Buch.
btw:
gutist heist soviel wie fertig. (gut-ist) Hat nichts mit C++ zu tun.
-
Bis jetzt habe ich es so:
int main(int argc, char* argv[]) { char YBarray[20]; char FCBarray[20]; int ArrayPosition = 0; int Spielerzaehler = 0; do { CSpieler Spieler; cout << "Geben Sie den Namen eines YB Spielers ein:\n"; cin >> YBarray[ArrayPosition]; ArrayPosition++; cout << "Geben Sie die Rueckennummer dieses YB Spielers ein:\n"; cin >> YBarray[ArrayPosition]; ArrayPosition++; cout << "Geben Sie die Position dieses YB Spielers an:\n"; cin >> YBarray[ArrayPosition]; ArrayPosition++; cout << "Geben Sie das Alter dieses YB Spielers ein:\n"; cin >> YBarray[ArrayPosition]; ArrayPosition++; Spielerzaehler++; }while (Spielerzaehler == 5); Spielerzaehler = 0; do { cout << "Geben Sie den Namen eines FCB Spielers ein:\n"; cin >> FCBarray[ArrayPosition]; ArrayPosition++; cout << "Geben Sie die Rueckennummer dieses FCB Spielers ein:\n"; cin >> FCBarray[ArrayPosition]; ArrayPosition++; cout << "Geben Sie die Position dieses FCB Spielers an:\n"; cin >> FCBarray[ArrayPosition]; ArrayPosition++; cout << "Geben Sie das Alter dieses FCB Spielers ein:\n"; cin >> FCBarray[ArrayPosition]; ArrayPosition++; Spielerzaehler++; }while (Spielerzaehler == 5); return 0; }Und wie muss ich das jetzt eben mit dem Datentyp machen, das Array?
Es tut mir leid, dass ich euch mit dem quähle, aber ich muss es so machen :S
Danach kommt im main eine Abfrage von welcher Mannschaft man den Spieler anzeigen lassen soll, der mit der Rückennummer ausgwählt wird. Die Ausgabe soll dann in der Klasse erfolgen mit einer Printmethode.Es ist sehr wichtig, danke für jede Hilfe (nach meiner Aufgabenstellung).
-
Drakon oder auch andere..
Kannst du mir denn nicht meinen Code so erweitern, dass ich Namen und Position usw. eingeben kann?
Dass dies zumindest funktioniert mit Buchstaben und Zahlen und dass dies genügend Platz hat.
Danke Drakon, es ist mir wirklich sehr wichtig!
Gruss
-
Maethu schrieb:
aber ich hatte struct und gutist noch nie gehört.
Harr harr, ich kann nicht mehr.

-
Wenn du schon wegen mir alchen konntest, könntest du mir ja doch helfen?

Vielleicht liegts da dran, dass ich aus der Schweiz komme und gutist nicht gehört habe ^^
Aber Fellhuhn, weisst du Rat?
Danke!
-
OK, weil du Schweizer bist (wie ich auch) zeige ich dir, wies geht:
char* a[2]; a[0] = "Spieler1"; a[1] = reinterpret_cast<char*> ( 2 ); std::cout << a[0] << std::endl; std::cout << reinterpret_cast<int>( a[1] ) << std::endl;Aber ich sage nur soviel: pfui, mach das NIEMALS !
btw:
Gut-ist ist nicht soo gebräuchlich, habe es aber auch schon des öfteren in Foren gesehen..;)
-
Gibts denn keine andere Lösung für mein Beispiel? Es muss doch eine Lösung geben, die akzeptabel ist?
Kannst du mir ein Beispiel (ein anderes mit Arrays) mit meinem Code machen?
Danke
-
Maethu schrieb:
Gibts denn keine andere Lösung für mein Beispiel? Es muss doch eine Lösung geben, die akzeptabel ist?
Kannst du mir ein Beispiel (ein anderes mit Arrays) mit meinem Code machen?
DankeAkzetabel ist nur ein struct, dass die Member enhält und die kannst du dann auch ganz, wie du es wünscht einlesen.
Du kannst das ganze mit einem Array machen, ist aber weder schön, sicher, noch gut erweiterbar..
-
Kannst du mir denn nicht ein Code Beispiel machen, mit meinem Code?
Im Moment ist mir eigentlich egal, ob es gut ist oder nicht. Mir ist wichtig, dass ich es gemäss Aufgabenstellung lösen kann.
Ich habe auch die Klsse, die die Member enthält von Name, Position usw...
Besten Dank
-
Also, ich muss ganz ehrlich sagen, dass die Penetranz, die Lösung trotz aller guter Kommentare, die so abgegeben wurden, es dennoch auf die Art und Weise der Aufgabenvorgabe (die zugegenermaßen schlecht ist, aber eventuell wissen über sicheren Umgang mit Pufferüberläufen und ähnlichem herausquetschen soll) lösen zu wollen, darauf hindeutet, dass du dich in einer Testsituation befindest und keine Ahnung hast

-
Maethu schrieb:
Kannst du mir denn nicht ein Code Beispiel machen, mit meinem Code?
Im Moment ist mir eigentlich egal, ob es gut ist oder nicht. Mir ist wichtig, dass ich es gemäss Aufgabenstellung lösen kann.
Ich habe auch die Klsse, die die Member enthält von Name, Position usw...
Besten DankIch habe doch ein Beispiel gebraucht. Das ist genau das, was du brauchst.
Du musst es nur noch (versuchen) zu verstehen und dann kannst du das in dein Beispiel selber einbauen..Nur zur Ergänzung: reinterpret_cast<> castet ohne Beschränkung. Ist der stärkste C++-Cast und sollte im Normalfall eigentlich nie nötig sein.
-
Maethu, du scheinst ja sehr aufdringlich zu sein...

Wieso eignest du dir die benötigten Sprachmittel nicht einfach an? Es gibt gute Bücher und Tutorials zu C++, wo alles erklärt wird. Wenn man dir fertigen Code gibt, weisst du bei der kleinsten Programmänderung wieder nicht mehr weiter.
-
Es tut mir leid, dass es aufdringlich rüeberkam

Ich wollte dies nicht.
Es war so, weil ich übers Wochenende diesen Auftrag bekam. Die ich aber einfach den Einstieg nicht fand (ist bei mir bei einem neuen Auftrag immer so) wusste ich einfach nicht wie beginnen. Dann kam ich in die Firma und der Mitarbeiter hatte nicht freude. So war ich unter Druck und wusste nicht genau was ich machen soll, dann versuchte ich einfach etwas, und darum fragte ich hier nach.
Als ich dann nichts mehr wusste, wie und was machen, fragte ich nochmals den Mitarbeiter.
Und da stellte sich heraus, dass ich die Aufgabe falsch verstanden, deshalb bin ich jetzt daran, Schritt für Schritt zu coden, nicht alles aufs Mal.
(Ich bin in der Lehre als Informatiker und bin mir C++ am erlernen, darum habe ich manchmal einfach den "Klick-Effekt" nicht.
Nun kann ich bei meinem Programm einen Spieler mit Position, Name..usw abfragen und übergebe dies mit strcpy() (Tipp vom Mitarbeiter, da ich auch nicht wusste, mit was ich anfangen soll). Deshalb las ich dann dieses Kapitel durch.
Jetzt soll ich aber mehrere Spieler eingeben und ausgeben, und nicht nur einen. Und da stellts wieder an. Ich würde mit mehreren Member Variablen für jeden Spieler, aber das ich wohl nicht die beste Lösung oder?
Ich will wirklich nicht aufdringlich sein, ich brauche einfach imemr eine Spur auf den richtigen Weg, damit ich dann dort weiterfahren kann..Nochmals entschuldigung und ich hoffe, es sei jetzt geklärt.
Besten Dank
-
Maethu schrieb:
Aber der Auftrag ist mit Arrays..dann muss ich dies so lösen....
Sagt wer?
Üblicherweise sind Auftraggeber an Lösungen interessiert und nicht an Implementierungsdetails. Falls ein (schechter) Auftraggeber diese Grenze nicht anerkennen will, ist er immer noch offen für das Kostenargument:
"Kann ich so machen, wie Sie das wollen ... kostet aber 3mal so viel und so lange wie meine Lösung (die bei gleichen positiven Eigenschaften keine der negativen Ihres Vorschlags aufweist)."
Hat bislang noch jeden Auftraggeber überzeugt.Kann auch sein, dass Dein Auftraggeber einen "Lehrauftrag" Deinerseits empfindet (oder gar hat) ... aber dann sollte er auch die Sprachmittel von C++ kennen (und nicht nur die von C) und in der Lage sein, zu erkennen, dass diese auch didaktisch immense Vorteile haben.
Übrigens: Man kann problemlos an Schnittstellen char* verwenden und trotzdem intern std::string.
Gruß,
Simon2.
-
Da du noch Lehrling bist, ist für mich das Problem dein Kollege/Auftraggeber:
Wenn dein Kollege es in C haben will, soll er dir das sagen. Wenn er aber meint, das man die Aufgabe mit C-Mitteln löst, es aber als C++ verkauft, ist er in Sachen C++ nicht gerade kompetent.
Deshalb einfach mal der Tip an dich:
Kauf dir ein C++-Buch, z.B. den aktuellen "C++ Primer" (29 EUR) und befasse dich damit. Da wirst du vieles lernen.Kommen wir nochmal zu deinem Auftrag: sag uns doch bitte wer dein Auftraggeber ist (nein, nicht sein Name!). Ist er ein Kollege von dir? Dein Boss? Dein Abteilungsleiter?
Denn Auftraggeber hört sich für uns so an, als ob dieser "fremd" ist. Also nicht von deiner Firma. Aber er ist aus deiner Firma, richtig?Dann mußt du es natürlich so lösen, wie es dein Vorgesetzter sagt. Aber das darfst du uns nicht als Auftraggeber verkaufen!
