Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Schiebeoperatoren in C????

BDelphi / 5 Antworten / Baumansicht Nickles

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

bei Antwort benachrichtigen
(Anonym) BDelphi „Schiebeoperatoren in C????“
Optionen

x = x x = x >> 2; //verschiebt die bits nach rechts und schiebt vorn zwei nullen rein

bei Antwort benachrichtigen
toosten BDelphi „Schiebeoperatoren in C????“
Optionen

x = x x = x >> 2; //verschiebt die bits nach rechts und schiebt vorn zwei nullen rein

bei Antwort benachrichtigen
Dreamforger BDelphi „Schiebeoperatoren in C????“
Optionen

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
}
}

bei Antwort benachrichtigen
BDelphi Dreamforger „vorschlag: char toRot 0 0 0 0 0 0 0 0 int rotLen 16 while !kbhit for int i 0 i...“
Optionen

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

bei Antwort benachrichtigen
Dreamforger BDelphi „hmm, ich vermisse das schieben!? Ich habe da schon mal ein paar dinge...“
Optionen

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

bei Antwort benachrichtigen