Terminplaner problem mit fstream

01/26/2017 16:58 DRTJ#1
hi

versuche mich momentan an einem Terminplaner bin soweit auch ganz gut gekommen. Er kann Daten speichern in einer txt und diese wieder Auslesen bei bedarf. Nun wollte ich noch einfügen das man den gewünschten Termin wieder rauslöschen kann. Komme einfach nicht dahinter wie ich das umsetzen kann. Bin noch SEHR neu im bereich Programmieren daher habe ich das alles vielleicht auch ganz falsch in Angriff genommen. Hoffentlich kann mir jemand helfen. Lade den Quellcode in einer Rar Datei hoch. THX schon mal im voraus.
Wenn jemand noch gute Tutorials kennt ( gerne auch Bücher ) kann mir die gerne per PN oder sonstigem weg Schicken :D
01/29/2017 00:28 .Inuyasha#2
Was du auf alle Fälle vermeiden solltest sind goto's. Die sorgen am Ende nur für Spaghetti-Code.
01/31/2017 03:35 in MIND#3
Um noch an .Inuyashas Post anzuknüpfen, hier ein paar Tipps:

Code:
using namespace std;
Du brauchst nicht den gesamten Namespace. Hol dir lieber die Member die du wirklich brauchst oder schreib halt das std:: jedes mal davor. Z.B.:
Code:
using std::cout //Dann kannst du im weiteren Code einfach cout << "Something"; schreiben
std::cout << "Something"; // statt den using Directives. Musst du aber jedes mal schreiben.
Globale Variabeln: GROOOOOOSSES, GROOOOOOOSSES no go! Macht deinen Code schwerer lesbar und kann zu schwer zu findenden Nebeneffekten führen. Verleg alle globalen Variabeln in eine Funktion / Klasse.

Code:
std::endl
Benutz statt std::endl besser '\n'. Der Grund dafür ist, dass std::endl den Stream flusht, was unnötige Arbeit ist (zugegeben, in deinem Programm wird das kaum merkbare Konsequenzen haben aber wenn du mal ein Programm mit ein paar 1000 writes in einen ostream hast, dann wirst du's merken.
Code:
std::cout << "Text" << '\n' //Besser;
Oder
std::cout << "Text\n"; //Besser
Code:
goto
Wie .Inuyasha erwähnt hat, bitte nicht benutzen.

Code:
char Ausgabe[21]
Benutz doch std::string. Das gibt dir mehr Möglichkeiten und Sicherheit.
Z.B.:
Code:
std::string input;
std::getline(std::cin, input);
Code:
if ( condition ) code...;
Benutz doch geschwungene Klammern um den Codeblock. In deinem Code z.B. bei
Code:
else if(Anfang == 0) //Termine und Aufgabe auslesen, speichern und ausgeben
f.open("Termine.txt", ios_base::in);
getline(f, Termin1);
getline(f, Aufgabe1);
Nur die erste Zeile nach dem if ist tatsächlich an die Bedingung geknüpft (in diesem Fall f.open(...)). Alles andere wird unabhängig davon immer durchlaufen.

Code:
float Datum;
???

Variabel-Deklaration:
Es ist guter Stil, Variabeln da du Deklarieren wo sie auch gebraucht werden (Blockdeklaration am Anfang einer Funktion ist 90er-Jahre Stil. Wenn möglich, initialisier sie auch gleich.