AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Modulo manuell

Ein Thema von rawsoul · begonnen am 13. Feb 2008 · letzter Beitrag vom 14. Feb 2008
Antwort Antwort
Benutzerbild von rawsoul
rawsoul

Registriert seit: 29. Okt 2006
Ort: Düsseldorf
249 Beiträge
 
Delphi 2005 Personal
 
#1

Modulo manuell

  Alt 13. Feb 2008, 11:05
Moin =)

Ich stehe vor dem Problem, einen Modulo manuell zu berechnen. Probiere seit gestern rum, mir ist leider bisher nichts funktionstüchtiges gelungen. Das Ziel ist es, herauszufinden, ob eine Zahl gerade oder ungerade ist, und abhängig davon eine andere Variable auf 1/0 zu setzen.

Es handelt sich hierbei um Brainfuck, falls es wem ein Begriff sein sollte.

Ich kann Variablen nutzen, darf allerdings nur folgende Operationen durchführen:

Code:
solange(zahl!=0){ ... };
incrementiere(zahl);
decrementiere(zahl);
Eine Division duch 2 bei geraden Zahlen gelang mir so:
Code:
Zahl2 = Ausgangszahl;
Ausgangszahl = 0;
solange(Zahl2!=0){
  Ausgangszahl++;
  Zahl2--;
  Zahl2--;
}
Der Nebeneffekt dabei wäre, dass Zahl 2 auf 0 gesetzt wird. Bei ungeraden Zahlen liegt das Problem vor, dass Zahl2==0 nie eintreffen wird, und das ganze somit in einer Endlosschleife resultiert.

Für jeden Tipp bin ich dankbar.

Gruß,
Frank.
Frank Dumont
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#2

Re: Modulo manuell

  Alt 13. Feb 2008, 15:53
Naja dann halt so

Zahl2 = Ausgangszahl;
Ausgangszahl = 0;
solange(Zahl2!=0) {
Ausgangszahl++;
Zahl2--;
if Zahl2 == 0 then break; // ungerade
Zahl2--;

}

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von rawsoul
rawsoul

Registriert seit: 29. Okt 2006
Ort: Düsseldorf
249 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Modulo manuell

  Alt 13. Feb 2008, 21:15
Danke für die Idee, allerdings hatte ich vergessen zu erwähnen, dass man nur auf 'not zero' prüfen kann. Dabei gibt es auch kein 'else', oder Vergleichbares.

//Edit: Auch 'break' existiert nicht.
Frank Dumont
  Mit Zitat antworten Zitat
deep_thought

Registriert seit: 9. Nov 2007
22 Beiträge
 
#4

Re: Modulo manuell

  Alt 14. Feb 2008, 16:15
break kannste aber manuell machen ... hier die komplette Modulo-2-funktion:
(* markiert die Position)

Eingabe: 0 *N 0 0 0

[->+>+<<]>

erzeugt: 0 0 *N N 0

[-<+>]>

erzeugt: 0 N 0 *N 0

[-[->]<]+<<[<]

erzeugt: *0 N NUngerade NGerade 0

fertig ...

mfg deep_thought

P.S. N sollte !=0 sein, sonst musst du als eingabe 0 1 *N 0 0 0 machen und bei dem letzten Schritt einmal mehr < machen ...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz