Eure Meinung
-
Stefan benutz mal Klassen!
Und verzichte auf fgets.
-
Also mit Klassen kenn ich mich noch nicht so aus. Mach ich aber noch. Ist erstmal der anfang. Ich weiß nicht mit was ich fgets ersetzen könnte da fgets ja begrenzt ist. Mit gets könnte es ja passieren das der benutzer trotzdem länger schreibt oder?
-
std::getline
-
getline ist aber kein standart soviel ich weiß.
-
Du solltest sauberer Einrücken!
Und mach nicht immer so viel Leerabstand, das macht alles nur noch unübersichtlicher!
//***INCLUDES***// #include <iostream> using namespace std; //***FUNCTIONS***// int funktion() { //... } //***MAIN FUNCTION***// void main() { //... }So würde ich es machen...
-
Stefan311 schrieb:
getline ist aber kein stan**** soviel ich weiß.
Falsch. Ist Standart!
-
Also im C++ Standart?
Ich weiß nähmlich das es kein C Standart ist:
-
Vergiss das Pronix-Buch wenn du C++ lernen willst.
-
Also ist getline standart in C++.(?)

-
ja.
-
Öhm, Stefan...
Wie lernst du denn C++?
Mit einem C-Tutorial?
Stefan311 schrieb:
Ich weiß nähmlich das es kein C stan**** ist:
Und daraus schließt du, dass es auch kein C++-Standard ist?

-
Stefan311 schrieb:
Also im C++ stan****?
Ich weiß nähmlich das es kein C stan**** ist:Warum zensierst du "Standard"? Ich kann es nicht verstehen...
-
Also ich weiß nicht wo kann ich denn standart von c++ sehen?
Außerdem nein ich lerne Volkards c++ kurs.
Und ich probiers jetzt doch mit klassen aber da kommt nur falsches heraus.
die main.cpp:
#include <iostream> #include <string> #include <fstream> #include "Klassen.hpp" using namespace std; prog program; int main() { while(program.aus()==false) { program.start(); } return 0; }Die include mit klassen:
#include <iostream> #include <string> #include <fstream> #include <windows.h> using namespace std; class prog { private: int lange; int i; ifstream in; ofstream out; bool an; public: char pws[]; int erststart() { remove("keys.txt.crpt"); remove("psw.txt.crpt"); remove("langa.txt.crpt"); cout<<"Sie haben das Programm zum ersten mal gestartet oder daten wurden gelöscht.\n"; cout<<"Bitte geben sie die laenge des passworts ein: "; cin>>lange; //----------------------------------------------- //Verschlüsseln und aus und einlesen lange=lange+52; out.open("langa.txt.crpt"); out<<lange; out.clear(); in.open("langa.txt.crpt"); in>>lange; in.clear(); lange=lange-52; cout<<"Bitte geben sie ein Passwort(maximal "<<lange<<" buchstaben) ein da die Keys gespeichert werden: "; cin.clear(); fgets(pws,(lange-1),stdin); i=0; while(i<=lange-1) { pws[i]=pws[i]+2; i++; } cout<<pws; cin.get(); cin.get(); out.open("psw.txt.crpt"); out<<pws; Sleep(1000); cout<<"Passwort wurde eingestellt"; cin.get(); }; int start() { an=true; cout<<"Willkimmen"; in.open("psw.txt.crpt"); if(!in) { in.clear(); erststart(); } else { } }; bool aus(int d) { bool ann; if(d==1) { ann=false; } else if(d==2) { ann=true; } else { return ann; } }; };Ich weiß alles ein bisschen undeutlich. aufjedenfall kommt bei der passwort eingabe ein Fehler:
und zwar hier:Aus include:
lange=lange-52; cout<<"Bitte geben sie ein Passwort(maximal "<<lange<<" buchstaben) ein da die Keys gespeichert werden: "; cin.clear(); fgets(pws,(lange-1),stdin);ich hab es mit getline,cin.getline,gets etc ausprobiert. immer sind dort
schon bevor man was eingibt smilies.Warum?
Ich hab mir überlegt vielleicht darf ich nicht direkt auf die Variabeln zugreifen mit denn Funktionen kann das sein?Ps:Ich zensiere kein Standart. Das geht automatisch.
-
1. Wie oft muss eigentlich das Wort Standard noch zensiert werden bis du schnallst, dass es eben Standard heißt?
2. Ich finde deine Formatierung nach wie vor schrecklich (da inkonsistent).
3. Ich befürchte char pws[]; wird nicht das machen, was du willst. Nimm ein großes Array oder einen Zeiger auf char.
-
ok 1. Ich bin leider nicht gut in Deutsch. Aber gut Standard.
2. ich hab das jetzt verbessert.
3. Ich hatte was missverstanden an klassen. Jetzt bin ich dabei was richtiges daraus zu machen.
-
So jetzt hab ich das schon soweit fertig das man verschlüsseln kann.
die main.cpp
#include <iostream> #include <string> #include <fstream> #include "Klassen.hpp" using namespace std; int erststart(); prog program; int main() { int i; program.aus(1); while(program.aus(3)==false)//überprüfen ob Proggramm aus soll { if(program.dateipruefer()==true)//Dateien überprüfen(im momen verfäscht da man sonst nichts testen kann) { program.loescheall(); erststart(); } else cout<<"\nNochmer? 1 ja 2 nein\n";//nochmer? cin>>i; if(i==1) { int key; //Schlüssel char* dname; //Dateiname cout<<"\nDateiname: "; cin>>dname; cout<<"\nKey: "; cin>>key; program.einlesen(dname,key); //einlesen verschlüsseln speichern } else { program.aus(2); //aus einstellen } cout<<"Bis dann."; cin.get(); cin.get(); } return 0; } int erststart() { }Die include:
#include <iostream> #include <string> #include <fstream> #include <windows.h> using namespace std; class prog { private: int lange; int i; ifstream in; ofstream out; char pws[]; bool an; public: int loescheall() { remove("keys.txt.crpt"); remove("psw.txt.crpt"); remove("langa.txt.crpt"); }; bool dateipruefer() //Datei prüfen { in.open("psw.txt.crpt"); if(!in) { in.clear(); //Wenn sie nicht existiert wird false zurück gegeben return false; } else { in.clear(); return true; // '' '' '' '' '' true '' '' } }; int aus(int d) //Das ein auschalt modul { bool ann; if(d==1) { ann=false; } else if(d==2) { ann=true; } else { return ann; } }; char crypt(char ch,char key)//verschlüsseln { return ch+key; } char einlesen(char* dname,char key)//einlesen { char* ende=".crpt"; char infile; in.open(dname); strcat(dname,ende); //.crpt dranhängen out.open(dname); while(!in.eof()) //verschlüsseln { char ch=in.get(); out<<crypt(ch,key); } } };Jetzt ist es auch übersichtlicher. Ich glaube das wird mein erstes richtig gutes Programm mit oop in C++.

-
Stefan311 schrieb:
Jetzt ist es auch übersichtlicher. Ich glaube das wird mein erstes richtig gutes Programm mit oop in C++.

