// jan.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//
#include "stdafx.h"
#include <math.h>
#include <conio.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct time{
int minuten;
double sekunden;
};
int main(void)
{
FILE *eingabe; //Pointer an den der Dateiname zugewiesen wird
FILE *ausgabe ; //Pointer für Textausgabe
FILE *error;
double trennzahl;
double fuel1,fuel2;
struct time drucktime1;
struct time drucktime2;
char *zeiger, i; //Zeiger zum Stringauslesen
char name_eingabe[10]; //Dateiname der Eingegeben wird
char * zeile;
int zaehler=0;
int rpm1,rpm2,temp1,temp2,speed1,speed2;
int richtig=0; //Zähler für Maschine 1 zählt die Richtigkeit der einzelnen Datensätze und überprüft
int richtig1=0; //Zähler für Maschine 2 zählt die Richtigkeit der einzelnen Datensätze und überprüft
int wurdegedruckt=0; //Zähler um den Überschriftendruck nach 20 Zeilen zu wiederholen;
//Aufruf aller Funktionen!
int inumber(char temparray[]); // Inumber überprüfung
int pnumber(char temparray[]); // Pnumber überprüfung
double rpm (double trennzahl); // RPM beider maschinen
double speedm2 (double trennzahl); //speed maschine 2
double fuelm2 (double trennzahl); // fuel maschine 2
double tempm2 (double trennzahl); // temp maschine 2
time timem1 (double trennzahl); // time maschine 1
time timem2 (double trennzahl); // time maschine 2
void druck1(time drucktime1,int rpm1, int speed1, double fuel1, int temp1); //Druck Funktion Maschine 1
void druck2(time drucktime2, int rpm2 ,int speed2,double fuel2,int temp2); //Druck Funktion Maschine 2
void druckstern(); // Fehler Print
printf ("Uebungsaufgabe 3: Datenfilter by Jan Knobloch SS 2005");
printf ("\n\n");
/* Abfrage des Dateinamens*/
printf ("Geben den Dateinamen der zu oeffnenden Datei ein:");
gets (name_eingabe);
/*Öffnen der Dateien*/
eingabe=fopen(name_eingabe, "r");
ausgabe=fopen("errors.txt", "w");
error=fopen("errors.txt", "w");
printf("%s",eingabe);
if (eingabe==NULL)
{
printf ("Datei ist leer/und oder nicht vorhanden!");
getch();
return 0;
}
printf ("Datei wurde erfolgreich eingelesen vielen Dank!\n\n");
getch();
//----------------------------------------------DRUCKEN DER KOPFZEILE DER AUSGABE----------------
printf (" Zeit Umdrehungen Geschwindigkeit Verbrauch Temperatur\n");
printf (" [m:s] [1/s] [km/h] [l/100km] [Grad C]\n");
//-----------------------------------------------------------------------------------------------
char trennzeichen;
while (!feof(eingabe))
{
fgets (zeile,100,eingabe);
for(i=0; i<strlen(zeile); i++) // Solange String nicht zuende ist soll zähler erhöht werden
{
if (zeile[i]=='$') // wenn trennzeichen Dollar gefunden wird wird trennzeichen auf Dollar gesetzt
{
trennzeichen='$';
break;
}
if (zeile[i]==',') // wenn trennzeichen Komma gefunden wird wird trennzeichen auf Komma gesetzt
{
trennzeichen=',';
break;
}
}
char temparray[100]; //Temparray zum ablegen von Teilstrings
int tempzaehler=0; // Zähler auf null
int data=0; // Stelle des Datensatzes auf null
richtig=0; // Rücksetzn von richtig
richtig1=0; //Rücksetzn von richtig2
zeile = strtok(zeile,"\n");
for(i=0; i<=strlen(zeile); i++) // Solange String nicht zuende ist soll zähler erhöht werden
{
if (zeile[i]!=trennzeichen && zeile[i]!= '\0') //Wenn zeichen im String nicht Trennzeichen und nicht Absatz
{
temparray[tempzaehler]=zeile[i]; // Dann wird string in Teilstring kopiert
tempzaehler++;
}
else // Ansonsten!
{
temparray[tempzaehler]='\0'; //Wird ein Stringende eingebaut
tempzaehler=0; //Tempzähler auf 0 gesetzt
data++; // Erhöhung des Datensatzes zum fangen in der if Schleife!
if (trennzeichen==',') // Aufteilen nach Maschine 1 und 2 durch Trennzeichen erkennung
{
switch (data){ // Datensatz 1 von Trennzeichen Komma wird bearbeitet
case 1:
//TIME
trennzahl=atof(temparray); //umwandlung des Strings in eine Double Zahl
richtig=(richtig+pnumber(temparray)); // Zähler zur endüberprüfung ob Zeile korrekt eingelesen wurde wird erhöht
drucktime1=timem1(trennzahl); // Umrechnung der Zahl mittels ihrer Funktion
break;
case 2: // Datensatz 2 von Trennzeichen Komma wird bearbeitet
//RPM
trennzahl=atof(temparray); //umwandlung des Strings in eine Double Zahl
rpm1=(int)(rpm(trennzahl)); // Umrechnung mittels ihrer Funktion
richtig=(richtig+inumber(temparray)); // Zähler zur endüberprüfung ob Zeile korrekt eingelesen wurde wird erhöht
break;
case 3: // Datensatz 3 von Trennzeichen Komma wird bearbeitet
//SPEED
trennzahl=atof(temparray); //umwandlung des Strings in eine Double Zahl
richtig=(richtig+inumber(temparray)); // Zähler zur endüberprüfung ob Zeile korrekt eingelesen wurde wird erhöht
speed1=((int)(trennzahl)); // Umrechnung mittels ihrer Funktion
break;