000
20.06.2005, 22:25 Uhr
Geeignetab18
|
Hi also ich hab von einem Freund die Aufgabenstellung zu einem Testat bekommen und sitze nun selbst ratlos davor. Es handelt sich um ein Programm bei dem Meßreihen eingegeben werden sollen,danach in einer Datei gespeichert werden soll und wieder abgerufen werden müssen. Und noch einige andere Sachen.
Aber seht selbst und gebt mal bitte euren Senf dazu ab
C++: |
#include <stdlib.h> #include <stdio.h> #include <conio.h> #include <time.h> #include <fstream.h> #include <iostream.h>
struct element { char name[50]; char wert[20];
}; struct tm *newtime; time_t aclock; char katalog[50]; int menu (int modus); int filewahl (char fname[]); void kausgabe (char fname[]); void deingabe (char fname[]); void dausgabe (char fname[]); void mausgabe (char fname[]); void schreiben (void);
int main () { char fname[50]; int wahl,modus,err;
modus=0; do{ wahl=menu(modus); switch(wahl){
case 1: err=filewahl(fname); if(err==0) modus=1; break;
case 2: kausgabe(fname); break; case 3: dausgabe(fname); break;
case 4: mausgabe(fname); break;
case 5: deingabe(fname); break; } }while(wahl>0); return 0; }
int menu (int modus){ int wahl,err,maxfn;
do{ time(&aclock); newtime=localtime(&aclock); printf("%s", asctime(newtime)); err=0; maxfn=3; printf("0 Programmende\n"); printf("1 Messreihe erzeugen oder erweitern\n"); printf("2 Ausgabe des Katalogfiles\n"); printf("3 Ausgabe der Messreihen\n"); if(modus==1){ maxfn=5; printf("4 Ausgabe des Mittelwertes und Standardabweichung\n"); printf("5 Eingabe der Messreihen\n"); } scanf("%d",&wahl); if(wahl<0 || wahl>maxfn){ err=1; } }while(err>0); return wahl; } int filewahl (char fname[]){ FILE*fp; int err; char antw[10]; fflush(stdin); printf("Messreihe: "); gets(fname); fp=fopen(fname,"rb"); if(fp!=NULL){ fclose(fp); printf("Messreihe erweitern (j/n)?\n"); gets(antw); if(antw[0]=='j') {err=0;} else{err=1;} } else{ printf("Messreihe erzeugen (j/n)?\n"); gets(antw); if(antw[0]=='j'){ fp=fopen(fname,"wb"); fclose(fp); err=0; } else{err=1;} } return err; }
void kausgabe (char fname[]){ FILE*fp; struct element dsatz; int snr,sz,err; fp=fopen(fname,"rb"); snr=0; sz=0; while(!feof(fp)){ err=fread(&dsatz,sizeof(dsatz),1,fp); if(err>0){ snr++; sz++; printf("%s\n",dsatz.name); if(sz==10){ printf("Weiter mit Enter"); getchar(); sz=0; } } } return; }
void mausgabe (char fname[]){ FILE*fp; struct element dsatz; int anz,i,err; fp=fopen(fname,"rb"); anz=0; while(!feof(fp)){ err=fread(&dsatz,sizeof(dsatz),1,fp); if(err>0){ anz++; printf("%s\n",dsatz.wert); schreiben(); } } return; }
void deingabe (char fname[]){ FILE*fp; struct element dsatz; int snr,n,i; char antw[10];
fp=fopen(fname,"ab"); snr=0;
do{ printf("Wieviel Messwerte sollen eingelesen werden: "); scanf("%d",&n); fflush(stdin); for(i=1;i<=n;i++){ printf("%d. Messwert: ",i); gets(dsatz.wert); fwrite(&dsatz,sizeof(dsatz),1,fp); snr++; } printf("weiteren Datensatz eingeben (j/n)?: "); gets(antw); }while(antw[0]=='j'); fclose(fp); printf("%d neue Messwerte\n",snr); return; }
void dausgabe (char fname[]){ FILE*fp; struct element dsatz; int snr,sz,err; fflush(stdin); printf("Welche Messreihe soll angezeigt werden?: "); gets(fname); fp=fopen(fname,"rb"); snr=0; sz=0; while(!feof(fp)){ err=fread(&dsatz,sizeof(dsatz),1,fp); if(err>0){ snr++; sz++; printf("%s \n",dsatz.wert); if(sz==10){ printf("Weiter mit Enter"); getchar(); sz=0; } } } printf("%d Messwerte\n",snr); fclose(fp); return; }
//Routine zum Schreiben in eine Datei void schreiben() { ofstream out("C:\\test_output.txt"); //Befehl und Dateiname out<<"Hallo das ist ein Test-Text"; //Testtext }
|
Und ich komm jetzt nicht weiter und bekomme einige Sachen einfach nich hin!
P.S.: es ist schon lauffähig |