Forum: Mikrocontroller und Digitale Elektronik Formatierte Zufallszahlen


von Thomas (Gast)


Lesenswert?

Hallo erstmal

Ich weis, dass dies kein Thema für Elektronik ist, aber da ich die 
Zahlen für µC brauche, schreib ich es halt hier rein.

Das Problem: Für ein LED-Moodlight hätte ich gerne u.a. gern drei 
Zufallstabellen mit je 256 Einträgen von Ganzzahlen von 0-6 einschl. 
(also 0,1,2,3,4,5,6 sollten vorkommen). Soweit kein Problem, diverse 
Inetseiten bieten sich da ja an. (http://www.randomnumbers.info/ ist 
eine davon).
Nun brauche ich aber für meinen Assembler die Zahlenfolge in einem 
bestimmten Format, und zwar muss nach jeder Zahl ein Komma stehen.
Word lässt mich da erwartungsgemäß im Stich, Exel ebenfalls. Die Zahlen 
in Excel zu erzeugen und dann in Word umzuformatieren, haut bei der 
relativ grossen Menge nicht mehr hin.
Ich hab mir zwar flugs ein C-Programm für den Rechner geschrieben, aber 
da krieg ich halt nur den Ausgabebildschirm und da klappt Rüberkopieren 
per Zwischenablage auch nicht.
Google brachte mich leider auch nicht viel weiter, und daher wende ich 
mich jetzt an euch. Kennt ihr Inetseiten, die meine Sonderwünsche 
erfüllen? Oder habt ihr Software, die das kann und könntet mir drei 
Tabellen zukommen lassen? Wäre echt klasse.

Ansonsten muss ich alles von Hand machen und das macht keinen Spass...

von Marek S. (Gast)


Lesenswert?

Hallo Thomas....

ich verstehe dein Problem nicht, soviel dazu. Ist aber auch nicht 
wichtig.
Du schreibst dass du ein Programm hast, welches die Daten als ausgabe 
auf den monitor schreibt. Schreib diese Daten doch in ein Datei. Falls 
du dies nicht kannst, hinterleg hier mal das C-File und ich schreib es 
dir eben schnell um.

Gruß

Marek

von Thomas (Gast)


Lesenswert?

1
#include <iostream.h>
2
#include <conio.h>
3
#include <stdlib.h>
4
5
void main (void)
6
{
7
randomize();
8
clrscr();
9
for (int i=0; i<256; i++){
10
  cout << random(6) <<",";
11
}
12
getch();
13
}

Wär klasse, wenn du dich drum kümmern würdest!

von Marek S. (Gast)


Lesenswert?

So schick mir mal deine email adresse.... dann bekommst du eine *.zip 
file.

Gruß

Marek

von Thomas (Gast)


Lesenswert?

Super...

t///hom/as_b///aech//le@gm//x.de ohne sämtliche / dazwischen.

Danke!

von Karl H. (kbuchegg)


Lesenswert?

Das Programm läuft in einer DOS Box.

Mach mal eine DOS Box auf und navigiere in das
Verzeichnis in dem dein EXE ist. Falls du nicht
weist wie das geht (Platte wechseln, Verzeichnis
wechseln) dann mach folgendes:
Kopiere das EXE nach C: und dort auf das Root-Verzeichnis

In der DOS Box machst gibst du jetzt ein

cd \

Jetzt bist du am Root-Verzeichnis (mit "dir" kannst
du dich davon überzeugen.

Jetzt gibst du einfach den Namen deines EXE ein.

MeinExe

da sollte jetzt dein Program laufen.
Und jetzt kommt die Magie: Du kannst die Ausgabe
auch in eine Datei umlenken

MeinExe > Ausgabe.txt

In Ausgabe.txt findet sich jetzt alles wieder, so wie
es von deinem Programm ausgegeben wurde.

Manchmal ist Klickibunti doch nicht so gut. Viele
Dinge lassen sich mit einer Command Line eleganter
lösen. Zumindest als Entwickler sollte man mit einer
Command Line noch umgehen können.

von Marek S. (Gast)


Lesenswert?

So.... du hast Post

mfg

marek

von Thomas (Gast)


Lesenswert?

@marek: Nochmals vielen Dank, dein Programm hat echt geholfen.

@ Karl heinz Buchegger: Deine Magie gefällt mir auch hervorragend- das 
muss man halt erst mal wissen ;-). Mit der Command Line kann ich 
halbwegs umgehen, bin halt leider nicht mehr damit aufgewachsen. Und 
Entwickler darf ich mich frühestens in 3 Jahren schimpfen.

Problem bei der Methode: Nach Wechseln ins Verzeichnis der *.exe und dem 
obigen Befehl finde ich im gleichen Ordner die Ausgabe.txt, die 
allerdings mit kleinen Rechtecken statt Zahlen gefüllt ist. Vielleicht 
fehlt mir die passende Schriftart?

von Karl H. (kbuchegg)


Lesenswert?

In der DOS Box gibt es keine Schriftart. Da ist Text einfach
nur Text.

Schmeiss mal den ganzen clrscr() Unsinn raus.
Braucht kein Mensch.
Einfach nur Text ausgeben, der Redirect ( so nennt
man den > ) leitet die Ausgabe von der Konsole um
in eine Datei. Wenn der Text an der Konsole korrekt
aufscheint, müsste er auch beim redirect richtig
im File landen.

Überzeug dich mal davon mit einem

dir > Ausgabe.txt

Es schadet auch nichts (ganz im Gegenteil) wenn
du zum Schluss noch ein std::endl ausgibst.


von Thomas (Gast)


