Text in Array



  • 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..
    Danke

    Wenn 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?
    Danke

    Akzetabel 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 Dank

    Ich 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! 😡



  • @Simon2! Der Maethu ist Lehrling (Azubi in Fachinformatik). Der Auftraggeber wird wahrscheinlich ein Firmenkollege sein, der ihm eine Aufgabe gegeben hat. Der Arme Maethu muß es anscheinend mit einem Möchtegern-C++-Programmierer zu tun haben. 😉

    Also, der Maethu muß es am Ende so lösen, wie aufgetragen. Aber eigentlich kann er seinen Kollegen fragen, wie die Lösung ist. Dafür ist der Kollege nämlich auch da.



  • ich vermute, der kollege hat selber keine ahnung und bringt ihm nun die gleiche elende grütze bei, die er wiederum bei einem inkompetenten lehrer so gelernt hat. so auf die art: "c? c++? wo ist der unterschied?"



  • Also..ich bin in der Lehre. Und ich habe ein wenig Rückstand in der C++ Programmierung, deshalb wechseln sich 2 MITARBEITER ab, um mir kleine Übungsaufgaben zu geben. Und ich muss jetzt gas geben, weil ich im Februar in der Schule ein Projekt habe.
    Und dass dies auch geklärt ist.. der Mitarbeiter ist PROFI Programmierer und ich ANFÄNGER und ich habe seinen Auftrag falsch verstanden.
    Ebenfalls bin ich mir das Leitprogramm "C++ in 21 Tagen" am durcharbeiten.
    Und da ich jetzt beim Thema Arrays bin ist die Aufagbe entsprechend zu diesem Thema, inklusive aller Themen / Kapiteln vorher (Klassen, Schleifen...usw)
    Un der Auftrag ist, dass ich eben zuerst einmal 5 Spieler eingebe und seine Eigenschaften in die Klasse übergebe.

    Hier die Code Abschnitte, so viel ich im Moment habe:

    // main.cpp
    // Spielerverwaltung.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.
    //
    
    #include "stdafx.h"
    #include <iostream.h>
    #include "Spielerverwaltung.h"
    
    int main(int argc, char* argv[])
    {
    	char Name[30];
    	int Rueckennummer;
    	char Position[30];
    	int Alter;
    	int Spielerzaehler = 0;
    	do
    	{
    		CSpieler Spieler;
    		cout << "Geben Sie die Rueckennummer eines YB Spielers ein:\n";
    		cin >> Rueckennummer;
    		Spieler.SetRueckennummer(Rueckennummer);
    		cout << "Geben Sie den Namen dieses YB Spielers ein:\n";
    		cin >> Name;
    		Spieler.SetName(Name);
    		cout << "Geben Sie die Position dieses YB Spielers an:\n";
    		cin >> Position;
    		Spieler.SetPosition(Position);
    		cout << "Geben Sie das Alter dieses YB Spielers ein:\n";
    		cin >> Alter;
    		Spieler.SetAlter(Alter);
    		Spieler.PrintConsole();
    		Spielerzaehler++;
    	}while (Spielerzaehler <= 5);
    	return 0;
    }
    
    // Spielerverwaltung.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.
    //
    
    #include "stdafx.h"
    #include <iostream.h>
    #include <string.h>
    #include "Spielerverwaltung.h"
    
    CSpieler::CSpieler()
    {
    }
    
    CSpieler::~CSpieler()
    {
    }
    
    void CSpieler::PrintConsole()
    {
    	cout << "Der Spieler mit der Nummer " << m_Rueckennummer << " heisst " << m_Name
    		 << ", spielt als " << m_Position << "\nund ist " << m_Alter << " Jahre alt.\n";
    }
    
    void CSpieler::SetName(char Name[])
    {
    	strcpy(m_Name,Name);
    }
    
    char CSpieler::GetName()
    {
    	return m_Name[30];
    }
    
    void CSpieler::SetRueckennummer(int Rueckennummer)
    {
    	m_Rueckennummer = Rueckennummer;
    }
    
    int CSpieler::GetRueckennummer()
    {
    	return m_Rueckennummer;
    }
    
    void CSpieler::SetPosition(char Position[])
    {
    	strcpy(m_Position,Position);
    }
    
    char CSpieler::GetPosition()
    {
    	return m_Position1[30];
    }
    
    void CSpieler::SetAlter(int Alter)
    {
    	m_Alter = Alter;
    }
    
    int CSpieler::GetAlter()
    {
    	return m_Alter;
    }
    
    //Spielerverwaltung.h
    // Spielerverwaltung.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.
    //
    
    #if !defined(_Spielerverwaltung_H_)
    #define _Spielerverwaltung_H_
    
    class CSpieler
    {
    private:
    	char m_Name[30];
    	int m_Alter;
    	char m_Position[30];
    	int m_Rueckennummer;
    
    public:
    	CSpieler();
    	~CSpieler();
    	void PrintConsole();
    	char GetName();
    	void SetName(char Name[]);
    	char GetPosition();
    	void SetPosition(char Position[]);
    	int GetRueckennummer();
    	void SetRueckennummer(int Rueckennummer);
    	int GetAlter();
    	void SetAlter(int Alter);
    };
    
    #endif // !defined(_Spielerverwaltung_H_)
    

    so...
    so weit sei es gut sagte der Mitarbeiter.
    Jetzt muss ich das gleiche mit 5 Spielern machen, aber dass am Ende alle 5 Spieler ausgegeben werden.
    Jetzt war meine Frage, ob ich dies mit so vielen Member Variablen machen soll, sprich, für jeden Spieler.
    Und dann auch für jeden Spieler eine Set/Get Methode.
    Aber das würde ja viiiel Code geben,deshalb gibt es sicher eine andere Lösung...oder?

    Besten Dank für Ihre Geduld 😉
    Gruss Maethu



  • Nein. Du machst es ganz einfach so, du legst ein Array deiner Spieler an, ungefähr so:

    CSpieler Spieler[5];
    

    Logischer Weiße machst du das vor deiner Do-While Schleife. Dann machst du aus der Do-While eine For-Schleife und lässt die Schleife über alle deine Spieler Elemente wandern.


Anmelden zum Antworten