# Dezimalzahlen in Dualzahlen umrechnen



## utos (3. Mai 2010)

Ich bräuchte mal eure Hilfe, also ich habe als Hausaufgabe aufbekommen, dass ich in Delphi einen Rechner erstellen soll, der Dezimalzahlen in Dualzahlen umrechnet.

Also ich hab angefangen und Arbeitsfeld fertig gemacht, allerdings komme ich nicht so recht weiter, weil ich nicht weiß wo ich anfangen soll.

procedure TForm1.DezimalzahlClick(Sender: TObject);
var n, dez, dual: Integer;
begin
dez:=strtoint(edit1.Text);
Repeat
n:=dez mod 2;
edit2.Text:=intToStr(n);
n:=n mod 2;
edit2.Text:=intToStr(n);


Das sieht jetzt viellecicht ein bisschen stümperhaft aus, aber mir ist nichts besseres eingefallen.

Also meine Überlegung war halt, dass man den Rest von der Division einfach mit Hilfe von mod in ein Editfeld überträgt, aber leider funtktioniert das nicht.

Ich brauch ne Procedure, weil wir Functionen noch nich hatten ;(

Ich hoffe jemand kann mir helfen.


----------



## ZAM (3. Mai 2010)

http://www.delphi-forum.de/viewtopic.php?p=367899#367899


----------



## Klos1 (3. Mai 2010)

Mit Modulo ist doch gut. Und danach kannst du, wenn du mit Integer machen willst einfach Variable = Variable / 2 rechnen. Das geteilt durch 2 ergibt dann wiederum die ganze Zahl, mit der du im nächsten Schleifendurchlauf weiterrechnest. Und zum Schluss invertierst du das ganze mit Schleife.




```
int dZahl = 58;
 	string dual = "";
 	while (dZahl > 0)
 	{
 	dual += Convert.ToString(dZahl % 2);
 	dZahl = dZahl / 2;
 	}
 	string reverseDual = "";
 	for (int i = dual.Length - 1; i >= 0; i--)
 	{
 	reverseDual += dual[i];
 	}
 	Console.Write(reverseDual);
 	Console.ReadLine();
```


----------



## 2boon4you (3. Mai 2010)

```
public static string DezimalInDual(int iDezimal)
 	{
 	string sErgebnis = "";
 	if (iDezimal > 0)
 	{
 	int iBasis = 2;
 	// 3 Varaiblen vom Typ string werden deklariert und initialisiert
 	string sZwischen1 = "";
 	string sZwischen2 = "";
 	string sZwischen3 = "";
 	// Solange iDezimal > 0 ist
 	while (iDezimal > 0)
 	{
 	// Addiert zu sZwischen1 das Eregbnis von iDezimal % iBasis
 	sZwischen1 += (iDezimal % iBasis).ToString();
 	// Addiert zu sZwischen3 sZwischen1 und sZwischen2, damit die Anordnung richtig ist
 	sZwischen3 += sZwischen1 + sZwischen2;
 	// sZwischen2 wird der Wert von sZwischen3 zugewiesen, um den Wert von sZwischen3 zu speichern
 	sZwischen2 = sZwischen3;
 	// sErgebnis wird der Wert von sZwischen3 zuewiesen um ein Ergebnis auszugeben wenn die Schleife nicht mehr durchgeführt wird
 	sErgebnis = sZwischen3;
 	// sZwischen1 wird geleert
 	sZwischen1 = "";
 	// sZwischen3 wird geleert
 	sZwischen3 = "";

 	// Das Ergebnis von iDezimal / iBasis und der es davon werden von iDezimal abgezogen
 	iDezimal -= (iDezimal / iBasis) + (iDezimal % iBasis);
 	}
 	}

 	return sErgebnis;
 	}
```
So hab ich das in C# gelöst ob dir das weiter hilft weiß ich nicht.


----------



## BinaufBlaue (3. Mai 2010)

Sieht nach einer Chinesischen geheim Sprache aus.


----------



## Soramac (3. Mai 2010)

Das denk ich mir auch meistens, deswegen möchte Ich damit nicht all zuviel am Hut haben 


			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## Kyragan (3. Mai 2010)

Dann spammt nicht rum. 


			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## Chim3r4 (3. Mai 2010)

Und hier nochmal das ganze in JAVA

```
public static String binary1(int n){

        int check;
        String result="";

        if (n==0){
            result = "0";
            return result;
        }
        
        else {
        

            while (n>0){
            check = n%2;
            result = check + result;
            n = n/2;}
        
        return result;
        

        }


    }
```


----------



## Klos1 (3. Mai 2010)

Gut, jetzt haben wir zwei C#-Versionen und einmal Java. Niranda wird uns in Kürze die php-Version liefern. Fühlt sich jemand dazu berufen, daß ganze noch in C abzubilden? Ein bisschen Old School muss schon sein.
Dazu vielleicht noch ne Version in Cobol oder so. 


			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## utos (3. Mai 2010)

So ich melde mich noch mal zurück mit meiner Lösung nur der Vollständigkeit halber 


			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        






procedure TForm1.Button1Click(Sender: TObject);
var dezi, dezirechner, dezimal, dezirest, x : Integer;
ergebnis, a, z: string;

begin
dezi:=StrToInt(DezimalEdit.text);
dezirechner:=dezi;
dezimal:=dezi;
ergebnis:='';
z:='1';
 	REPEAT

 Begin

 dezirechner:=dezirechner Div 2;
 x:=dezirechner;
 If x>0 Then
 Begin
 	dezirest:=dezimal Mod 2;
 	a:=IntToStr(dezirest);
 	Insert (a,ergebnis,1);
 	dezimal:=dezirechner;
 END
 Else
 	Insert (z,ergebnis,1);

END;

 	Until
 	dezirechner=0;

 	dualEdit.text:=ergebnis;



end;
end.


Ist quasi ein Zähler eingebaut, der den Rest zählt und ihn dann in das Ergebnisfeld einsetzt.

Danke an alle 


			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## Blut und Donner (3. Mai 2010)

also auser html und klein bisschen java kann ich nichts 


			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## utos (3. Mai 2010)

Informatik wählen, dann passt das 


			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        


Da lernste auch die Grundlagen von allen (vielen) wichtigen Sachen.


----------



## Soramac (3. Mai 2010)

Kyragan schrieb:


> Dann spammt nicht rum.
> 
> 
> Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.



Wenn du so schlau bist..


----------



## Nebola (3. Mai 2010)

Soramac schrieb:


> Wenn du so schlau bist..



Das ergibt keinen Sinn.


----------



## spectrumizer (3. Mai 2010)

Erinnert mich an "Hello World" 


			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



http://veit-it.de/fun/informatiker_witze/hello_world.php


----------



## muehe (3. Mai 2010)

Kyragan schrieb:


> Dann spammt nicht rum.
> 
> 
> Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.



bissl Spam muss sein und nich gleich aggressiv werden @ rest 


			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------

