Lae6ge6k
Anmeldungsdatum: 19. Februar 2013
Beiträge: 566
|
Hallo, ich möchte mir eine kleine Datenbank Programmieren.
Für jeden Monat soll ein Ordner erstellt werden. Jeder Monats Ordner soll entweder 1 bis 12 oder besser Januar ... Dezember (Kalender aktuell) benannt sein.
Jeder Tag soll in einen Unterordner(Tagesaktuell) erstellt werden. Die Ordner des Tages sollen 1 bis 31 benannt sein. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 | #include <iostream>
#include <fstream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cstime>
#include <sstream>
using namespace std;
char *ctime(const time_t *time);
string ja,quelle,ziel,str,command,zeit,zeichen;
float g,s,galt,salt,gneu;
int befehl;
int main(int argc, char *argv[])
g=276.0;
s=223.0;
cout<< z.tm_mday <<endl;
cin>> befehl;
while (z.tm_mday==1) {
command="mkdir '/home/internet/Arbeitsfläche/Programmieren-quellcode/C++ output/Datei/Datei/2013/November/1/'";
system(command.c_str());
ofstream dataus;
dataus.open("/home/internet/Arbeitsfläche/Programmieren-quellcode/C++ output/Datei/Datei/2013/November/1/x.dat", ios_base::app);
printf ("Die lokale Zeit ist: %s", ctime (&rawtime));
dataus <<wochentag<<"."<<Monat<<"*"<<"Neuer Differenz-g-Variabel"<<endl;
dataus <<wochentag<<"."<<Monat<<"*"<<"Neuer Differenz-s-Variabel"<<endl;
dataus.close();
break;
}
|
Mein Problem ist das der obige Quelltext für einen Ordner dargestellt habe , für einen Jahr ist das zu Code-exessive (while ... , 11 Zeilen * 31 Tage * 12 Monate)=4092 Codezeilen ist, würde ich das so weiterführen. Ich suchte nach einer besseren Lösung fand die im internet nicht. Wer könnte mir helfen einen C++ Codelisting bereitzustellen, der möglichst wenig Codezeilen enthält, und der meinem Ziel am nächsten kommt?
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17607
Wohnort: Berlin
|
Ich habe meine Nase lange nicht mehr in die C++-Bibliotheken gesteckt, aber ein Paket für Internationalisierung sollte Dir Monatsnamen in allen gängigen Sprachen liefern können, eine weitere Zeitberechnungen vornehmen, eine dritte Verzeichnisse anlegen. Dass man Stings umständlich zusammensetzt, und dann diese als Kommando ans System schickt, ist Fehleranfällig, da ein "Jannuar" nicht als Fehler auffällt. Vollkommen indiskutabel sollten 11*31 Blöcke sein. Arbeite mit Funktionen, die kleine, klar umrissene Aufgaben haben, und Schleifen, die den Input erzeugen. Hatten wir nicht schon das Vergnügen über globale Variablen zu reden? Welchen Sinn haben die, solange Du alles in main machst? Wieso deklarierst Du sie ohne Initialisierung? Ich kriege hier mehrere Dinge nicht zusammen. "Andreas 1967" klingt, als seist Du 45, 46 Jahre alt. Die Frage sieht aber aus wie von einem Schüler, der von Programmieren keinen Dunst hat, und auch nicht haben will, sondern nur eine Lösung sucht - für den Lehrer/die Note. Da sind lauter Variablen, die nicht benötigt werden, aber deklariert sind. Andere werden referenziert ohne deklariert zu sein, geschweige denn initialisiert.
Ich suchte nach einer besseren Lösung
Als ob das, was Du da hast, überhaupt eine Lösung wäre. Das kompiliert ja nicht mals.
|
Lae6ge6k
(Themenstarter)
Anmeldungsdatum: 19. Februar 2013
Beiträge: 566
|
Das C++ Listing was ich am 24. November 2013 um 08:32 hier gepostet habe habe ich auch nicht kompiliert, ob das funktioniert weiss ich noch nicht. Dieses folgende C++ Quelltext Sniplet, füge ich in fast alle mein Quelltexte ein weil ich bin vergesslich und ob ich die brauch oder nicht; was ich hab , hab ich.
| #include <iostream>
#include <fstream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cstime>
#include <sstream>
|
Die Variablen sollen im späterne Programmverlauf sinnvoll nutzbar sein.
| string ja,quelle,ziel,str,command,zeit,zeichen;
float g,s,galt,salt,gneu;
|
user unknown> > Hatten wir nicht schon das Vergnügen über globale Variablen zu reden? Globale Variablen sind eigentlich nicht das Problem, ausser man hat mehrer tausend Seiten Quelltext, der auch noch unübersichtlich ist, und dann die globalen Variablen an der unpassendsten Stelle geändert werden. 46 bin ich schon, aber Schüler keiner mehr. Das habe ich nicht verstanden user unknown > Paket für Internationalisierung s.o
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17607
Wohnort: Berlin
|
Programmieren ist keine triviale Sache. Wenn Du 20 Variablen vorstellst, dann gehe ich auf die Suche - wo kommen sie her, wo gehen sie hin, was passiert mit ja? Wird es initialisiert? Nein. Wird es verwendet? Auch nicht. Dann bin ich gewohnt, dass sowas nicht vorkommt, und zweifle an mir selbst und lese den Wust 3x. Lege es dem Compiler vor, der rawtime nicht kennt. Also da sind 20 Variablen deklariert, die nicht benutzt werden, aber die, die benutzt werden, die sind nicht deklariert? Vielleicht falsch geschrieben? Schwer zu sagen, weil der überflüssige Müll den Blick auf's wesentliche verdeckt. Da macht es keinen Spaß auf Fehlersuche zu gehen. Räum Deinen Kram auf, bevor Du andere um Hilfe bittest. Wir haben besseres zu tun. Was Du später zu brauchen glaubst - kommentier es so lange aus. Variablen erst deklarieren wo sie verwendet werden und wenn möglich gleich initialisieren. Der Scope sollte so eng wie möglich sein, damit man nicht weit suchen muss, und Seiteneffekte ausgeschlossen werden können. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 | #include <iostream>
#include <fstream>
#include <cstdio>
#include <cstring>
// #include <cstime>
#include <ctime>
// #include <sstream>
#include <cstdlib>
using namespace std;
// char *ctime (const time_t *time);
// string ja, quelle, ziel, str, zeit, zeichen;
// float galt, salt, gneu;
// int main (int argc, char *argv[])
int main (void)
{
// float g=276.0f;
// float s=223.0f;
// cout << z.tm_mday << endl;
int befehl;
cin >> befehl;
while (true) // (z.tm_mday==1)
{
string command = "mkdir '/home/internet/Arbeitsfläche/Programmieren-quellcode/C++ output/Datei/Datei/2013/November/1/'";
system (command.c_str());
ofstream dataus;
dataus.open ("/home/internet/Arbeitsfläche/Programmieren-quellcode/C++ output/Datei/Datei/2013/November/1/x.dat", ios_base::app);
time_t rawtime;
printf ("Die lokale Zeit ist: %s", ctime (&rawtime));
int wochentag = -1, Monat = -1;
dataus << wochentag << "."<< Monat << "*" << "Neuer Differenz-g-Variabel" << endl;
dataus << wochentag << "."<< Monat << "*" << "Neuer Differenz-s-Variabel" << endl;
dataus.close();
break;
}
}
|
Dies würde kompilieren. Gibt es einen bestimmten Grund, wieso Du das in C++ machst? C++ lernst?
|
Lae6ge6k
(Themenstarter)
Anmeldungsdatum: 19. Februar 2013
Beiträge: 566
|
user unknown> > Gibt es einen bestimmten Grund, wieso Du das in C++ machst? C++ lernst? Äh, ja also, ich mache es als Zeitvertreib zwischendurch, C++ hat mich schon immer faziniert. Ich maches es in C++ ohne kommerzielle Interessen eben als Hobby. Man kann in C++ etwas weiträumiger programmieren als in Bash. Ausserdem habe ich mehrere Bücher, die mir aber zu meinem Thema nicht weiträumig helfen. Eigentlich soll das programmieren meinen Gedächnissverlust einschränken, und ich verlege andaurnt die Codezeilen von Bash. Da der Code binär eingekapselt ist, brauche ich mir da keine weiteren gedanken machen.
|
Exploit
Anmeldungsdatum: 26. Dezember 2012
Beiträge: Zähle...
|
Naja das was du da schreibst ist nicht viel C++ sondern C. | int main( void ) // sehr alt und nutzlos welches Buch benutzt du zum lernen ?
int main()
printf() // ist C
cout << "hallo" << endl; // ist C++
|
Wenn du richtig C++ programmieren willst solltest du dir ein richtiges und aktuelles Buch kaufen.
Danach würde ich mir mal Boost anschauen.
|
Lae6ge6k
(Themenstarter)
Anmeldungsdatum: 19. Februar 2013
Beiträge: 566
|
Wenn du richtig C++ programmieren willst solltest du dir ein richtiges und aktuelles Buch kaufen
Also auf immer neuere Bücher zu warten, die immer ein anderes Thema erwähnen, will ich nicht. Und lernen kann man aus C++ Büchern sowieso nicht, die Syntax passt jedesmal nicht zu gcc/g++. Lernen tut man C++ aus Selbsterfahrung. Computerbücher können den Umgang mit Ides (Eclipse, Code::Blocks) etc., nicht richtig wiedergeben. Computerbücher die ein bestimmtes eigensinniges Lösungsverhalten als richtig anbieten, schnelle Erfolge suggerieren, sind meiner Meinung fast überflüssig. Ausserdem werden die Computerbücherecken in den Büchereien immer weniger.
|
Exploit
Anmeldungsdatum: 26. Dezember 2012
Beiträge: 3
|
Woher willst du das wissen ? Du kannst kein C++. Ein Buch bringt dir die Grundlagen der Sprache C++ bei und die ist mit jeder IDE möglich weil eine IDE nichts mit der Sprache zu tun hat ! GCC ist ein C Compiler und mit dem zu arbeiten bedeutet das du C schreibst.
G++ ist in der Lage auch C++11 zu benutzen aber du schreibst C89. Natürlich lernt man durch Selbsterfahrung aber erst wenn man weiß was man überhaupt macht.
Computerbücher die ein bestimmtes eigensinniges Lösungsverhalten als richtig anbieten
Du weißt aber schon das C++ einen Standard hat ? http://de.wikipedia.org/wiki/C%2B%2B Wenn du wirklich mal C++ Programmieren willst dann kauf dir das Buch: http://www.amazon.de/Der-Programmierer-lernen-Professionell-anwenden/dp/3446416447
|
snafu1
Anmeldungsdatum: 5. September 2007
Beiträge: 2133
Wohnort: Gelsenkirchen
|
Zum hobbymäßigen Programmieren als Alternative zur Bash, wäre C++ wohl so ziemlich das Letzte, was ich einem Anfänger empfehlen würde. Sprachen wie Ruby, Python oder von mir aus auch Scala erscheinen mir da deutlich sinnvoller. Aber gut, das ist die alte Leier, die bei solchen Themen immer wieder aufkommt. Im Wesentlichen wollte ich sagen: Denk nochmal ernsthaft darüber nach, ob C++ dich auf Dauer wirklich glücklich macht oder ob es nicht doch eine Sprache ist, die für andere Anwendungsfälle und auch eher von Leuten mit anderem "Programmier-Hintergrund" (vor allem bezüglich Vorerfahrung) verwendet wird... Und ich sag mal so: Wenn man eine richtige Datenbank programmiert, dann ist C++ bestimmt nicht verkehrt. Das, was du beschreibst, ist aber weit entfernt von einem "richtigen" Datenbank-Konzept. In deinem Fall kann man die Performance, die C++ einem potenziell bietet, eigentlich völlig aus der Betrachtung rauslassen. Und dann wiegt die Komplexität der Sprache mitsamt der damit einhergehenden Probleme wesentlich schwerer, als die Vorteile, die man sich mit ihr erkaufen könnte.
|
Lae6ge6k
(Themenstarter)
Anmeldungsdatum: 19. Februar 2013
Beiträge: 566
|
ANDREAS 1967> Wer könnte mir helfen einen C++ Codelisting bereitzustellen, der möglichst wenig Codezeilen enthält, und der meinem Ziel am nächsten kommt?
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17607
Wohnort: Berlin
|
Exploit schrieb: Woher willst du das wissen ? Du kannst kein C++.
Als ich C++ lernte enthielten die Bücher Beispiele in denen fast immer conio.h inkludiert wurde. Für Anfänger ein echtes Problem. Das erste Buch, das sowas vermied war von Bjarne Stroustrup, Die Programmiersprache C++ (2nd edition). Schrumpfende Büchereiecken korrespondieren übrigens mit gebrauchten Büchern für kl. Geld bei ebay/amazon.
|
LeTux
Anmeldungsdatum: 12. August 2008
Beiträge: 317
|
ANDREAS 1967 schrieb: Das C++ Listing was ich am 24. November 2013 um 08:32 hier gepostet habe habe ich auch nicht kompiliert, ob das funktioniert weiss ich noch nicht.
Und warum hast Du es noch nicht kompiliert? Trial & Error ist doch sicher auch töfte.
Dieses folgende C++ Quelltext Sniplet, füge ich in fast alle mein Quelltexte ein weil ich bin vergesslich und ob ich die brauch oder nicht; was ich hab , hab ich.
| #include <iostream>
#include <fstream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cstime>
#include <sstream>
|
Prima, mal sehen wann du mit dieser Methodik Tapetenlänge erreichst.
Die Variablen sollen im späterne Programmverlauf sinnvoll nutzbar sein.
| string ja,quelle,ziel,str,command,zeit,zeichen;
float g,s,galt,salt,gneu;
|
Vielleicht solltest Du den Variablen erst einmal anständige Benennung spendieren.
|
snafu1
Anmeldungsdatum: 5. September 2007
Beiträge: 2133
Wohnort: Gelsenkirchen
|
LeTux schrieb: ANDREAS 1967 schrieb: Die Variablen sollen im späterne Programmverlauf sinnvoll nutzbar sein.
| string ja,quelle,ziel,str,command,zeit,zeichen;
float g,s,galt,salt,gneu;
|
Vielleicht solltest Du den Variablen erst einmal anständige Benennung spendieren.
salt ⇒ vielleicht wird das ja am Ende ein Verschlüsselungstool oder ein Backrezept... 😮
|
pascoli
Anmeldungsdatum: 5. Mai 2008
Beiträge: 124
|
snafu1 schrieb: LeTux schrieb: ANDREAS 1967 schrieb: Die Variablen sollen im späterne Programmverlauf sinnvoll nutzbar sein.
| string ja,quelle,ziel,str,command,zeit,zeichen;
float g,s,galt,salt,gneu;
|
Vielleicht solltest Du den Variablen erst einmal anständige Benennung spendieren.
salt ⇒ vielleicht wird das ja am Ende ein Verschlüsselungstool oder ein Backrezept... 😮
Jetzt musst du aber auch erklären, was salt mit verschlüsseln zu tun hat ☺
|
snafu1
Anmeldungsdatum: 5. September 2007
Beiträge: 2133
Wohnort: Gelsenkirchen
|
pascoli schrieb: snafu1 schrieb: LeTux schrieb: ANDREAS 1967 schrieb: Die Variablen sollen im späterne Programmverlauf sinnvoll nutzbar sein.
| string ja,quelle,ziel,str,command,zeit,zeichen;
float g,s,galt,salt,gneu;
|
Vielleicht solltest Du den Variablen erst einmal anständige Benennung spendieren.
salt ⇒ vielleicht wird das ja am Ende ein Verschlüsselungstool oder ein Backrezept... 😮
Jetzt musst du aber auch erklären, was salt mit verschlüsseln zu tun hat ☺
http://de.wikipedia.org/wiki/Salt_%28Kryptologie%29
|