du wolltest es ja so (von gut oder gar oop kann wohl kaum die Rede sein):
die main.cpp
#include <iostream> #include <string> #include <fstream> #include "Klassen.hpp" using namespace std; int erststart();oop?
prog program;oop?
int main() { int i; program.aus(1); while(program.aus(3)==false)//überprüfen ob Proggramm aus soll { if(program.dateipruefer()==true)//Dateien überprüfen(im momen verfäscht da man sonst nichts testen kann) { program.loescheall(); erststart(); } else cout<<"\nNochmer? 1 ja 2 nein\n";//nochmer? cin>>i; if(i==1) { int key; //Schlüssel char* dname; //Dateiname cout<<"\nDateiname: "; cin>>dname; cout<<"\nKey: "; cin>>key; program.einlesen(dname,key); //einlesen verschlüsseln speichern } else { program.aus(2); //aus einstellen } cout<<"Bis dann."; cin.get(); cin.get(); } return 0; } int erststart() { }Die include:
#include <iostream> #include <string> #include <fstream> #include <windows.h> using namespace std; class prog { private: int lange; int i; ifstream in; ofstream out; char pws[];c++?
bool an; public: int loescheall() { remove("keys.txt.crpt"); remove("psw.txt.crpt"); remove("langa.txt.crpt"); }; bool dateipruefer() //Datei prüfen { in.open("psw.txt.crpt"); if(!in) { in.clear(); //Wenn sie nicht existiert wird false zurück gegeben return false; } else { in.clear(); return true; // '' '' '' '' '' true '' '' } }; int aus(int d) //Das ein auschalt modul { bool ann; if(d==1) { ann=false; } else if(d==2) { ann=true; } else { return ann; } };reicht nicht ein bool fuer ann?
char crypt(char ch,char key)//verschlüsseln { return ch+key; }std::string?
char einlesen(char* dname,char key)//einlesen { char* ende=".crpt"; char infile; in.open(dname); strcat(dname,ende); //.crpt dranhängen out.open(dname); while(!in.eof()) //verschlüsseln { char ch=in.get(); out<<crypt(ch,key); } }std::string?
};Schau dir nochmal das Design von Klassen an und ueberlege, ob hier eine Klasse sinnvoll ist. Warum gibt es hier kein Konstruktor? Was ist mit Kopieren der Klasse? Destruktor? Warum verwendest du ueberall char statt std::string? Du solltest anfangen deinen Code sauber einzuruecken. So faellt es einem schwer alles zu lesen.
-
Also Stings kanns du mir da eine Seite darüber empfehlen weil ich immer wenn
ich strings nutzen will mit gets,fgets und getline auf die nase gefallen weil
die nur chars wollen.
OOP ich komme irgendwie nicht dahinter. Das ist doch einfach um funktion
einfacher zu sehen,übersichtlicher. oder?
-
Stefan311 schrieb:
Also Stings kanns du mir da eine Seite darüber empfehlen weil ich immer wenn
ich strings nutzen will mit gets,fgets und getline auf die nase gefallen weil
die nur chars wollen.
OOP ich komme irgendwie nicht dahinter. Das ist doch einfach um funktion
einfacher zu sehen,übersichtlicher. oder?
Nein. Einfach gesagt, ist es lediglich ein Abstraktionsmittel, um Gegenstände der realen Welt oder unserer Anschauung zu einem "Ding" in einem Programm zusammenzufassen. Du schaust dir an, was für Eigenschaften dein Betrachtungsgegenstand hat und welche Aktionen es ausführen kann. Eine Katze hat z.B. ein Gewicht, eine Augenfarbe, ein Alter usw. und kann fressen, schlafen, miauen usw. Also kapselst du das alles in eine Klasse Katze mit den Objektvariablen gewicht, augenfarbe und alter und den Methoden fressen(), schlafen und miauen(). (Sry für das Beispiel
)Du solltest jedoch nicht versuchen (wie du es gerade gemacht hast), auf Teufel komm raus Funktionen in eine Klasse zu pressen, nur um irgendwie OOP zu programmieren.
-
Nein. Einfach gesagt, ist es lediglich ein Abstraktionsmittel, um Gegenstände der realen Welt oder unserer Anschauung zu einem "Ding" in einem Programm zusammenzufassen. Du schaust dir an, was für Eigenschaften dein Betrachtungsgegenstand hat und welche Aktionen es ausführen kann. Eine Katze hat z.B. ein Gewicht, eine Augenfarbe, ein Alter usw. und kann fressen, schlafen, miauen usw. Also kapselst du das alles in eine Klasse Katze mit den Objektvariablen gewicht, augenfarbe und alter und den Methoden fressen(), schlafen und miauen(). (Sry für das Beispiel
)Also ich weiß ja wie du es meinst (so hab ich mir das mit den klassen auch gedacht).
Aber ich verstehe nicht wie ich das jetzt hier einsetzen soll?
Da jemand das auf der ersten seite erwähnte. OOP geht hier nicht ja.(?)