AGB  ·  Datenschutz  ·  Impressum  







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

Umrechnen von Zahlensystemen

Ein Thema von JP29 · begonnen am 27. Aug 2011 · letzter Beitrag vom 1. Sep 2011
Antwort Antwort
Seite 1 von 2  1 2      
JP29

Registriert seit: 27. Aug 2011
45 Beiträge
 
Delphi 6 Personal
 
#1

AW: Umrechnen von Zahlensystemen

  Alt 28. Aug 2011, 16:32
na doch ich kopiere doch immer einen teilstring aus dem gesamten string (der eingegeben wird) in die strings s1....s4 herein

und zur schleife, ich verstehe die syntax nicht und du hast ja auch eine if.verschachtelung, dass müsstest du mir bittenoch einmal erklären
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: Umrechnen von Zahlensystemen

  Alt 28. Aug 2011, 16:42
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var n, result, y: Integer;
    x, s1, s2, s3, s4: String;
begin
 x:=(edit1.Text);
 n:=Length(x);
  if n=1 then
   begin
    y:=StrToInt(edit1.Text);
    result:=y*1;
    edit2.Text:=IntToStr(result);
   end;
  if n=2 then
   begin
    s1:=copy(x,2,2);
    s2:=copy(x,1,1);
    result:= StrToInt(s1)*1 + StrToInt(s2)*2;
    edit2.Text:=IntToStr(result);
   end;
  if n=3 then
   begin
    s1:=copy(x,3,3);
    s2:=copy(x,2,2);
    s3:=copy(x,1,1);
    result:= StrToInt(s1)*1 + StrToInt(s2)*2 + StrToInt(s3)*4;
    edit2.text:=IntToStr(result);
   end;
  if n=4 then
   begin
    s1:=copy(x,4,4);
    s2:=copy(x,3,3);
    s3:=copy(x,2,2);
    s4:=copy(x,1,1);
    result:= StrToInt(s1)*1 + StrToInt(s2)*2 + StrToInt(s3)*4 + StrToInt(s4)*8;
    edit2.Text:=IntToStr(result);
   end;
  if n>4 then
   begin
    showmessage('Es können nur Zahlen mit max 4 Stellenumgerechnet werden.');
   end;
end;
Ich sehe da nirgendswo ein "copy" oder was auch immer... keine Zuweisung die etwas mit s1, ..., s4 zu tun hätte (Zuweisung ist ":=").

Weiters
Delphi-Quellcode:
var
  binStr : String;
  binVal : Integer;
  decVal : Integer;
  i : Integer;
begin
  binStr := edit1.Text; // weise binStr den Inhalt von edit1.Text
  decVal := 0; // initialisiere ein paar Werte
  binVal := 1;
  for i := Length(binStr) downto 1 do // gehe alle Elemente rückwärts durch -> richtige Reihenfolge
  begin
    if binStr[i] = '1then // wenn das Element an der Stelle i = 1 ist, dann
      decVal := decVal + binVal; // addiere dem dezimalen Wert den binären Zählwert hinzu
    binVal := binVal * 2; // aktualisiere den binären Zählwert!
  end;
  edit2.Text := IntToStr(decVal);
end;
Wenn du die Syntax einmal gerafft hast und die Logik dahinter immernoch nicht, dann führe einen Schreibtischtest durch - dh. gehe alles manuell per Hand auf Blatt Papier Schritt für Schritt durch!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
JP29

Registriert seit: 27. Aug 2011
45 Beiträge
 
Delphi 6 Personal
 
#3

AW: Umrechnen von Zahlensystemen

  Alt 28. Aug 2011, 17:00
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var n, result, y: Integer;
    x, s1, s2, s3, s4: String;
