Kleines Progrämmchen
lima-city → Forum → Programmiersprachen → C/C++ und D
astronomie
aufgabe
berechnen
berechnung
biologie
buchstabe
buffer
code
genetik
http
medizin
mitbringen
pos
programm
rechner
rechnerleistung
spart
textdatei
url
warten
-
Ich habe zurzeit sehr viel Spaß daran meinen zweitrechner unnötigerweise zu beschäftigen. Bis vor 2 Stunden hat er noch Pi berechnet, jetzt ist mir ne neue Idee für ne Aufgabe gekommen, hab aber keine Ahnung von Programmieren. Das Programm für die Pi berechnung hab ich durch googln ja selber gefunden aber mir fällt kein Passender Suchbegriff dafür ein, also wollte ich mal hier fragen, ob mir das schnell einer Schreiben könnte, oder weiß, wo es das schon zum download gibt. Und zwar will ich das dieses Programm mit dem Buchstaben "a" anfängt und dann in einer neuen Zeile mit "b" weitermacht. Das geht dann solange bis es bei "z" angekommen ist. Danach geht es mit "aa" und dann mit "ab" weiter. Wenn danach wieder "z" erreicht ist fängt es logischerweise mit "ba" wieder an. Am besten wäre es wenn das Programm ohne limit das ganze fortführt. Vorzugsweise sollte alles in eine Textdatei geschrieben werden. Da mein Pi berechner auch in C++ geschrieben war, hoffe ich das es hier ein paar leute gibt, die sowas mit leichtigkeit in C++ schnell hinzaubern.
Danke schonmal im Vorraus... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo usertrend,
das mit dem beliebig lange Fortsetzen ist wohl etwas schwierig.
Aber ich denke mal, dass Du schon bei der 64 MB Variante lange genug warten musst.
#include <iostream> using namespace std; /* spart Stack und ist schneller: */ static char * buffer; static char * pos; static unsigned long depth; void print_char_recursion() { if(!depth) { cout << buffer << endl; } else { depth--; for(char c ='a'; c<='z';c++) { *pos = c; pos++; print_char_recursion(); pos--; } depth++; } } void print_chars(unsigned long max_length) { buffer = new char[max_length+1]; for(unsigned long length = 1; length <= max_length; length++) { pos = buffer; depth = length; print_char_recursion(); } delete[] buffer; } int main() { /* 4 GB Version: */ //print_chars((1<<32)-1); /* 2 GB Version */ //print_chars(1<<31); /* 1 GB Version: */ //print_chars(1<<30); /* 512 MB Version: */ //print_chars(1<<29); /* 256 MB Version: */ //print_chars(1<<28); /* 128 MB Version: */ //print_chars(1<<27); /* 64 MB Version: */ //print_chars(1<<26); /* kleine Testversion: */ print_chars(4); return 0; }
Edit: Das mit der Textdatei habe ich jetzt vergessen, aber Du kannst die Ausgabe ja umleiten:
porgramm.exe > ausgabe.txt
Edit 2: Bugfix
Beitrag zuletzt geändert: 27.3.2011 14:39:49 von darkpandemic -
Das hatmal ein Kumpel gemacht und bei 5 Buchstaben wird aus der Datei schon eine richtige Masse mit Gigabytegröße. Der sollte also auch genügend Speicher mitbringen.
-
darkpandemic schrieb:
Hallo usertrend,
das mit dem beliebig lange Fortsetzen ist wohl etwas schwierig.
Aber ich denke mal, dass Du schon bei der 64 MB Variante lange genug warten musst.
#include <iostream> using namespace std; /* spart Stack und ist schneller: */ static char * buffer; static char * pos; static unsigned long depth; void print_char_recursion() { if(!depth) { *pos = '\n'; cout << buffer; } else { depth--; for(char c ='a'; c<='z';c++) { *pos = c; pos++; print_char_recursion(); pos--; } depth++; } } void print_chars(unsigned long max_length) { buffer = new char[max_length+1]; for(unsigned long length = 1; length <= max_length; length++) { pos = buffer; depth = length; print_char_recursion(); } delete[] buffer; } int main() { /* 4 GB Version: */ //print_chars((1<<32)-1); /* 2 GB Version */ //print_chars((1<<31); /* 1 GB Version: */ //print_chars((1<<30); /* 512 MB Version: */ //print_chars((1<<29); /* 256 MB Version: */ //print_chars((1<<28); /* 128 MB Version: */ //print_chars((1<<27); /* 64 MB Version: */ //print_chars((1<<26); /* kleine Testversion: */ print_chars(4); return 0; }
Danke sehr, funzt super ;) -
Hallo usertrend,
auf die Gefahr hin, dass die Rekursion den Stack sprengt, habe ich hier noch eine nicht-rekursive Variante:
#include <iostream> using namespace std; static void print_chars(unsigned long max_length) { unsigned long length; char *buffer, *current, *reset; buffer = new char[max_length+1]; current = buffer; length = 0; while(length < max_length) { for(char c = 'a'; c <= 'z'; c++) { *current = c; cout << buffer << endl; } reset = current; while(reset >= buffer && *reset == 'z') reset--; if(reset < buffer) { for(reset = buffer; reset <= current; reset++) *reset = 'a'; current++; length++; } else { (*reset)++; for(++reset;reset < current; reset++) *reset = 'a'; } } delete[] buffer; } int main() { /* 4 GB Version: */ //print_chars((1<<32)-1); /* 2 GB Version */ //print_chars(1<<31); /* 1 GB Version: */ //print_chars(1<<30); /* 512 MB Version: */ //print_chars(1<<29); /* 256 MB Version: */ //print_chars(1<<28); /* 128 MB Version: */ //print_chars(1<<27); /* 64 MB Version: */ //print_chars(1<<26); /* kleine Testversion: */ print_chars(5); return 0; }
Beitrag zuletzt geändert: 27.3.2011 14:38:30 von darkpandemic -
Du kannst deinen Zweit-PC doch auch die Eulersche Zahl berechnen lassen. Die Basis des logarithmus naturalis (natürlicher Logarithmus). Liegt bei etwa 2,7.
Nähere Informationen siehe Wikipedia
Beitrag zuletzt geändert: 26.3.2011 22:57:04 von groovestreet -
Du könntest die freie Rechenzeit aber auch für etwas sinnvolles verwenden, wie zum Beispiel berechnungen für Boinc anstellen.
http://boinc.berkeley.edu/
mfg -
Hi,
falls du deinen Rechner was sinnvolles tun lassen willst, dann findest du Folgendes sicherlich interessant.
Es gibt Forschungsprojekte, denen du deine Rechnerleistung zur Verfügung stellen kannst. Du kannst dir aussuchen, ob dein Rechner Aufgaben zu Genetik, Biologie, Astronomie, Chemie, Quantentheorie, usw. lösen soll und die Ergebnisse den Forschungsteams zur Verfügung stellt.
Die Initiative heißt BOINC. Eine sinnvolle Sache. Man stelle sich z.B. vor, die Forschungsergebnisse erweitern das Wissen z.B. in der Medizin und erlauben dann bessere Heilungschancen für gewisse Krankheiten... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage