Für Vorlesungen, bitte die Webseite verwenden. https://flavigny.de/lecture
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

72 строки
1.3KB

  1. Band::Band (std::string s, char init)
  2. {
  3. // initialisiere Band mit dem Symbol init
  4. for (int i=0; i<Band::N; i++) band[i] = init;
  5. // Lese Zeichenkette
  6. if (s.size()>Band::N)
  7. {
  8. print("Band zu klein");
  9. return;
  10. }
  11. for (int i=0; i<s.size(); i++) band[i] = s[i];
  12. print(s.size()," Symbole auf Band initialisiert ",0);
  13. // Setze aktuelle Bandposition auf Anfang
  14. pos = 0;
  15. // Initialisiere maximal benutzten Bandabschnitt
  16. benutzt = s.size();
  17. }
  18. char Band::lese ()
  19. {
  20. return band[pos];
  21. }
  22. void Band::schreibe_links (char symbol)
  23. {
  24. if (pos<0)
  25. {
  26. print("Versuch ueber linkes Bandende zu laufen!");
  27. return;
  28. }
  29. band[pos] = symbol;
  30. if (pos>=benutzt) benutzt = pos+1;
  31. pos = pos-1;
  32. }
  33. void Band::schreibe_rechts (char symbol)
  34. {
  35. if (pos>=Band::N-1)
  36. {
  37. print("Versuch ueber rechtes Bandende zu laufen!");
  38. return;
  39. }
  40. band[pos] = symbol;
  41. if (pos>=benutzt) benutzt = pos+1;
  42. pos = pos+1;
  43. }
  44. void Band::drucke ()
  45. {
  46. char kopie[N+3];
  47. int j=0;
  48. for (int i=0; i<pos; i++) {
  49. kopie[j] = band[i];
  50. j = j+1;
  51. }
  52. kopie[j] = '[';
  53. kopie[j+1] = band[pos];
  54. kopie[j+2] = ']';
  55. j = j+3;
  56. for (int i=pos+1; i<benutzt; i++) {
  57. kopie[j] = band[i];
  58. j = j+1;
  59. }
  60. kopie[j] = 0; // Ende Zeichen
  61. print(kopie);
  62. }