begin
 x:=(edit1.Text);
 n:=Length(x);
  if n=1 then
   begin
    y:=StrToInt(edit1.Text);
    result:=y*1;
    edit2.Text:=IntToStr(result);
   end;
  if n=2 then
   begin
    [B]s1:=[/B][B]copy[/B](x,2,2);
    [B]s2:=[/B][B]copy[/B](x,1,1);
    result:= StrToInt(s1)*1 + StrToInt(s2)*2;
    edit2.Text:=IntToStr(result);
   end;
  if n=3 then
   begin
    s1:=copy(x,3,3);
    s2:=copy(x,2,2);
    s3:=copy(x,1,1);
    result:= StrToInt(s1)*1 + StrToInt(s2)*2 + StrToInt(s3)*4;
    edit2.text:=IntToStr(result);
   end;
  if n=4 then
   begin
    s1:=copy(x,4,4);
    s2:=copy(x,3,3);
    s3:=copy(x,2,2);
    s4:=copy(x,1,1);
    result:= StrToInt(s1)*1 + StrToInt(s2)*2 + StrToInt(s3)*4 + StrToInt(s4)*8;
    edit2.Text:=IntToStr(result);
   end;
  if n>4 then
   begin
    showmessage('Es können nur Zahlen mit max 4 Stellenumgerechnet werden.');
   end;
end;
Ich sehe da nirgendswo ein "copy" oder was auch immer... keine Zuweisung die etwas mit s1, ..., s4 zu tun hätte (Zuweisung ist ":=").
da steht doch copy und :=
Zitat:
Weiters
Delphi-Quellcode:
var
  binStr : String;
  binVal : Integer;
  decVal : Integer;
  i : Integer;
begin
  binStr := edit1.Text; // weise binStr den Inhalt von edit1.Text
  decVal := 0; // initialisiere ein paar Werte
  binVal := 1;
  for i := Length(binStr) downto 1 do // gehe alle Elemente rückwärts durch -> richtige Reihenfolge
  begin
    if binStr[i] = '1then // wenn das Element an der Stelle i = 1 ist, dann
      decVal := decVal + binVal; // addiere dem dezimalen Wert den binären Zählwert hinzu
    binVal := binVal * 2; // aktualisiere den binären Zählwert!
  end;
  edit2.Text := IntToStr(decVal);
end;
Wenn du die Syntax einmal gerafft hast und die Logik dahinter immernoch nicht, dann führe einen Schreibtischtest durch - dh. gehe alles manuell per Hand auf Blatt Papier Schritt für Schritt durch!
ok ist schon verständlicher, aber was ist wenn das element 0 ist?
und das mit dem binval*2 versteh ich auch nicht
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#4

AW: Umrechnen von Zahlensystemen

  Alt 28. Aug 2011, 18:01
Binär in Dezimal ist IMHO einfacher als anders herum. Hier mal etwas Pseudo-Code:
Code:
i = Stringlänge
Zahl = 1
Ergebnis = 0
solange i > 0
  falls String[i]
    '0' oder '1': Ergebnis = Ergebnis + Zahl * AlsZahl(String[i])
    sonst: falsche Eingabe
  Zahl = Zahl * 2
  i = i - 1
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
JP29

Registriert seit: 27. Aug 2011
45 Beiträge
 
Delphi 6 Personal
 
#5

AW: Umrechnen von Zahlensystemen

  Alt 28. Aug 2011, 18:08
sorry leute,
aber ich raff das einfach nicht...
  Mit Zitat antworten Zitat
JP29

Registriert seit: 27. Aug 2011
45 Beiträge
 
Delphi 6 Personal
 
#6

AW: Umrechnen von Zahlensystemen

  Alt 28. Aug 2011, 18:24
also leute, ist ein noob fehler gewesen,
ich hab bei dem copy befehl was falsch verstanden(ich dachte man kopiert immer nur von position zu position, aber man kopiert ja ab position x Stellen),
jetzt klappt das auch.
Mit der schleife werd ich jetzt selber mal ein bisschen noch tüfteln.
Vielen dank an alle von euch für eure hilfe

mfg julian.
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#7

AW: Umrechnen von Zahlensystemen

  Alt 28. Aug 2011, 19:56
Binär in Dezimal ist IMHO einfacher als anders herum. Hier mal etwas Pseudo-Code:
Code:
i = Stringlänge
Zahl = 1
Ergebnis = 0
solange i > 0
  falls String[i]
    '0' oder '1': Ergebnis = Ergebnis + Zahl * AlsZahl(String[i])
    sonst: falsche Eingabe
  Zahl = Zahl * 2
  i = i - 1
Kuck mal hier

Und btw, JP29, sry, habs überlesen xD

Deutlichere Erklärung zum Algorithmus:
Die binäre Zahl "101011" hat im dezimalen System den Wert 43.
So, wie kommt man nun von dem binären Wert zum Dezimalen?
Der von mir zuvor geposteter Algorithmus macht es, den ich nun mal speziell für dich per Hand ausführen werde:
Code:
binStr := "101011"
decVal := 0
binVal := 1
i := Länge von binStr = 6 = Startwert -> runter bis 1, wiederhole folgendes:
i = 6:
  wenn binStr[6] den Wert "1" hat:
    decVal (=0) := decVal (=0) + binVal (1) // dies wird ausgeführt, da zuvorige Bedingung erfüllt -> decVal = 1
  binVal (=1) := binVal(=1) * 2 // daraus ergibt sich 2
i = 5:
  wenn binStr[5] den Wert "1" hat:
    decVal (=1) := decVal (=1) + binVal (2) // dies wird ausgeführt, da zuvorige Bedingung erfüllt -> decVal = 3
  binVal (=2) := binVal(=2) * 2 // daraus ergibt sich 4
i = 4:
  wenn binStr[4] den Wert "1" hat:
    decVal (=3) := decVal (=3) + binVal (4)
  binVal (=4) := binVal(=4) * 2 // daraus ergibt sich 8
i = 3:
  wenn binStr[3] den Wert "1" hat:
    decVal (=3) := decVal (=3) + binVal (8) // dies wird ausgeführt, da zuvorige Bedingung erfüllt -> decVal = 11
  binVal (=8) := binVal(=8) * 2 // daraus ergibt sich 16
i = 2:
  wenn binStr[2] den Wert "1" hat:
    decVal (=3) := decVal (=3) + binVal (16)
  binVal (=16) := binVal(=16) * 2 // daraus ergibt sich 32
i = 1:
  wenn binStr[1] den Wert "1" hat:
    decVal (=3) := decVal (=3) + binVal (32) // dies wird ausgeführt, da zuvorige Bedingung erfüllt -> decVal = 43
  binVal (=32) := binVal(=32) * 2 // daraus ergibt sich 64
decVal = 43
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton (28. Aug 2011 um 19:59 Uhr)
  Mit Zitat antworten Zitat
JP29

Registriert seit: 27. Aug 2011
45 Beiträge
 
Delphi 6 Personal
 
#8

AW: Umrechnen von Zahlensystemen

  Alt 31. Aug 2011, 15:57
hey leute, ich hab noch mal ne frage
ich hab jetzt eine schleifeentwickelt, die von binär in dezimal umrechnet, aber es kommt ein falsches ergebnis raus...könnt ihr mirhelfen
hier der quelltext:

Delphi-Quellcode:
if radiobutton4.checked=true then
 begin
  x:=(edit1.Text);
  n:=Length(x);
  e:=0;
  y:=n;
  summe:=0;
   for i:=1 to n do
    begin
     s1:=copy(x,y,1);
     j:=StrToFloat(s1);
     potenz:=power(j, e);
     summe:=potenz+summe;
     e:=e+1;
     y:=y-1;
    end;
  edit2.Text:=FloatToStr(summe);
end;
end;
mfg julian.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#9

AW: Umrechnen von Zahlensystemen

  Alt 31. Aug 2011, 16:40
Das sieht aber sehr umständlich aus. Geh doch den String von hinten nach vorn durch und erhöhe das Ergebnis um eine Zahl, die bei 1 beginnt und bei jedem Durchlauf verdoppelt wird. Das Copy kannst Du Dir übrigens sparen, da man einzelne Zeichen eines Strings direkt per Index ansprechen kann (1. Zeichen hat Index 1).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#10

AW: Umrechnen von Zahlensystemen

  Alt 31. Aug 2011, 17:00
hey leute, ich hab noch mal ne frage
ich hab jetzt eine schleifeentwickelt, die von binär in dezimal umrechnet, aber es kommt ein falsches ergebnis raus...könnt ihr mirhelfen
Nie wieder!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz