Hilfe bin Anfänger !
-
davidhase83 schrieb:
Weiß nicht mal, wie ich richtig anfangen soll .Ich habe schon ein Vorstellung wie es funktionieren soll, aber ich bekomme es einfach nicht in die tat umgesetzt
Seid 6 tage versuch ich das Programm zusammen zubekommen.
kannst du mir bitte ein Beispiel geben wie ich das mit einem Array realisieren kann.
PS: ich benutze Visual Studio 2005
Hier hast du mal das grobe Gerüst. Läuft auch soweit schon.
#include <stdio.h> #include <stdlib.h> #include <string.h> /* --------------------------------------------------------- */ /* hilfsfunktionen */ /* --------------------------------------------------------- */ static void myflush(){ while (getchar()!='\n'); } static void entferne_nextline(char *s) { for (; s && *s != '\n'; ++s); if (s) *s='\0'; } /* --------------------------------------------------------- */ /* artikel */ /* --------------------------------------------------------- */ typedef struct { int Nummer; char Name[50]; float Preis; int Bestand; } artikel_t; static artikel_t eingabe_artikel() { artikel_t a; printf("Bitte geben sie Platznummer ein: "); scanf("%i",&a.Nummer); myflush(); printf("Bitte geben sie den Name ein: "); fgets(a.Name, 50, stdin); entferne_nextline(a.Name); printf("Bitte geben sie den Preis ein: "); scanf("%f",&a.Preis); myflush(); printf("Bitte geben sie den Bestand ein: "); scanf("%i",&a.Bestand); myflush(); return a; } static void print_artikel(artikel_t a) { printf(" Platznummer: %d\n", a.Nummer); printf(" Name: %s\n", a.Name); printf(" Preis: %.2f\n", a.Preis); printf(" Bestand: %d\n", a.Bestand); } /* --------------------------------------------------------- */ /* lager */ /* --------------------------------------------------------- */ typedef struct { int size, maxsize; artikel_t *artikel; } lager_t; static lager_t *neues_lager(int maxsize) { lager_t *l = malloc(sizeof(*l)); l->maxsize = maxsize; l->size = 0; l->artikel = malloc(maxsize * sizeof(artikel_t)); memset(l->artikel, 0x0, maxsize * sizeof(artikel_t)); return l; } static void add_artikel(lager_t *l, artikel_t a) { /* hier könntest du noch überprüfen, ob das element schon im lager ist */ if (l->size == l->maxsize) { printf("(E) Lager ist voll!\n"); return; /* anstelle einer fehlermeldung kannst du das array l->artikel */ /* dynamisch vergrößern. tip: malloc/free, realloc, memcpy */ } l->artikel[l->size] = a; l->size++; printf("Element: %d hinzugefuegt\n", l->size); } static void print_lager(lager_t *lager) { int i; printf("---------------------------------------------------------\n"); printf("Lagerinhalt: size: %d maxsize: %d\n", lager->size, lager->maxsize); for (i=0; i<lager->size; ++i) { printf(" Artikel: %d\n", i); print_artikel(lager->artikel[i]); } } static void del_lager(lager_t *lager) { if (!lager) return; free(lager->artikel); free(lager); } /* --------------------------------------------------------- */ /* hauptroutinen */ /* --------------------------------------------------------- */ static int menu() { int ret; printf("1: Neuaufnahme von Artikeldaten\n"); printf("2: Laden der Artikeldaten\n"); printf("3: Speichern der Artikeldaten\n"); printf("4: Loeschen von Artikeldaten\n"); printf("5: Suchen von Artikel\n"); printf("6: Sortieren nach allen vier Kriterien\n"); printf("7: Exit\n"); printf("8: Lager ausgeben\n"); printf("\nBitte waehlen Sie einen Menuepunkt: "); scanf("%i", &ret); myflush(); return ret; } int main(){ lager_t *lager = neues_lager(20); while (1) { int menuepunkt = menu(); switch (menuepunkt) { /*------------------------------------------------------------------------------------------------------------------------------------------------*/ case 1: printf("Neuaufnahme von Artikeldaten\n"); { artikel_t a = eingabe_artikel(); add_artikel(lager, a); } break; /*------------------------------------------------------------------------------------------------------------------------------------------------*/ case 2: printf("Laden der Artikeldaten\n"); break; /*------------------------------------------------------------------------------------------------------------------------------------------------*/ case 3: printf("Speichern der Artikeldaten\n"); break; /*------------------------------------------------------------------------------------------------------------------------------------------------*/ case 4: printf("Loeschen von Artikeldaten\n"); break; break; /*------------------------------------------------------------------------------------------------------------------------------------------------*/ case 5: printf("Suchen von Artikel\n"); break; break; /*------------------------------------------------------------------------------------------------------------------------------------------------*/ case 6: printf("Sortieren nach allen vier Kriterien\n"); break; break; /*------------------------------------------------------------------------------------------------------------------------------------------------*/ case 7: printf("Druecken sie die Entertaste um das Progamm zu beenden....\n"); { return 0; break; } case 8: print_lager(lager); break; default: printf("einen ungueltigen Punkt\n"); } } del_lager(lager); lager = NULL; return 0; }
Den Rest schaffst du dann aber alleine, oder?
Du lernst übrigens nichts, wenn ich dir das gesamte Programm schreibe.
Wenn du willst, schreibe ich dir das gesamte Programm. Da bleibt dann
nur zu klären, was du bezahlst!Ich weiß noch nicht, was deine Platznummer für einen Sinn macht.
Vielleicht musst du die add_artikel() Funtkion noch anpassen, damit
du direkt an dieser Nummer dein Element speicherst. Wenn du das dann
so machst, brauchst du auch die Variable size in lager_t nicht mehr.
Naja, es ändert sich halt ein wenig... aber das ist ja immer so.Ich hoffe, du kommst damit nun voran.
Gruß mcr
-
Ich danke die erstmal
Melde mich heute abend noch mal ,ich versuche es mal fertig zu schreiben.
MFG David