www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Formatierte Zufallszahlen


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Marek Swierzy (marekswierzy)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>

void main (void)
{
randomize();
clrscr();
for (int i=0; i<256; i++){
  cout << random(6) <<",";
}
getch();
}

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

Autor: Marek Swierzy (marekswierzy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So schick mir mal deine email adresse.... dann bekommst du eine *.zip 
file.

Gruß

Marek

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super...

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

Danke!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marek Swierzy (marekswierzy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So.... du hast Post

mfg

marek

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.




Autor: Rolf Im forum (for_ro)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rolf Im forum (for_ro)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.