72 lines
1.3 KiB
C++
72 lines
1.3 KiB
C++
Band::Band (std::string s, char init)
|
|
{
|
|
// initialisiere Band mit dem Symbol init
|
|
for (int i=0; i<Band::N; i++) band[i] = init;
|
|
|
|
// Lese Zeichenkette
|
|
if (s.size()>Band::N)
|
|
{
|
|
print("Band zu klein");
|
|
return;
|
|
}
|
|
for (int i=0; i<s.size(); i++) band[i] = s[i];
|
|
print(s.size()," Symbole auf Band initialisiert ",0);
|
|
|
|
// Setze aktuelle Bandposition auf Anfang
|
|
pos = 0;
|
|
|
|
// Initialisiere maximal benutzten Bandabschnitt
|
|
benutzt = s.size();
|
|
}
|
|
|
|
char Band::lese ()
|
|
{
|
|
return band[pos];
|
|
}
|
|
|
|
void Band::schreibe_links (char symbol)
|
|
{
|
|
if (pos<0)
|
|
{
|
|
print("Versuch ueber linkes Bandende zu laufen!");
|
|
return;
|
|
}
|
|
|
|
band[pos] = symbol;
|
|
if (pos>=benutzt) benutzt = pos+1;
|
|
pos = pos-1;
|
|
}
|
|
|
|
void Band::schreibe_rechts (char symbol)
|
|
{
|
|
if (pos>=Band::N-1)
|
|
{
|
|
print("Versuch ueber rechtes Bandende zu laufen!");
|
|
return;
|
|
}
|
|
|
|
band[pos] = symbol;
|
|
if (pos>=benutzt) benutzt = pos+1;
|
|
pos = pos+1;
|
|
}
|
|
|
|
void Band::drucke ()
|
|
{
|
|
char kopie[N+3];
|
|
int j=0;
|
|
for (int i=0; i<pos; i++) {
|
|
kopie[j] = band[i];
|
|
j = j+1;
|
|
}
|
|
kopie[j] = '[';
|
|
kopie[j+1] = band[pos];
|
|
kopie[j+2] = ']';
|
|
j = j+3;
|
|
for (int i=pos+1; i<benutzt; i++) {
|
|
kopie[j] = band[i];
|
|
j = j+1;
|
|
}
|
|
kopie[j] = 0; // Ende Zeichen
|
|
print(kopie);
|
|
}
|