This commit is contained in:
Tamer Oeztuerk 2025-05-01 14:02:55 +02:00
parent 6a0d1b94ca
commit 51a2aa9776
6 changed files with 78 additions and 0 deletions

23
adturing.c Normal file
View File

@ -0,0 +1,23 @@
#include <stdio.h>
#include <string.h>
#include "turing.h"
// Simuliert die Turingmaschine zur binären Addition von 1
void ausfuehren(char *band, int pos) {
int carry = 1; // Wir wollen +1 addieren → also mit Übertrag starten
while (carry && pos >= 0) {
if (band[pos] == '0') {
band[pos] = '1'; // 0 + 1 = 1 → fertig
carry = 0;
} else if (band[pos] == '1') {
band[pos] = '0'; // 1 + 1 = 0 mit Übertrag → weiter nach links
pos--;
} else if (band[pos] == '#') {
band[pos] = '1'; // Wenn wir am Ende des Bandes sind und Übertrag haben → neue 1
carry = 0;
} else {
fehler("Ungültiges Zeichen auf dem Band."); // Nur 0, 1 und # sind erlaubt
}
}
}

13
bildsch.c Normal file
View File

@ -0,0 +1,13 @@
#include <stdio.h>
#include "turing.h"
// Zeigt das Band an und markiert die aktuelle Position (mit eckigen Klammern)
void anzeigen(char *band, int pos) {
for (int i = 0; band[i] != '\0'; i++) {
if (i == pos)
printf("[%c]", band[i]); // aktuelle Position
else
printf(" %c ", band[i]); // normal
}
printf("\n");
}

20
dualaddi.c Normal file
View File

@ -0,0 +1,20 @@
#include <stdio.h>
#include <string.h>
#include "turing.h"
int main() {
// Anfangszustand des Bandes
char band[100] = "1100#"; // Das ist z.B. die Zahl 12 in Binär
int pos = strlen(band) - 2; // Position des letzten Bits vor dem #
printf("Vorher: %s\n", band);
anzeigen(band, pos); // Zeigt das Band mit Positionsmarkierung
ausfuehren(band, pos); // Führt die Addition durch
printf("Nachher: %s\n", band);
anzeigen(band, pos); // Zeigt das neue Band
// Zur Ausgabe vom Program folgender Befehlt in die Konsole: gcc -o dualaddi dualaddi.c adturing.c bildsch.c fehler.c
//./dualaddi
return 0;
}

BIN
dualaddi.exe Normal file

Binary file not shown.

8
fehler.c Normal file
View File

@ -0,0 +1,8 @@
#include <stdio.h>
#include <stdlib.h>
// Gibt eine Fehlermeldung aus und beendet das Programm
void fehler(char *text) {
printf("FEHLER: %s\n", text);
exit(1);
}

14
turing.h Normal file
View File

@ -0,0 +1,14 @@
#ifndef INFORMATIK2_PR_TURING_H
#define INFORMATIK2_PR_TURING_H
#endif //INFORMATIK2_PR_TURING_H
#ifndef TURING_H
#define TURING_H
// Deklarationen der Funktionen, die in mehreren Dateien verwendet werden
void fehler(char *text);
void anzeigen(char *band, int pos);
void ausfuehren(char *band, int pos);
#endif