Lesenswert?

Ok, getch und clrscr hab ich rausgehauen, ohne Erfolg. Aber dann habe 
ich die Textdatei mal mit Word aufgemacht und siehe da- wunderschöne 
Zahlen. Irgendwie mag mein Editor das Format nicht... Warum?

von Karl H. (kbuchegg)


Lesenswert?

Kommt drauf an.

Welcher Editor ist es denn?

Ansonsten: mach mal auf der Command Line

type Ausgabe.txt

jetzt müsstest du den Inhalt der Datei korrekt
sehen.

Hmm. Kann es sein, dass dein Editor irgendeine Spezial-
Einstellung benutzt wenn er Dateien mit der Endung txt
aufmacht? Du kannst auch jede andere Endung benutzen.
Dem Redirect ist es egal wie du die Datei nennst.

von Thomas (Gast)


Lesenswert?

Also mit dem Type-Befehl wird mir die Datei korrekt im DOS-Fenster 
angezeigt. Die Endung scheint den Editor nicht zu beeindrucken. Es ist 
halt das normale Notepad aus dem Startmenü.
Hm, da fällt mir was ein: Vor ein paar Monaten wurde die Editor von 
meinem Virenscanner irrtümlicherweise als befallen gebrandmarkt und ich 
hab ihn irgendwie gelöscht/in den Container geschoben. Nach Webrecherche 
hab ich ihn Monate später wiederhergestellt.
Vielleicht ist ja da was schiefgelaufen.

Jedenfalls danke für die Hilfe, hab ja einiges gelernt :)

von Karl H. (kbuchegg)


Lesenswert?

> Vielleicht ist ja da was schiefgelaufen.

Sieht wohl so aus.

> hab ja einiges gelernt

Da verlieren kleine Hilfsprogramme gleich ihren Schrecken
wenn man sich um das Schreiben der Ergebnisse in Dateien
nicht kümmern muss.




von Rolf I. (for_ro)


Lesenswert?

@Thomas,
nur mal so zum Spass, weil die Leute immer so über Word schimpfen:
Ich bin mal auf die Webseite http://www.randomnumbers.info/ gegangen und 
habe mir 1000 Zahlen von 0-6 geben lassen. Das Ergebnis nach Word 
kopiert und dann über ERSETZEN den Text so umformatiert, dass jede Zahl 
in einer Zeile steht, mit einem "," dahinter. Geht mit
SUCHEN NACH:(?)
ERSETZEN DURCH:\1,^|
Häkchen bei Platzhalterzeichen verwenden (mit Erweitern öffnen).
Hinter (?) ist noch ein Leerzeichen, weil die Zahlen durch ein 
Leerzeichen getrennt sind, das im Ergebnis wohl nicht erscheinen soll.
(?) bedeutet, ein Zeichen Suchen und merken.
\1 bedeutet, das vorher gemerkte Zeichen einzusetzen
^| ist ein manueller Zeilenwechsel
Man kann sich auch mehrere Zeichenfolgen merken und dann über \1, \2 
usw. wieder holen.
Word erlaubt mittlerweile das Ersetzen von regulären Ausdrücken ähnlich 
wie in UNIX. Nur leider weiss es keiner. Bei Clicki-Bunti Powerpoint 
Anwendern ist das wohl auch besser so, aber wir sollten damit umgehen 
können. In Excel habe ich etwas äquivalentes noch nicht gefunden.

Gruß

Rolf

von Oliver (Gast)


Lesenswert?

Word kann schon seit Urzeiten Sonderzeichen, wie Tabs, Zeilenwechsel, 
etc. suchen und ersetzen. Mit der Kombination Excel und Word bekommt man 
normalerweise alle diese Fragestellungen in weniger als einer Minute 
gelöst. Excel exportiert als Standard mit tabs zwischen den Werten einer 
Zeile, und die lassen sich dann in Word gegen alles mögliche 
austauschen.

In dem Fall hier braucht es aber doch weder Excel noch Sonderzeichen.

Zahlen in ein Word-Doc als unformatierten Text einfügen, Ersetze " " 
gegen ",", fertig.

Dafür lohnt es sich doch nicht, einen Compiler anzuwerfen.

Oliver

von Rolf I. (for_ro)


Lesenswert?

Es ist schon ein grundsätzlicher Unterschied zwischen einigen 
Sonderzeichen ersetzen und den Möglichkeiten von regulären Ausdrücken.
Und die kann Word noch nicht solange.
Unix Freaks nutzen sowas dauernd in vi, awk und ged.
Stell die nur vor, zwischen den Zahlen wäre kein Leerzeichen, dann 
hättest du mit normalen Mitteln keine Chance, bzw. müsstest für jedes 
Zeichen eine eigene Ersetzung machen.
1234567890abcdefghijklmnopq in 
1,2,3,4,5,6,7,8,9,0,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q, zu ersetzen ist 
dann schon recht aufwändig. (?) durch \1, funktioniert immer noch.
Ersetzen von Hand scheidet bei einigen hundert oder tausend Ersetzungen 
eh aus und ab drei mal hintereinander das Gleiche tun bewirkt bei mir im 
Hirn Schmerzen.
Und genau da kommen die regex.
Nimm eine Namenstabelle

Schmitz, Hans
Müller, Egon
Meier, Peter

und versuche die in die Form Vorname Nachname zu bringen.
(*), (*)^13
\2 \1^13
und du bist da. Die ^13 steht hier für die Absatzmarke (normales Return)

Und ja, du hast Recht, dafür lohnt es sich wirklich nicht, den Compiler 
anzuwerfen.

Gruß

Rolf

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.