fw hat geschrieben:Nehme eine beliebige Programmiersprache deiner Wahl (die WHILE Schleifen kennt) und implementiere dein Programm in dieser?
fw hat geschrieben:Nehme eine beliebige Programmiersprache deiner Wahl (die WHILE Schleifen kennt) und implementiere dein Programm in dieser?
data RegInt = RegC Integer deriving (Show, Eq)
instance Num RegInt where
(RegC x) + (RegC 1) = RegC (x+1)
(RegC x) + (RegC y) = error "RAM does not support Addition."
(RegC 0) - (RegC 1) = RegC 0
(RegC x) - (RegC 1) = RegC (x-1)
(RegC x) - (RegC y) = error "RAM does not support Subtraction."
(RegC x) * (RegC y) = error "RAM does not support Multiplication."
abs (RegC x) = RegC x
signum (RegC x) = RegC (signum x)
fromInteger i = RegC i
Wieso? Sind die unterschiedlich maechtig? Du kannst sogar iterative Abschnitte mit do {} definieren. Ausserdem kannst Du das Programm natuerlich kodieren.MartinL hat geschrieben:Ob sich nun eine funktionale Programmiersprache am besten eignet um den Urtyp des iterativen Programmierschemas umzusetzen möchte ich doch mal bezweifeln
O.D. hat geschrieben:Ganz so einfach duerfte es nicht sein. Denn wenn ich mich recht entsinne, war 0-1 = 0
#define WHILE while (
#define DO ){
#define END }
int x0 = 0,x1 = 0, x2 = 0, x3 = 0, x4 = 0, x5 = 0, x6 = 0, x7 = 0, x8 = 0,
x9 = 0, x10 = 0;
// x0 = x0 mod 2
void x0_mod_2(int x) {
x0 = x;
x2 = 1;
WHILE x0 != 0 DO
// swap (x1, x2)
x3 = x1;
x1 = x2;
x2 = x3;
x0 = x0 - 1;
END
printf("%d", x1);
}LonliLokli hat geschrieben:
- Code: Alles auswählen
#define WHILE while (
#define DO ){
#define END }
int x0 = 0,x1 = 0, x2 = 0, x3 = 0, x4 = 0, x5 = 0, x6 = 0, x7 = 0, x8 = 0,
x9 = 0, x10 = 0;
// x0 = x0 mod 2
void x0_mod_2(int x) {
x0 = x;
x2 = 1;
WHILE x0 != 0 DO
// swap (x1, x2)
x3 = x1;
x1 = x2;
x2 = x3;
x0 = x0 - 1;
END
printf("%d", x1);
}
Wie gut, dass Du die negativen Zahlen in Deinem Algorithmus bedacht hast ...LonliLokli hat geschrieben:Nein. Ist es nicht. 0-1 = -1
Zurück zu Theoretische Informatik