Zum Inhalt springen

Brauche dringend HILFE!!!!


needHelp86

Empfohlene Beiträge

Hallo Leute. Ich habe ein GROßES Problem..... Ich habe eine Aufgabe bekommen die ich nicht gelöst bekomme. Habe den ersten Punkt der Aufgabe gelöst aber die anderen zwei bekomme ich einfach nicht hin. Das Problem ist, ich muss das Programm bis Donnerstag abgeben. Könnt ihr mir vieleicht weiter helfen???

BITTE!!!!

Aufgabe:

Entwickeln Sie ein interaktives C-Programm zur

Kontrolle der Vertragstreue von Lieferanten

Unter Nutzung der vorhandenen Datei VERTRAG.DAT sind wahlweise anzuzeigen:

1. die Namen aller Hauptlieferanten (Vertragsmenge im Bsp. > 500)

2. alle Angaben zu Verträgen mit einem Lieferanten, vom Nutzer aus einer

alphabetisch sortierten Liste aller Lieferanten zu wählen, geordnet nach Artikeln

und unter Auflistung der Gesamtvertragsmenge bei Mehrfachlieferung eines

Artikels,

3. die Namen aller Lieferanten bei denen bis zu einem, vom Nutzer einzugebenden

Termin keine Abweichungen zwischen Vertrags- und Liefermenge auftraten.

Hinweis:

Die Datei VERTRAG.DAT befindet sich auf dem Server (Unterverzeichnis

Aufgaben/Daten). Lesen Sie dazu auch die Datei Hinweise.doc / .pdf!

Die Datei hat dabei folgende Struktur:

struct Satz

{

char Vertragsnummer[7];

char Artikel[21];

char Lieferant[21];

short Vertragsmenge;

short Liefertermin[3];

short Liefermenge;

};

Und soweit bin ich bis jetzt. Und komme einfach mit Punkt 2 und 3 nicht zurecht.

#include <stdio.h>


struct vertrag                                  //Einlesen der Struktur

       {

           char vertrnr[7];

           char art[21];

           char liiferant[21];

           unsigned short vertagsmenge;

           unsigned short liefertermin[3];

           unsigned short liefermenge;

       }__attribute__((packed))vertrag;


int main(int argc, char *argv[])

{

    char Auswahl;

    int i;

    i=0;



    FILE*Dateiptr;


    char *datei_auswahl= "vertrag.dat";


    printf("\n\t============\n");

    printf("\t=== Aufgabe ===\n");

    printf("\t=============\n\n");


    if (!(Dateiptr = fopen(datei_auswahl,"rb")))

    {

       printf("Beim oeffnen der Datei %s ist ein Fehler aufgetreten.\n", datei_auswahl);

       getch();

    }

    else

    {

        printf("Menue:\n");

        printf("\tNamen aller Hauptlieferanten: (1)\n");

        printf("\tBeenden: (4)\n");

        printf("\tAuswahl:");


    }


    putch(Auswahl = getch());


    switch (atoi(&Auswahl))

    {

           case 1:printf("\n\n\n\tName aller Hauptlieferanten:\n\n");

           while (fread(&vertrag, sizeof(vertrag),1, Dateiptr) == 1)

           {

                 if (vertrag.vertagsmenge>500)

                 {

                    i++;

                    printf("\t\t- %s\n",vertrag.liiferant);

                 }

           }

           break;


           case 4:printf("\n\n\n\tBeliebige Taste druecken zum beenden!");

           break;

    }


    getch();

    return(0);

};

Link zu diesem Kommentar
Auf anderen Seiten teilen

Aufgabe 2 und 3 wirst du nicht "im Vorbeigehen", also während du die Datei durchgehst, erledigen können. Du musst dir eine geeignete Datenstruktur überlegen, die du im Arbeitsspeicher vorhältst.

Für Aufgabe 2 wäre das natürlich zunächst mal eine Liste der Lieferanten, die du dann alphabetisch sortierst. Damit solltest du anfangen.

Und nebenbei: "Brauche dringend HILFE!!!!" ist ein ausgesprochen schlechter Threadtitel. Hilfe braucht so ziemlich jeder, der hier einen Thread aufmacht, und die GROSSSCHREIBUNG und Satzzeicheninflation hat auch keinen Mehrwert, sondern schreckt nur potenzielle Helfer ab.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke @klotzkopp

Naja die Großschreibung drückt nur aus wie Aussichtslos meine Lage ist. Mein Problem ist ich weiß nicht wie ich das in einen Quellcode bringe. Irgendwie fehlt mir da das KnowHow... Ich muss die Aufgabe aber bis Donnerstag abgeben sonst darf ich keine Prüfung mitschreiben. Ehrlich gesagt bin ich sehr verzweifelt :(.

Hab hier mal einen Link dort ist beispielsweise die VERTRAG.DAT enthalten. Weiß nicht ob es euch was hilft. Aber ich bin am sterben hier.........

RapidShare: 1-CLICK Web hosting - Easy Filehosting

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Klotzkopp. Ich würde das ja sehr gerne Umsetzten aber ich hab keine Ahnung wie.... Das ist mein Problem. Mir fehlt da irgendwie das wissen für.

Und warum fehlt irgendwie das Wissen? Dein Auftritt hier als völlig Ahnungsloser passt so gar nicht zum Schwierigkeitsgrad der Aufgabe, schon gar nicht, wenn das Voraussetzung für eine Prüfung sein soll.

Und was möchtest du jetzt von uns? Die Aufgabe erfordert Kenntnisse in dynamischen Datenstrukturen, Dateioperationen, Sortieren und dem Umgang mit Datumsangaben. Das ist nichts, was man dir hier bis Donnerstag beibringen könnte, zumal wir offenbar bei Adam und Eva anfangen müssten. Wenn du so ahnungslos bist, wie du hier vorgibst, ist diese Lösung für Teil 1 (die übrigens fehlerhaft ist) vermutlich auch nicht von dir selbst geschrieben.

Wir können dir bei konkreten Einzelproblemen helfen, aber wenn du dich stur stellst und einfach sagst: "Ich kann das nicht", können wir auch nichts machen. Du erwartest hoffentlich nicht, dass hier jemand deine Hausaufgaben macht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zur 1:

If an error occurs, or the end-of-

file is reached, the return value is a short object count (or zero).

The function fread() does not distinguish between end-of-file and error;

callers must use feof(3) and ferror(3) to determine which occurred. The

function fwrite() returns a value less than nitems only if a write error

has occurred.

Ich würds so machen:

case 1:printf("\n\n\n\tName aller Hauptlieferanten:\n\n");

           while (fread(&vertrag, sizeof(vertrag),1, Dateiptr) != 0)

           {

                printf("\t\t- %s\n",vertrag.liiferant);

           }

           if (feof(Dateiptr) ....


           break;

Zur 2:

Ich verstehe ehrlichgesagt die Aufgabenstellung nicht ganz, aber um eine Liste zu sortieren speicherst du alle Strings in einem String-Array (char **) und übergibst dieses an die Methode qsort. Dann haste es sortiert und kannst damit weiterarbeiten

Zur 3:

Termin einlesen, durch alle Aufträge durchgehen (wie 1) und bei allen Objekten, bei denen das Datum passt, schauen ob Vertrags- und Liefermenge übereinstimmen, wenn nein, ausgeben, das sollte recht einfach im Gegensatz zur 2 sein

//Ach ja, es heißt übrigens Lieferant, nicht Liiferant

Bearbeitet von konsti4u
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...