Files
uni/ws2019/ipi/uebungen/cpp_headers/Band.cc
T

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