Suchen in einer Liste von Datensätzen
-
Hallo zusammen ich komme nicht so recht weiter mit meinem Programm.
Ich würde das Programm gerne etwas übersichtlicher haben und natürlich so, dass es einwandfrei funktioniert. Ich beschreiben mal kurz was ich vor habe:Ich möchte ein C Programm schreiben, das in einer Liste von Datensätzen suchen kann.
Die einzelnen Datensätze sollen strukturiert werden.
Jeder einzelne Datensatz soll in meinem Programm alle gespeicherten Daten zu einer Person darstellen. Ein Suchkriterium soll sich auf einzelne Angaben beziehen oder mehrere Verknüpfen.Mein Programm soll eine Datenstruktur haben, die in der Lage ist alle Daten von einerm Firmenausweis
abzubilden.Die Datenstruktur soll mit einer typedef Deklaration und dem Datentyp struct implementiert werden.
Am Anfang des Programms will ich ein Datenfeld für bis zu 10 Datensätze mit der Struktur-Typ
Definition, die wiederrum mit typedef deklariert wird.
Einen der 10 Datensätze möchte ich mit eigenen Daten füllen( Initialisierung oder Zuweisung direkt im Prog. Text, nicht durch Benutzereingabe.).
Wenn die Firmenausweisnummer mit 0 endet, sollen die eigenen Daten im ersten Feldelement hinterlegt werden(Index 0 Wert). Wenn die Ausweisnummer zB 123456 ist, sollen die Daten im Feldelement mit dem Index Wert 6 hinterlegt werden. Der Datensatz soll generell im Feldelement mit dem Index Wert „ letzte Ziffer“ der Firmenausweis Nummer hinterlegt werden.Die anderen 9 Datensätze sollen als leer markiert werden, zB durch setzen der Firmenausweis Nr auf Null.
Die leeren Datensätze möchte ich im nächsten Schritt durch Eingaben des Benutzers füllen.
Dazu soll eine Programm Schelife 9mal einen Datensazt einlesen und im Datenfeld für die Personen datensätze hinterlegt werden. Der Datensatz kann in einem beliebigen leeren Element des Datenfelds hinterlegt werden. Das verwendete Datenfeld darf danach nicht mehr als leer markiert sein.Zunächst möchte ich das ganze für 9 Mitarbeiter + mich selbst machen
Das Programm soll die komplette liste der Datensätze durchsuchen und dabei zählen, wieviele der Personen im gleichen Jahr wie ich Geburtstag haben.
Die Anzahl der Personen mit gleichen Geburtsjahr und mein Geburtsjahr sollen ausgegeben werden.Hier mein Lösungsansatz:
#include <stdio.h> typedef unsigned int uint; struct person { char *vorName[20]; char *nachName[20]; char *gebDatum[11]; char *gueltigVon [11]; char *gueltigBis [11]; uint Firmenausweisnummer; } ; int main (void) { int index = 0; int Firmenausweisnummer; double puffer; char *puffer2; char *vorName[20]; char *nachName[20]; char *gebDatum[11]; char *gueltigVon [11]; char *gueltigBis [11]; int i; struct person p[10]; person p[1] = {"Max","Mustermann","01-12-1970","01-01-2012","01-01-2014","123456"}; for (i=0;i<=9;i=i+1) { printf("\nBitte geben Sie die sechsstellige Firmenausweisnummer ein: \n"); scanf("&lf",&puffer); Firmenausweisnummer = (int) puffer; index = Firmenausweisnummer % 10; printf("\n Bitte geben Sie ihre Daten ein :"); printf("\nVorname"); scanf("%s", &vorName); printf("\nNachname"); scanf("%s", &nachName); printf("\nGeburtsdatum (TT-MM-JJJJ)"); scanf("%s", &gebDatum); printf("\ngueltigVon (TT-MM-JJJJ)"); scanf("%s", &gueltigVon); printf("\ngueltigBis (TT-MM-JJJJ)"); scanf("%s", &gueltigBis); person p[index] = {vorName,nachName,gebDatum,gueltigVon,gueltigBis,Firmenausweisnummer}; }; return 0; }
-
Was sagt denn dein Compiler zu der Zeile:
person p[1] = {"Max","Mustermann","01-12-1970","01-01-2012","01-01-2014","123456"};
Hättest du Code-Tags genommen, könnte ich dir direkt die Zeilennummer sagen.
Ist auch nicht schwer: Code markieren und auf den C-Button unter demklicken.
Diese Definition passt nicht zu deiner struct.
Einmal weil die struct falsch ist, aber auch weil du die Daten als falschen Typ angibst.Mach die nochmal schlau über Arrays und Zeiger. Und auch über Arrays von Zeigern.
Mach dich nochmal schlau über die Formatspecifier von Ganzzahlen bei scanf.
Mit einer Ausweisnummer brauchst du nicht rechnen. Also besteht auch kein Grund diese intern als Zahl zu speichern.Eine Zuweisung wie person
p[index] = {vorName,nachName,gebDatum,gueltigVon,gueltigBis,Firmenausweisnummer};
geht nur bei der Definition der struct.
Brauchst du aber auch gar nicht, da du die struct auch direkt (mit scanf) beschreiben kannst. Ohne Umwege über Hilfsvariablen.Für diese Art Aufgabe sind in der letzten Woche ca. 3 Threads eröffnet worden.
Musst du mal suchen (Hash* wäre kein schlechter Anfang)