008
14.01.2009, 22:41 Uhr
~wenigerVerzweifelt
Gast
|
also haben jetzt halben tag inverstiert und unten ist das ergebnis soweit... die ??? sind die kleinigkeiten die wir leider noch nich hinkriegen, aber es ist immer das selbe problem, wie ich sicherlich sehen könnt... wäre traumhaft wenn ihr helfen könnten die fragezeichen erstma nur zu entschlüsseln.... den rest des programms schreiben wir dann morgen weiter vielen dank im voraus!
C++: |
// Lagerneu.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung. //
#include "stdafx.h" #include <stdio.h> #include <string.h> int n; struct Teil { char Bezeichnung[81]; int Teilenummer; int Anzahl; }; typedef Teil *Lagerliste;
int LeseTeil(FILE *f, Teil &t) { char buffer[256]; if(!fgets(buffer,255,f)) return EOF; for(char *d = t.Bezeichnung, *s = buffer;(*d = *s)&&(*d != '\n');d++,s++); if(*d == '\n') *d = '\0'; if(!fscanf(f,"%d\n",&t.Teilenummer)) return EOF; if(!fscanf(f,"%d\n",&t.Anzahl)) return EOF; return 1; }
void SchreibeTeil(FILE *f, const Teil &t) { fprintf(f,"%s\n",t.Bezeichnung); fprintf(f,"%d\n",t.Teilenummer); fprintf(f,"%d\n",t.Anzahl); } void SchreibeTeilFormatiert(const Teil &t) { printf("| %-30s | %8d | %4d |\n",t.Bezeichnung,t.Teilenummer,t.Anzahl); } void LeseListe(FILE *f,Lagerliste &Liste, int &n) { fscanf(f,"%d\n",&n); Liste = new Teil[n]; for(int i = 0; i < n; i++) { LeseTeil(f,Liste[i]); } } void SchreibeListe(FILE *f, Lagerliste Liste, int n) { fprintf(f,"%d\n",n); for(int i = 0; i < n; i++) { SchreibeTeil(f,Liste[i]); } } void SchreibeListeFormatiert(Lagerliste Liste, int n) { system("CLS"); printf("| Bezeichnung | TeileNr. | Anz. |\n"); printf("+--------------------------------+----------+------+\n"); for(int i = 0; i < n; i++) { SchreibeTeilFormatiert(Liste[i]); } printf("+--------------------------------+----------+------+\n"); }
// Unterprogramme zum Sortieren
#define nachBezeichnung 1 #define nachTeilenummer 2 #define nachAnzahl 3
void sortieren( ???????) { switch(???) { case nachBezeichnung: for(int i=0; i<n-1; i++) { int min = i; for (int k=i+1; k<n; k++) { if (strcmp(??? .Bezeichnung, ??? .Bezeichnung) < 0) { min = k; }; }; Artikel speicher = ???[i]; ???[i] = ???[min]; ???[min] = speicher; }; break;
case nachTeilenummer: for(int i=0; i<n-1; i++) { int min = i; for (int k=i+1; k<n; k++) { if (???[k].Teilenummer < ???[min].Teilenummer) { min = k; }; }; ??? speicher = ???[i]; ???[i] = ???[min]; ???[min] = speicher; }; break; case nachAnzahl: for(int i=0; i<n-1; i++) { int min = i; for (int k=i+1; k<n; k++) { if (???[k].Anzahl < ???[min].Anzahl) { min = k; }; }; Artikel speicher = ???[i]; ???[i] = ???[min]; ???[min] = speicher; }; break; }; } int _tmain(int argc, _TCHAR* argv[]) { FILE *Bestand; Lagerliste liste; int AnzTeile;
// Code zum Oeffnen der Datei "Lager.dat" mit Lesezugriff und Dateivariable Bestand Bestand = fopen("lager.dat", "r"); LeseListe(Bestand,liste,AnzTeile); SchreibeListeFormatiert(liste,AnzTeile); system("PAUSE"); char ende; do { int ausw; do { system("CLS"); printf("Aktionsauswahl:\n"); printf("\t1\tSortieren nach Bezeichnung\n"); printf("\t2\tSortieren nach Teilenummer\n"); printf("\t3\tSortieren nach Anzahl\n"); printf("\t4\tNeuer Eintrag\n"); printf("\t5\tSpeichern\n"); printf("Bitte Auswahl eingeben: "); scanf("%d",&ausw); fflush(stdin); } while (ausw > 5 || ausw < 1);
switch(ausw) { case '1': sortieren(nachBezeichnung); break; case '2': sortieren(nachTeilenummer); break; case '3': sortieren(nachAnzahl); break; case '4': sortList(Posten, byAnzahl); printList(Posten); break; case 'x': wiederhole = false; break; default: break; }; };
printf("\n"); switch(ausw) { case 1: sortieren(nachBezeichnung); break; case : sortieren(nachTeilenummer); break; case 3: sortieren(nachAnzahl); break;
/* case 4 : { // Neuen Eintrag anlegen } break; case 5: { // Speichern */
fclose(Bestand); // Schließen der Datei system("CLS"); SchreibeListeFormatiert(liste,AnzTeile); char s; printf("Bestand speichern:[j/n]"); s = getchar(); if (s == 'j' || s == 'J') {
// Code zum Oeffnen der Datei "Lager.dat" mit Schreibzugriff und Dateivariable Bestand
Bestand = fopen("lager.dat", "w"); SchreibeListe(Bestand,liste,AnzTeile); printf("Bestand gespeichert...\n"); fclose(Bestand); system("PAUSE"); } fflush(stdin); } break; default : printf("Noch nicht implementiert"); } system("CLS"); SchreibeListeFormatiert(liste,AnzTeile); system("PAUSE"); printf("Neue Aktion? [j/n] : "); ende = getchar(); } while (ende != 'n' && ende != 'N');
return 0; }
|
Dieser Post wurde am 15.01.2009 um 08:40 Uhr von FloSoft editiert. |