Filter Programm
Verfasst: Di Mai 01, 2012 1:53 pm
Hallo zusammen
Ich habe ein Filterprogramm geschrieben und bin schon fast fertig. Es geht um das Filtern der Ausgabe der kompletten Oskar-Datenbank (siehe Anhang). Die Regeln sind gesetzt (bis auf ein paar nicht lösbare Zeilen, aber das ist jetzt nicht wichtig). Jetzt bei der Ausgabe in der .txt (siehe Anhang) wird bei jeder Zeile ein "*" ausgegeben, der eigentlich nur beim nominierten gewinner ausgegeben werden sollte und die Notes, die ich nicht haben möchte, werden auch wieder eingeschrieben. Ist es möglich das zu verhindern?
Hier ist der Code:
Gruss
GabeBU
Ich habe ein Filterprogramm geschrieben und bin schon fast fertig. Es geht um das Filtern der Ausgabe der kompletten Oskar-Datenbank (siehe Anhang). Die Regeln sind gesetzt (bis auf ein paar nicht lösbare Zeilen, aber das ist jetzt nicht wichtig). Jetzt bei der Ausgabe in der .txt (siehe Anhang) wird bei jeder Zeile ein "*" ausgegeben, der eigentlich nur beim nominierten gewinner ausgegeben werden sollte und die Notes, die ich nicht haben möchte, werden auch wieder eingeschrieben. Ist es möglich das zu verhindern?
Hier ist der Code:
Code: Alles auswählen
#include <stdio.h>
#include <stdlib.h>
//#include <windows.h>
#include <iostream>
#include <string>
using namespace std;
struct entry {
string year;
};
bool is_number(const std::string& s)
{
for (int i = 0; i < s.length(); i++) {
if (!std::isdigit(s[i]))
return false;
}
return true;
}
bool is_upper(const std::string& s)
{
locale loc;
char c;
for (size_t i=0; i<s.length(); ++i)
{
c=s[i];
if (!isupper(c,loc))
return false;
}
return true;
}
bool is_afilm ( const std::string& s)
{
return s.find_first_of("--") > -1;
}
int main (void)
{
FILE *datei;
char line[1000];
int i ;
i = 500;
datei = fopen ("oscardateien.txt", "r");
char c;
char a[20];
const char *p;
char abstand[] = ",";
FILE * ausgabe = fopen("ausgabe.txt","w+");
while(!feof(datei))
{
fgets(line,i,datei);
string s_line (line);
// year
if( s_line.find_first_of("--") == -1 && is_number(s_line.substr(0, 4)))
{
int yearEnd = s_line.find_first_of(' ');
string year = s_line.substr(0,yearEnd);
cout << year + "\n";
p = year.c_str();
strcpy( a, year.c_str());
fprintf(ausgabe,a);
fprintf(ausgabe,abstand);
}
//category
else if ( s_line.find_first_of("--") == -1 && is_upper(s_line.substr(0,s_line.find_first_of(' '))))
{
cout << "Kategorie:" << s_line + "\n";
p = s_line.c_str();
strcpy( a, s_line.c_str());
fprintf(ausgabe,a);
fprintf(ausgabe,abstand);
}
//film
/*else if (s_line.find_first_of("--") > string::npos)
{
cout << "Film:" >> s_line + "\n";
}*/
//Vorname
else if ( s_line.find_first_of("*") != -1)
{
cout << "Gewinner:" << s_line;
strcpy( a, s_line.c_str());
fprintf(ausgabe,a);
}
//notes
else if (s_line.substr(0,5) == "[NOTE")
{
}
//fliesstext
else if ( s_line.find_first_of("--") == -1 && s_line.substr(0,2) == "To")
{
cout <<"Beschreibung" << s_line + "\n";
strcpy( a, s_line.c_str());
fprintf(ausgabe,a);
}
//vorname
else
{
cout << "Film:" << s_line + "\n";
}
//fprintf(ausgabe,line,c);
}
//music
//sound
//director
//
fclose (datei);
system("PAUSE");
return 0;
}
GabeBU