Hallole, folgendes Problem: Möchte in minem Projekt Daten (ca.100 Teilnehmer mit je ca. 20 Eigenschaften (Name, Adresse, aber auch Zeiten...), getrennt mit Komma als Trennzeichen) in einem Textfile speichern. Textfile deswegen, damit auch ohne Programm die Daten ausgelesen werden. Gedanke ist, das ganze in ein 2 Dimensionales Array zu laden und entsprechend der Grösse das ganze darzustellen auf dem Bildschirm (in einer Tabelle oder Textboxen (von Bedeutung?)?. Jetzt bin ich nicht ganz sicher ob das die optimale Methode ist, das ganze darzustellen bzw. das ganze nachher im Programm zu manipulieren, sprich rechnen oder Werte hinzufügen. Wie löst ein guter Programmierer das ganze? Ist das der richtige Weg, oder verbaue ich mir damit später etwas im Programm? Danke für Tipps
Vielleicht lehne ich mich jetzt etwas zu weit aus dem Fenster; hängt von deiner konkreten Aufgabenstellung ab. Wenn du anstatt einem Komma einen Strichpunkt als Trennzeichen nimmst (;), dann kannst du so eine Datei recht einfach mit Excel bearbeiten. Das ist dann eine CSV Datei. Excel kann sowas direkt einlesen und schreiben. Bearbeiten der Daten in Excel ist ja dann relativ einfach. Ansonsten: Nein du verbaust dir nichts. Ich würde allerdings kein 2d Array nehmen. Der Grund ist einfach: In einem Array, egal wieviele Dimensionen es hat, müssen alle Werte immer vom gleichen Datentyp sein. Deine Kurzbechreibung klingt jetzt aber nicht so, als ob das bei dir so wäre. In so einem Fall akzeptiert man den gerne eine Krücke: Alles ist ein String. Mit allen Problemen die daraus entstehen. Die Lösung dafür: Definiere dir eine Struktur. In C wäre dass ein struct, in Pascal ein Record. In anderen Sprachen heist das anders, aber in irgendeiner Form hat jede ernstzunehmende Sprache eine derartige Möglichkeit. Die Struktur beschreibt dann den Aufbau einer Zeile deiner Tabelle. Ein Array aus diesen Strukturen bildet dann die komplette Tabelle. Bsp: Du brauchst eine 2D Tabelle. Eine Zeile soll enthalten: Name Strasse Ort PLZ Tel-Nr (Achtung: Auch wenn es Telefon nummer heist, ist eine Tel-Nr keine Nummer sondern wird besser in einem String abgelegt) Also definiere ich den Aufbau einer Zeile (in C) struct Eintrag { char Name[40]; char Strasse[50]; char Ort[40]; int PLZ; char Tel[20]; }; Damit habe ich eine Zeile. Eine komplette Tabelle ist dann: struct Eintrag Daten[100]; Meine Tabelle hat also Platz für 100 Datensätze. Jeder einzelne Datensatz besteht (da er ja ein struct Eintrag ist) aus: Name, Strasse, Ort, PLZ, und Tel Um auf die PLZ vom Eintrag 3 zuzugreifen und dem 4481 zuzuweisen würde ich schreiben: Daten[2].PLZ = 4481; (2 deshalb, weil in C ja bei 0 angefangen wird zu zählen). Eine struct hat auch den Vorteil, dass Dinge die zusammengehören (nämlich die Daten für eine Person) auch zusammen bleiben. Wenn ich also eine Funktion schreibe, die eine Visitenkarte ausdrucken soll, dann übergebe ich der einen kompletten struct Eintrag und dort ist ja alles enthalten, was zu einem Eintrag gehört: void PrintVisitenkarte( struct Eintrag Kunde ) { // Ausdrucken von Kunde.Name, Kunde.Ort, Kunde.Strasse // Kunde.PLZ etc } Um jetzt von den ersten 20 Kunden in der Tabelle eine Visitenkarte auszudrucken, schreibe ich dann ganz einfach: for( i = 0; i < 20; ++i ) PrintVisitenkarte( Daten[i] ); Auch hier wieder: Eine Zeile der Tabelle wird als eine Einheit betrachtet und als ganzes behandelt. Wenn dann später noch zusätzliche Daten, wie zb. Fax Nummer dazukommt, dann brauch ich an der Funktionsdefinition bzw. am Aufruf überhaupt nichts ändern. Ich ergänze einfach die Fax Nummer in der Struktur: struct Eintrag { char Name[40]; char Strasse[50]; char Ort[40]; int PLZ; char Tel[20]; char Fax[20]; }; und überall wo eine struct Eintrag vorkommt, habe ich automatisch auch das neue Feld Fax zur Verfügung.
Super Tipp mit dem Struct. Darauf wäre ich wohl net gekommen :) Vorallem auch die Tatsache das die abgelegten Daten im Array vom gleichen Typ sein müssen. Das hätte ich bald gemerkt, da in mindestesn 2 weiteren Spalten die Zeit eines Rennlaufes stehen soll/wird. Und da wäre es schwierig geworden mitm String, anhand der Zeiten, die Fahrer zu sortieren :) Da man bei Excel das Trennzeichen beim konvertieren von Textdaten vorgeben kann, ist es unerheblich, welches gewählt wird, aber werd dann wohl gleich das Semikolon nehmen :) So, werd das ganze jetzt mal in C umsetzen und wenns passt mit C++ :) Danke
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.