Hallo Zusammen,
ich habe da ein kleines Problem mit einer Aufgabe:
Und zwar soll ich ein lauflicht mit Schiebeoperatoren erstellen.
Als vorgabe habe ich hier ein kleines sehr einfaches Programm:
include
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
x = x x = x >> 2; //verschiebt die bits nach rechts und schiebt vorn zwei nullen rein
x = x x = x >> 2; //verschiebt die bits nach rechts und schiebt vorn zwei nullen rein
vorschlag:
char *toRot = "0 0 0 0 0 0 0 0 "
int rotLen = 16;
while(!kbhit())
{
for (int i = 0; i {
// cursor setzen
printf("%s", toRot+i);
char oldc = toRot[i+1];
toRot[i+1] = 0;
printf("%s", toRot);
toRot[i+1] = oldc;
// warten
}
}
hmm, ich vermisse das schieben!?
Ich habe da schon mal ein paar dinge ausprobiert, und ich glaube ich bin auf demm richtigen weg.
Kannst dir das mal anschauen?
#include
Der Bit-shifter 00II0I ~ (entspricht dezimal 13) wird mit 0II0I0 ~ (entspricht dezimal 26)
Das ist interessant aber für dich wertlos :-) Für weitere informationen frag doch mal eine Suchmaschine nach "2er-Komplement"
Ich erklär nochmal meinen Vorschlag:
Die Grundidee ist es einen festen Puffer mit dem Lauftext, oder wenn du willst lauflicht zu haben. Den ganzen Puffer zu rotieren ist rechenaufwendig und unnötig. Stattdessen definiere ich einen Zweiten Lesekopf und lasse diesen rotieren. Bsp
"Das ist mein Puffer"
jetzt schiebe ich den Lesekopf um 5 nach rechts
"st mein Puffer"
hinter diesen Text setze ich den restlichen Teil des Strings, den Anfang bis zum Lesekopf. C beendet Strings bei der ersten 0 im Speicher (nicht im Text!) also muss ich das alte zeichen am Lesekopf durch eine 0 ersetzen. Dann kann ich den restlichen Puffer einfach ausgeben.
"Das i"
Am Bildschirm ergibt sich deshalb
"st mein PufferDas i"
So. jetzt soltest du noch das Zeichen, dass du vorher durch eine 0 ersetzt hast wiederherstellen, sonst verkrüppelst du deinen String
Ein einzelnes Laufendes O machst du mit dem Laufstring
" O"
Das ganze in Schleifen zu verpacken und mit waits (gibts wirklich keine andere möglichkeit als diese Leerschleifen? kein sleep, wait, idle, yield, u.ä) zu dekorieren überlass ich jetzt dir, du hast ja auch noch meinen anderen Post
Viel Erfolg
Dreamforger