Wenn man die Felsgröße nicht weiß?
-
Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole 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.
-
du kannst di Grundlagen nicht ... d.h. weder std::vector noch std::list ... mach es von Hand ...
du musst einfach die Daten aufm Heap packen ..struct Daten { std::string Name; int Staffelnummer; float Schwimmzeit; float Radzeit; float Laufzeit; int Geschlecht; float Ergebnisse; }; int main() { std::size_t teilnehmer = 0; std::cout << "Anzahl der Teilnehmer: " << std::flush; std::cin >> teilnehmer; Daten* feld = new Daten[teilnehmer]; // feld nutzen ... delete [] feld; }...
-
ehm,.wenn ich aber
using namespace std;nutze?
wieso sollte ich denn noch die streams hinschreiben?
-
struct Daten { std::string Name; int Staffelnummer; float Schwimmzeit; float Radzeit; float Laufzeit; int Geschlecht; float Ergebnisse; }; int main() { std::size_t teilnehmer = 0; std::cout << "Anzahl der Teilnehmer: " << std::flush; std::cin >> teilnehmer; Daten* feld = new Daten[teilnehmer]; // feld nutzen ... delete [] feld; }wie soll ich das eigendlich anwenden, weil du ja oben nicht feld deklariert hast? da würde doch der Compiler meckern, da feld woanders verwendet wird?
zudem was ist der INhalt, den du das machst?würde mich mal interessieren
-
was daran net zuverstehen?
using namespace std; // hier ist deine struct deklariert struct Daten { string Name; int Staffelnummer; float Schwimmzeit; float Radzeit; float Laufzeit; int Geschlecht; float Ergebnisse; }; // anschliessend die main int main() { // variable die die teilnehmer anzahl speichert int teilnehmer = 0; // benutzer eingabe cout << "Anzahl der Teilnehmer: " << flush; cin >> teilnehmer; // hier ein aufruf von new, um x viel speicher zu allocieren fuer den type Daten, also deiner struct Daten* feld = new Daten[teilnehmer]; // feld nutzen ... z.B. feld[0].name = "Knut"; feld[0].Radzeit = 100; usw... // zum schluss gibst du den speicher wieder frei delete [] feld; }is doch ganz einfach xD
Gruß Tobi.
-
Hallo
Ich würde dir trotzdem empfehlen dir mal vector anzuschauen.
chrische
-
also ich persönlich würde statt vector immer lieber list<> verwenden, ist doch immer noch etwas fexibler als vector.
noch zwei links hier für( english )
http://www.cppreference.com/cpplist/index.html
http://www.cppreference.com/cpplist/all.html
-
Hallo
Von mir aus, aber das mit dem Heap würde ich lassen. Da kann sich die Klasse drum kümmern.
chrische
-
Nein ... da reicht sein Kenntnisstand nun wirklich nicht zu aus. Und Tobi ... hast an den falschen stellen verändert ^^
#include <iostream> #include <string> struct Data { std::string Name; int Staffelnummer; float Schwimmzeit; float Radzeit; float Laufzeit; int Geschlecht; float Ergebnisse; Data() : Staffelnummer(-1), Schwimmzeit(0.0f), Radzeit(0.0f), Laufzeit(0.0f), Geschlecht(-1) /* Gibt doch nur m und w ?! Wofür da nen int?! */, Ergebnisse(0.0f) // Mal die Variable im Konstruktor mit Default-Werten füllen ... { } }; int main() { std::size_t total_users = 0; // size_t ist ein positiver datentype ... meist als unsigned int definiert ... = 0 damit nichts passiert wenn jemand etwas außerhalb des Zahlenbereiches angibt ... std::cout << "Anzahl der Teilnehmer: " << std::flush; // gibt Anzahl der Teilnehmer aus und flusht direkt den Buffer ... (letzteres muss da nicht hin ...) std::cin >> total_users; // Einlesen ... Daten* feld = new Daten[total_users]; // einen Zeiger "feld" vom Type Daten aufm Heap erzeugen (Zeigt auf einen Array von Daten mit größe: teilnehmer) // feld nutzen ... for (std::size_t user = 0; user < total_users; ++user) // jeden teilnehmer durchgehen ... { std::cout << "Teilnehmer " << user << " :: Name? " << std::flush; std::getline(std::cin, feld[user].Name); // Mal den Namen einlesen ... } delete [] feld; // HeapSpeicher wieder freigeben ... }... dein Problem ist wirklich das du keinen blassen dunst von den Grundlagen hast!
-
Hallo
Du denkst, dass das Gehampel mit Zeigern einfacher ist, als das Benutzen der Klasse vector? Das sehe ich komplett andersherum.
chrische
-
Ist ja schön das du das so siehst. Wollte ich eigentlich nicht wissen. Aber wo du es mir schon mitgeteilt hast ...
Vllt ist es einfacher... aber was bringt es dir ne std::vector-Klasse oder eine std::list Klasse nutzen zu können, wenn du nicht verstehst wie se funktioniert ... Ist genauso als wenn du was den Taschenrechner ausrechnen lässt aber garnicht weißt wie der auf das Ergebnis kommt.
-
Hallo
Na endlich ma wieder der Streit: Das verstehe ich unter OOP (unter anderem) Ich kenne die Schnittstelle, aber die interen Vorgänge sind zweitens. Vielleicht gehörst du ja auch zu den Leuten, die sich erstmal eine eigene string-Klasse bauen, weil sie alles selber machen. Ich eben nicht. Auf Details sollte man später schauen.
Meine Ansicht habe ich mitgeteilt, weil du das mit deiner auch gemacht hast.chrische
-
Hmm nein ich hab mir weder eine vector noch eine list noch eine string Klasse programmiert. Ich nutze sehr intensiv die STL ... aber ich versteh was im Hintergrund passiert ... ist ja auch eigentlich Großteil logisch was da abläuft
Aber man sollte wenigstens im Ansatz verstehen was da passiert und wie man mit Pointern usw. arbeitet...
-
Hallo
Welch versöhnliche Worte.
Grundsätzlich ist es immer gut zu verstehen, was im Hintergrund abläuft nur beim Zeitpunkt des Kennenlernens gehen wir verschiedene Wege.chrische
-
Hi,.
ist ja echt nett, wie ihr mir helfen wollt, aber ich muss euch sagen, dass ich im 1. Ausbildungsjahr (Systemelektroniker) bin.
Ich habe nur das Grundwissen (wobei, habe ich das?)
naja,.also alles so wirklich verstehen tue ich "noch" nicht.
Zudem irgendwie keiner von euch Feld deklariert hat ,.und vector <Daten> feld;
wenn ich da eine ZAhl eingebe (egal welche) schmeißt er mich gleich außen Programm,..
-
hmm also, wenn du das da nicht verstehst, dann wirst du wohl kaum die grundlagen können oder?
zu deinem problem. wie hast du den nun jetzt dein programmcode gestaltet?Gruß Tobi.
-
Daten feld[1000];Eine Grenze gesetzt, wo ich hoffe, das die niemand überschreitet
-
Du kannst doch auch einfach drauf aufpassen, dass keine Zahl über 1000 durchkommt

cout << "Anzahl der Teilnehmer: "; cin >> teilnehmer; if ( teilnehmer < 1000 ) { // Hier steht dann alles drin }
-
stimmt wäre auch eine Idee,..xD