kontoaufgabe: während laufzeit neue einträge erstellen
-
hi
also ich bin anfänger und hab nicht so viel ahnung. die aufgabe hat aber was mit verketteten listen zu tun und malloc.
und zwar sollen zur laufzeit neue kontonummern und kontostand eingelesen werden und abgespeichert werden.weiß da jemand was?
-
coolio schrieb:
weiß da jemand was?
Irgendjemand wird bestimmt was wissen
-
Ich denke am einfachsten kannst du das mit den STL Container-Klassen in c++ bewerkstelligen da gibts extra Klassen für listen...frag am besten dort mal nach...
-
aber wenn ich es mit c machen muss, dann bin ich hier wohl richtig!
-
coolio schrieb:
sollen zur laufzeit neue kontonummern und kontostand eingelesen werden und abgespeichert werden.
Naja als erstes brauchst du mal die grundlegenden Methoden für die Verarbeitung der Liste, also das einfügen, löschen, suchen usw.
Schreib die erstmal und dann halt verwenden
-
Hallo,
hier geb ich dir mal ne kleine Starthilfe. Falls du die Funktion zum löschen der Datensätze nach dem Namen nicht hinkriegst, meld dich nochmal. Aber erst selber probieren nä.
#include <stdio.h> #include <stdlib.h> #define TPL while(getchar()!='\n'); //Kontostruktur typedef struct p { int kto_nr; double kto_stnd; struct p *next; }konto; //Funktionsdeklarationen konto *add_kto(konto *head); void print_kto(konto *head); int main(int argc, char **argv) { konto *head=NULL; unsigned short wahl; while ( wahl != 0) { printf("\n(1) Konto hinzufügen\n"); printf("(2) Konten ausgeben\n"); printf("(0) Beenden\n"); printf("\nWas willste machen?"); scanf("%d", &wahl); TPL; switch (wahl) { case 0 : break; case 1 : head=add_kto(head); break; case 2 : print_kto(head); break; default : printf("Gibts nich!\n"); break; } } return 0; } konto *add_kto(konto *head) { konto *neu, *first; neu = (konto *) malloc (sizeof(konto)); printf("KontoNr.!: "); scanf("%d", &neu->kto_nr); TPL; printf("\nKonto Stand: "); scanf("%lf", &neu->kto_stnd); TPL; if (head == NULL) { head=neu; head->next = NULL; } else { for (first=head;first!=NULL; first=first->next) { if (first->next == NULL) { first->next = neu; neu->next = NULL; } } } return head; } void print_kto(konto *head) { konto *hlp=head; printf("\n\nKONTODATEN:\n"); if (hlp != NULL) for (;hlp!=NULL;hlp=hlp->next) { printf("KontoNr: %d\n", hlp->kto_nr ); printf("Konto Stand: %.2lf\n", hlp->kto_stnd ); } else printf("\nNix in Liste drin\n"); }
Die Ausgabe is jetzt nicht so benutzerfreundlich, aber die Funktionsweise von verketteten Listen wird verdeutlicht. Falls ich Fehler oder Bockmist programmiert habe, bitte ich um Benachrichtigung.
Chiao
-
Hast du ahnung von Structs?Erstelle eine Struktur mit typdef struct Foo... Anschließend setzt du einen Pointer auf die Struktur...Du mußt quasi den Kopf und das Ende mit einer Structur definieren.Den Inhalt der Struktur kannst du mit deinen Daten füllen die du für das Kontoproggi brauchst.Am besten wäre wenn der Inhalt auch ein struct Pointer,der als Kopf dient,und einen der als Ende dient,achja und eine Funktion die für das einfügen bzw.das alloziieren mit malloc zuständig ist.Ich hoffe ich konnte dir etwas helfen...du findest auch Beispiele wenn du googelst...
-
thx bashor, werd mir mal den code angucken
-
Hier ist noch die Funktion zum löschen eines Datensatzes! Müsste grundsätzlich funktionieren! Falls Fehler drin sind, bitte ich um benachrichtigung!
//Funktionsdeklaration konto *del_kto(konto *); //Funktionsdefinition konto *del_kto(konto *head) { int kto; konto *hlp=head,*tmp; printf("Welches Konto willste loeschen? KontoNr: "); scanf("%d", &kto); TPL; if (head == NULL) { printf("Liste leer\n"); return NULL; } if (head->kto_nr == kto) //das erste element passt { tmp=head; head=head->next; //erste element aushängen delete(tmp); } else { for (;hlp!=NULL;hlp=hlp->next) { if (hlp->next != NULL && hlp->next->kto_nr == kto) { hlp->next=hlp->next->next; return head; } } } return head; }
Viel Spass damit
Chiao