Der Programmier-Thread

PSN-Name: leckt mich an meinem haarigen hintern ihr haufen!
Spielt gerade: perl(pc); div. KOFs (ps3); GT6(ps3); sfIV(div.);
joa haut hin in einem projekt programmier ich ja nicht jeden tag. ich sag mal so im bsp ipmi kommen auf 1 woche plug-in schreiben 2 wochen recherche und tests dann relativiert sich das alles schon. wobei auch ipmi verdammt mies dokumentiert ist bei snmp war das verhältnis programmieren recherche etwa eins zu eins die quelltexte aber auch kürzer
 
Moin,

ich habe ziemlich große Probleme mit Informatik und muss fuers Studium jetzt n Programm schreiben, womit ich ueberhaupt nicht klar komme....

Das ist die Aufgabe die uns gegeben wurde:

Xe zählen Für eine bestimmte Dauer (z.B. 200-4000 Millisekunden) wird eine zufällige Reihe
von Buchstaben gezeigt, in der mehrmals der Buchstabe ”x” versteckt ist. Nachdem die Zeichenkette
vom Bildschirm gelöscht wurde, soll der Spieler die Anzahl des Buchstaben ”x” in dieser
Zeichenkette eintippen. Das Programm meldet dann richtig oder falsch. Für diese Aufgabe soll
es fünf verschiedene Schwierigkeitsgrade zur Auswahl geben (ganz leicht bis ganz schwer).
Variationen der Schwierigkeit können erreicht werden durch: Anzeigedauer, maximale Anzahl
der ixe und Länge der Zeichenkette.
Beispiele:
Level eins: Dauer 4000ms, maximal 3 ixe, insgesamt 10 Zeichen
Level zwei: Dauer 2000ms, maximal 5 ixe, insgesamt 10 Zeichen
usw...


Dann hat er uns diesen Quellcode dazu gegeben der ja die Zeichenkette fuer eine bestimmte Zeit erzeugt:

#include <stdio.h>
#include <time.h>

void warten(int n);
void a_bis_z(char *s, int len);

main() {
int i;
char x[20];
for(i=0;i<20;i++) {
a_bis_z(x,10);
printf("%s\n",x);
warten(500); // Halbe Sekunde warten
system("cls"); // Bildschirm leer
}
}

void warten(int n) {
int start;
int count=0;
start=clock();
do{
count=clock()-start;
} while(clock()-start<n);
}

void a_bis_z(char *s, int len) {
int i;
for(i=0;i<len;i++) {
/* 97=Ascii-Code von 'a', nur bis zum 'w' (119),
damit kein 'x' in der Zeichenkette vorkommt */
s=rand()%22+97+1;
}
s[len]='\0';
}


So, nun zu meinen Fragen:

1. Wie bekomme ich es hin, dass einige Zeichen durch "x" ersetzt werden?
2. Was muss ich machen damit danach abgefragt wird wie oft "x" in der Zeichenkette vorkamen?
3.Wie mache ich eine Auswertung?

Ich hoffe ihr koennt mir helfen, ich sitze hier seit n paar Tagen und komm damit einfach nicht zurecht!

Danke schonmal fuer eure Beitraege!
 
PSN-Name: leckt mich an meinem haarigen hintern ihr haufen!
Spielt gerade: perl(pc); div. KOFs (ps3); GT6(ps3); sfIV(div.);
mhh auf die schnelle würde ich das wohl so tun:

1a. zeichenkette zerflücken und in ein array/liste packen
1b und 2. n (würde ich auch zufällig machen) zufallszahlen erzeugen die zwischen dem ersten und dem letzten indexwert deiner liste liegen und dann die entsprechenden indexwerte durch x'e ersetzen. n kannst du dann auch als kontrollmöglichkeit behalten.
3. was willst du auswerten? anzahl der versuche (funktionsaufrufe mitzählen)? zeiten(timer => hast du schon)?
 
Hi, also ich bin seit 3 Wochen CV Student und hab jetzt das Problem das ich irgendwie gar nich mehr durchsehe -_-

Das sind unsere Aufgaben
Backus-Naur-Form (BNF)
Einreichungsfrist bis: 24.10.2011 10:00
Schreiben Sie in Backus-Naur-Form (BNF) eine gültige Datumsangabe.
Hinweis: Zur Vereinfachung werden folgende Annahmen getroffen:
Alle Monate können 31 Tage haben, die Tage 1 bis 9 werden ohne führende Null angegeben.
Monatsangaben werden ebenfalls ohne führende Null geschrieben.
Die Jahresangabe sei grundsätzlich vierstellig.
Es ist sowohl die deutsche als auch amerikanische Schreibweise zulässig.
Gültige Datumsangaben sind:
3.11.2006
9.1.2007
2007-1-9
2006-11-3
▶ Diese Aufgabe bearbeiten

Perfekte Zahl
Einreichungsfrist bis: 24.10.2011 10:00
Eine natürliche Zahl n heißt perfekt oder vollkommen, wenn die Summe ihrer Teiler gleich n ist. Dabei sind die Teiler echt kleiner als n. Beispielsweise ist 6 = 1 + 2 + 3 eine perfekte Zahl.

Geben Sie einen Algorithmus als Pseudocode an, der für eine gegebene Zahl bestimmt, ob sie perfekt ist.
▶ Diese Aufgabe bearbeiten

Kubikwurzel nach Heron
Einreichungsfrist bis: 24.10.2011 10:00
Erweitern Sie die Lösungsidee für die Berechnung der Quadratwurzel nach Heron (siehe Vorlesungsfolien, Teil01, Folie 10) für die Berechnung der Kubikwurzel. Beschreiben Sie diesen Algorithmus im Pseudocode.

Tip: Anstatt der Länge der Seite eines Quadrats mit Flächeninhalt a (Quadratwurzel in Vorlesung) benötigt man für die dritte Wurzel von v die Länge der Seite eines Kubus mit Rauminhalt v. Entwerfen Sie eine Methode kubik, die unter Verwendung der Funktion SQRT() einen Quader mit Seitenlängen (v,1,1) solange verändert bis annähernd alle Seiten gleich lang sind.
▶ Diese Aufgabe bearbeiten

Primzahl
Einreichungsfrist bis: 24.10.2011 10:00
Schreiben Sie eine Java-Methode

public static boolean isPrime(int n),

die möglichst effizient (siehe Blatt0, Aufgabe Primzahl) entscheidet, ob eine natürliche Zahl n eine Primzahl ist. Die Methode soll true zurückgeben, falls n eine Primzahl ist, im anderen Fall false.


Schreiben Sie eine weitere Methode

public static int nextPrime(int n),

die für eine natürliche Zahl n die kleinste Primzahl liefert, die größer oder gleich n ist.
▶ Diese Aufgabe bearbeiten

Die BNF Aufgabe hab ich, aber bei dem Rest versteh ich nur Bahnhof :(

Habt Ihr da vllt ne Hilfestellung? Werd ab nächste Woche auch in ein Tutorium gehen, wo dann die Aufgaben bearbeitet werden, aber für diese Aufgaben ists natürlich zu spät ...
 

crack-king

Administrator
Team-Mitglied
systems, systems, systems, systems, systems, systems
Naja, der Algorithmus für die perfekte Zahl dürfte nicht so schwierig sein. Steht ja nix davon, dass er schnell sein muss :D

Auf die schnelle würde ich es so machen, dass du halt eine Zahl n hast, die der User eingeben kann oder die schon vorher feststeht. Dann suchst du alle Teiler dieser Zahl, indem du in einer for-Schleife oder so die einzelnen Zahlen durchgehst und guckst, ob sie ohne Rest teilbar sind. Modulo dürfte hier hilfreich sein. Wenn die Zahl nen Teiler ist, packst du sie in ne Liste oder sonstwas und am Ende addierst du die einzelnen Elemente aus der Liste und wenn diese Summe gleich der Zahl n ist, dann ist n eine perfekte Zahl.#

Die Aufgabe mit der Kubikwurzel ist echt doof. Da verwirrt der Tipp mehr als das er hilft :D

Und die Aufgabe mit der Primzahl funktioniert ähnlich, wie die Aufgabe mit der perfekten Zahl. Einfach ein wenig durchprobieren, ob die Zahl ne Primzahl ist.

Und das letzte ist dann nur ne Erweiterung der Primzahl-Afugabe, die eigentlich kein Problem mehr sein sollte, wenn man den ersten Teil der Aufgabe gelöst hat.
 
Eine Frage an die C++ Experten hier.

Ich habe ein Klasse, die hat ein Attribut namens
Code:
sourceIPaddress
, vom Typ
Code:
IPAddress
.

Jetzt will ich getter und setter für dieses schöne Attribut, also

Code:
void MyClass::setSourceIPaddress(IPAddress addr) {
    this->sourceIPaddress = addr;
}

IPAddress MyClass::getSourceIPaddress() {
    return sourceIPaddress;
}
Vielleicht hat jetzt schon jemand einen Fehler entdeckt, denn ich überlege, wie man korrekt den Parameter übergibt und ob auch der Rückgabewert so korrekt ist.

Also, ist das hier mit Referenzen richtiger?
Code:
void MyClass::setSourceIPaddress(IPAddress &addr) {
    this->sourceIPaddress = addr;
}

IPAddress &MyClass::getSourceIPaddress() {
    return sourceIPaddress;
}
 
Spielt gerade: BF3, FIFA11, GR:FS
Kennt sich von euch jemand mit PHP Gtk2 aus? :D

Wir programmieren gerade ein RepairSystem für unsere Schule als Diplomarbeit und bin gerade am überlegen wie ich eine Fortschrittsanzeige für einen Prozess programmieren und anzeigen kann! Also die Fortschrittsanzeige hab ich ja schon, ich bin nur noch am tüfteln, wie ich z.B. einen Kopiervorgang darin darstellen kann. :D
 
PSN-Name: chrizeliq
Kennt sich jemand mit der Set Klasse im STL von C++ aus? Ich frag mich, ob ich für eigene Typen eine eigene Implementierung der find() Methode schreiben muss.
Bei eigenen Typen muss man entweder den "<" Operator ueberschreiben, damit der Container Vergleiche durchfuehren kann. Sonst weiss ja das STL Set nicht wie es deine Objekte vergleichen soll. Ansonsten kann man anscheinend als zweiten Typ-Parameter eine Vergleichs-Funktion mitgeben: http://stackoverflow.com/questions/1114856/stdset-with-user-defined-type-how-to-ensure-no-duplicates
 
Also die find() Methode muss man nicht überschreiben, der kann Elemente selbst finden, nur die Abfrage auf nicht vorhandene Elemente prüft man auf end() und frag lieber nicht, auf was ich geprüft habe.

Grade das hier gehabt:
Yo Dawg, I heart you like to have problems, within problems, so I made an error in an error.
 
Spielt gerade: BF3, FIFA11, GR:FS
Kennt sich von euch jemand mit PHP Gtk2 aus? :D

Wir programmieren gerade ein RepairSystem für unsere Schule als Diplomarbeit und bin gerade am überlegen wie ich eine Fortschrittsanzeige für einen Prozess programmieren und anzeigen kann! Also die Fortschrittsanzeige hab ich ja schon, ich bin nur noch am tüfteln, wie ich z.B. einen Kopiervorgang darin darstellen kann. :D
Weiß denn keiner wie man ne Fortschrittsanzeige in PHP programmiert? :ugly:
 
PHP und Gtk2... schlimmer gehts nimmer? Gtk2 wuerd ich eher mit C oder C++ programmiern, aber PHP ist dafuer eigentlich nicht wirklich gut geeignet... was ist genau dein Problem? Wie du Dateien kopierst? Es ist vermutlich nicht so einfach, wenn du fuer deinen Kopiervorgang eine Fortschrittsanzeige bauen willst, musst do das "Kopieren" wohl selber manuell machen -- ansonsten wuerde man zum Kopieren von Dateien wahrscheinlich die fertigen Funktionen http://de3.php.net/copy verwenden, aber das Problem ist, du bekommst davon keinen Fortschritt zurueck -- manuelles Kopieren d.h. Quelldatei oeffnen, Gesamtgroesse ermitteln, Inhalt blockweise lesen, Inhalt blockweise schreiben, deine GUI aktualisieren... das ganze bis die Datei kopiert wurde... Quell- und Zieldatei schliessen.

Moegliche Funktionen in PHP die du wahrscheinlich brauchst waeren

Sind alles Funktionen die von C uebernommen wurden... wenn du das ganze in PHP machst, wird es wahrscheinlich langsamer laufen als ein in C geschriebenes Programm... also wenn Performance fuer dich wichtig ist...
 
Spielt gerade: BF3, FIFA11, GR:FS
PHP und Gtk2... schlimmer gehts nimmer? Gtk2 wuerd ich eher mit C oder C++ programmiern, aber PHP ist dafuer eigentlich nicht wirklich gut geeignet... was ist genau dein Problem? Wie du Dateien kopierst? Es ist vermutlich nicht so einfach, wenn du fuer deinen Kopiervorgang eine Fortschrittsanzeige bauen willst, musst do das "Kopieren" wohl selber manuell machen -- ansonsten wuerde man zum Kopieren von Dateien wahrscheinlich die fertigen Funktionen http://de3.php.net/copy verwenden, aber das Problem ist, du bekommst davon keinen Fortschritt zurueck -- manuelles Kopieren d.h. Quelldatei oeffnen, Gesamtgroesse ermitteln, Inhalt blockweise lesen, Inhalt blockweise schreiben, deine GUI aktualisieren... das ganze bis die Datei kopiert wurde... Quell- und Zieldatei schliessen.

Moegliche Funktionen in PHP die du wahrscheinlich brauchst waeren

Sind alles Funktionen die von C uebernommen wurden... wenn du das ganze in PHP machst, wird es wahrscheinlich langsamer laufen als ein in C geschriebenes Programm... also wenn Performance fuer dich wichtig ist...
Erstmal danke für deine Antwort!

Ja ich weiß, das mit PHP und GTK2 war die Idee unseres Professors. -.- Zuerst wollten wir es ja in Java machen, aber dann ist er auf die glorreiche Idee gekommen es in PHP zu machen weil er sich da sehr gut auskennt und uns mehr helfen kann als in Java.

Eigentlich ist unser Programm ja schon fertig, also es tut schon alles was wir wollen, jetzt fehlen eben nur mehr die Feinheiten wie z.B. eine Fortschrittsanzeige usw..

Ne das Kopieren ist nicht mein Problem, das tut es ja schon, lediglich wie man den Vorgang dann in der Fortschrittsanzeige darstellt, also wie weit der Prozess eben schon ist. Ich hab dazu ja auch ein eigenes Projekt erstellt um das zu testen. Im unserem Programm geschieht das dann aber mit dem Linux-Befehl "cp". Also unser ganzes Repairsystem läuft auf Linux.

Aber der Kopiervorgang ist ja leider nicht der einzige Prozess der dargestellt werden muss, da wäre dann auch noch beispielsweise der Entpackungs-Prozess.

Weiters benötigen wir auch noch einen Befehl, der uns einen Befehl im Textfeld ausgibt, während er ausgeführt wird. Unser Problem liegt darin, dass wenn der Befehl ausgeführt wird, das GUI lahmgelegt wird und der Befehl erst dann ausgegeben wird. Mit flush() haben wir es schon probiert, hat aber nicht funktioniert...
 
Zuletzt editiert:
Ja ich weiß, das mit PHP und GTK2 war die Idee unseres Professors. -.- Zuerst wollten wir es ja in Java machen, aber dann ist er auf die glorreiche Idee gekommen es in PHP zu machen weil er sich da sehr gut auskennt und uns mehr helfen kann als in Java.
Eurer "Professor" hat aber nicht viel mit Programmieren zutun, oder? :ugly:

Ne das Kopieren ist nicht mein Problem, das tut es ja schon, lediglich wie man den Vorgang dann in der Fortschrittsanzeige darstellt, also wie weit der Prozess eben schon ist. Ich hab dazu ja auch ein eigenes Projekt erstellt um das zu testen. Im unserem Programm geschieht das dann aber mit dem Linux-Befehl "cp". Also unser ganzes Repairsystem läuft auf Linux.
Genau das meine ich ja. Du wirst mit dem Aufruf des "cp"-Befehls keine Fortschrittsanzeige hinbekommen, weil der cp-Befehl so eine Funktion von sich aus nicht vorsieht. Die einzige Moeglichkeit sehe ich desshalb darin das Kopieren relativ aufwendig selber zu programmieren, mit den Funktionen die ich oben erwaehnt habe. Was hoechstens denkbar waere, wenn du viele Dateien auf einmal kopierst, man koennte die Dateien einzeln kopieren und dann zumindest dafuer einen Fortschritt anzeigen ala "Kopiere Datei 5 von 142" evtl. mit Progressbar.

Weiters benötigen wir auch noch einen Befehl, der uns einen Befehl im Textfeld ausgibt, während er ausgeführt wird. Unser Problem liegt darin, dass wenn der Befehl ausgeführt wird, das GUI lahmgelegt wird und der Befehl erst dann ausgegeben wird. Mit flush() haben wir es schon probiert, hat aber nicht funktioniert...
Das ist mit einer der Gruende wieso PHP dafuer komplett ungeeignet ist. Java waere fuer euren Anwendungsfall deutlich passender. Wenn du nicht willst, dass deine GUI einfriert, muesstest du deine Aktionen in einem eigenen Thread ausfuehren. Das entscheidende Problem: PHP kann gar keine Threads. :ugly:

Eine Moeglichkeit dass dir die GUI nicht einfriert waere, die Befehle mit & im Hintergrund auszufuehren (d.h. statt "cp quelldatei zieldatei" macht man "cp quelldatei zieldatei &"), aber das hat das Problem, dass du dann nicht weisst wann das Kopieren fertig ist. ;)

Ihr solltet euch mal http://de2.php.net/manual/en/function.proc-open.php anschauen, damit koennt ihr einen Befehl ausfuehren und habt Zugriff auf dem seine Eingabe/Ausgabe-Channels, vielleicht wird damit die GUI nicht blockiert.
 
Spielt gerade: BF3, FIFA11, GR:FS
Eurer "Professor" hat aber nicht viel mit Programmieren zutun, oder? :ugly:
Naja eig. schon, programmieren tut der schon etliche Jahre, hat auch das ganze Schulnetz usw. gemacht, an dem liegts nicht, der ist echt gut drauf.
Aber naja, diese Wahl war wohl daneben. :ugly:


Genau das meine ich ja. Du wirst mit dem Aufruf des "cp"-Befehls keine Fortschrittsanzeige hinbekommen, weil der cp-Befehl so eine Funktion von sich aus nicht vorsieht. Die einzige Moeglichkeit sehe ich desshalb darin das Kopieren relativ aufwendig selber zu programmieren, mit den Funktionen die ich oben erwaehnt habe. Was hoechstens denkbar waere, wenn du viele Dateien auf einmal kopierst, man koennte die Dateien einzeln kopieren und dann zumindest dafuer einen Fortschritt anzeigen ala "Kopiere Datei 5 von 142" evtl. mit Progressbar.
Oh man, aber wenn "cp" ein Linux Befehl ist, wird man den doch schlecht selber programmieren können oder verstehe ich das falsch und das geht doch?
Hier habe ich den Befehl, nicht dass wir einander vorbeireden:
$cmd = sprintf("cp /mnt/images/%s /opt/repairsystem/images/%s", $file,$file);
"cp" ist wie schon erwähnt der Linux-Befehl, welchen wir in PHP mit $cmd ausführen.


Das ist mit einer der Gruende wieso PHP dafuer komplett ungeeignet ist. Java waere fuer euren Anwendungsfall deutlich passender. Wenn du nicht willst, dass deine GUI einfriert, muesstest du deine Aktionen in einem eigenen Thread ausfuehren. Das entscheidende Problem: PHP kann gar keine Threads. :ugly:

Eine Moeglichkeit dass dir die GUI nicht einfriert waere, die Befehle mit & im Hintergrund auszufuehren (d.h. statt "cp quelldatei zieldatei" macht man "cp quelldatei zieldatei &"), aber das hat das Problem, dass du dann nicht weisst wann das Kopieren fertig ist. ;)

Ihr solltet euch mal http://de2.php.net/manual/en/function.proc-open.php anschauen, damit koennt ihr einen Befehl ausfuehren und habt Zugriff auf dem seine Eingabe/Ausgabe-Channels, vielleicht wird damit die GUI nicht blockiert.
Ok wir werden es jedenfalls mal mit "&" probieren und wenns dann nicht klappt mal die Funktion von deinem Link ansehen.

Mannomann, das kann noch was werden! :ugly:
 
Spielt gerade: BF3, FIFA11, GR:FS
Das hat damit nichts zu tun. Er kennt sich in seiner kleinen Ecke aus, hat scheinbar aber keine Ahnung vom großen Ganzen und wann setze ich welche Programmiersprache für was ein, etc.
Ja zuerst wollten wir es ja in Java machen, waren auch schon am lernen. Dann nach ein paar Wochen ist er auf die Idee gekommen ob man es nicht i-wie mit PHP machen kann, dann haben wir eben GTK gefunden. Wir haben es auch versucht ihm das auszureden und zu erklären dass es bessere Möglichkeiten gibt, aber er wollte nichts anderes. -.-
 
PSN-Name: leckt mich an meinem haarigen hintern ihr haufen!
Spielt gerade: perl(pc); div. KOFs (ps3); GT6(ps3); sfIV(div.);
mhh der mann gefällt mir aber seine eigenen fixen ideen als unterreichtsstoff zu missbrauchen ist doch eher fragwürdig.

wobei krizels ansatz mir auch als erstes in den sinn kam und viel besser wirds wohl auch nicht werden (es ist halt php das ist für sonen mist nur bedingt gedacht), warum lernt ihr überhaupt php? ich meine ich finds schon grenzwertig das ich so ziemlich alles in perl schreibe (streicht das: so ziemlich). allein durch objektorientierung (was man in perl auf ungfähr 5000 arten realisieren kann) wird die geschichte ziemlich abgefahren und ich glaube nicht das php da so viel anders ist (kann ja nicht mal threading :p)
 
Top