AGB  ·  Datenschutz  ·  Impressum  







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

Zahlen symmetrisch

Ein Thema von xShadowBoZz · begonnen am 27. Mär 2008 · letzter Beitrag vom 28. Mär 2008
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von xShadowBoZz
xShadowBoZz

Registriert seit: 19. Jan 2008
Ort: Deutschland ~.~
80 Beiträge
 
Delphi 7 Enterprise
 
#21

Re: Zahlen symmetrisch

  Alt 28. Mär 2008, 09:47
also hab mir eure beispiele ma angesehen und hab mir dann was eigenes ueberlegt.

habs erst damit probiert:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var eins, zwei, drei, vier, fuenf: Integer;
begin
  eins:=StrToInt(edit1.text);
  zwei:=StrToInt(edit2.text);
  drei:=StrToInt(edit3.text);
  vier:=StrToInt(edit4.Text);
  fuenf:=StrToInt(edit5.Text);
  If eins + zwei = vier + fuenf then begin
    Label3.Visible:=StrToBool('False');
    Label2.Visible:=StrToBool('True');
  end
else
  begin
    Label2.Visible:=StrToBool('False');
    Label3.Visible:=StrToBool('True');
  end;
end;
(also das man 5 verschiedene Zahlen schreiben kann)

so wenn ich dann auf den button clicke
ist zb. 12321 = symmetrisch und 12231 = nicht symmetrisch
allerdings hab ich dann bemerkt das es auch einen kleine fehler gib.t
da es ja den wert des 1. felds mit dem 2. zusammen rechnet und mit der summe des 4. + 5. felds vergleicht.

so würde das programm also ausgeben das, zb.
12312 = symmetrisch ist.

also bin ich nochmal dran gegangen und hab einen anderen weg gesucht,
in diesem fall is mir dann eine ganz einfache lösung eingefallen und wollte fragen ob man das so machen kann oder ob es da auch sowas wie einen "Bug" gibt.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var eins, zwei, drei, vier, fuenf: Integer;
begin
  eins:=StrToInt(edit1.text);
  zwei:=StrToInt(edit2.text);
  drei:=StrToInt(edit3.text);
  vier:=StrToInt(edit4.Text);
  fuenf:=StrToInt(edit5.Text);
  If (eins = fuenf) and (zwei = vier) then begin
    Label3.Visible:=StrToBool('False');
    Label2.Visible:=StrToBool('True');
  end
else
  begin
    Label2.Visible:=StrToBool('False');
    Label3.Visible:=StrToBool('True');
  end;
end;
hier wird vergliechen ob
edit1.text = edit5.text ist
und ob
edit2.text = edit4.text ist

richtig so?



(noch nebenbei, klingt jetzt wahrschienlich etwas dumm oder so, aber ich hab des immer noch nicht kapiert wie ich eine function einbauen kann, kann mir jemand helfen, bzw. zeigen oder einen link zu einem tut geben?)
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#22

Re: Zahlen symmetrisch

  Alt 28. Mär 2008, 09:53
Der 2. Ansatz ist auf jeden Fall richtiger, wenn auch umständlich gelöst. Versuch es mal so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var eins, zwei, drei, vier, fuenf: Integer;
begin
  //Du solltest hier auf jeden Fall eine Fehlerbehandlung einbauen
  eins:=StrToInt(edit1.text);
  zwei:=StrToInt(edit2.text);
  drei:=StrToInt(edit3.text);
  vier:=StrToInt(edit4.Text);
  fuenf:=StrToInt(edit5.Text);
  //sprechende Bezeichner wären auch nicht schlecht ;)
  Label2.Visible := (eins = fuenf) and (zwei = vier);
  Label3.Visible := not Label2.Visible;
{
  If (eins = fuenf) and (zwei = vier) then begin
    Label3.Visible:=StrToBool('False');
    Label2.Visible:=StrToBool('True');
  end
else
  begin
    Label2.Visible:=StrToBool('False');
    Label3.Visible:=StrToBool('True');
  end;}

end;
Und zum Einsetzen von Funktionen solltest Du Dir die Einsteiger-Tutorials in diesem und anderen Foren mal ansehen. Ein kleines Beispiel:
Delphi-Quellcode:
function IsSymmetricNumber(const i: Cardinal): Boolean;
begin
  Result := IntToStr(i) = ReverseString(IntToStr(i));
end;

procedure TForm1.Button1Click(Sender: TObject);
var eins, zwei, drei, vier, fuenf: Integer;
begin
  //Du solltest hier auf jeden Fall eine Fehlerbehandlung einbauen
  eins:=StrToInt(edit1.text) * 10000;
  zwei:=StrToInt(edit2.text) * 1000;
  drei:=StrToInt(edit3.text) * 100;
  vier:=StrToInt(edit4.Text) * 10;
  fuenf:=StrToInt(edit5.Text);
  if IsSymmetricNumber(eins + zwei + drei + vier + fuenf) then
    ShowMessage('Palindrom')
  else
    ShowMessage('Kein Palindrom');
end;
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 xShadowBoZz
xShadowBoZz

Registriert seit: 19. Jan 2008
Ort: Deutschland ~.~
80 Beiträge
 
Delphi 7 Enterprise
 
#23

Re: Zahlen symmetrisch

  Alt 28. Mär 2008, 10:27
Zitat von DeddyH:
Der 2. Ansatz ist auf jeden Fall richtiger, wenn auch umständlich gelöst. Versuch es mal so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var eins, zwei, drei, vier, fuenf: Integer;
begin
  //Du solltest hier auf jeden Fall eine Fehlerbehandlung einbauen
  eins:=StrToInt(edit1.text);
  zwei:=StrToInt(edit2.text);
  drei:=StrToInt(edit3.text);
  vier:=StrToInt(edit4.Text);
  fuenf:=StrToInt(edit5.Text);
  //sprechende Bezeichner wären auch nicht schlecht ;)
  Label2.Visible := (eins = fuenf) and (zwei = vier);
  Label3.Visible := not Label2.Visible;
{
  If (eins = fuenf) and (zwei = vier) then begin
    Label3.Visible:=StrToBool('False');
    Label2.Visible:=StrToBool('True');
  end
else
  begin
    Label2.Visible:=StrToBool('False');
    Label3.Visible:=StrToBool('True');
  end;}

end;
ok also das mit funktionen einbauen seh ich mir noch an. und werd mal sehen ob ich mit deinem beispiel klar komme.
und zu dem was du veraendert hast soll alles soviel heisen wie(kommt unten drunter).... wenn ich das richtig verstanden habe.
// Fehlerbehandlung
damit meinst du einfach eine fehlerbehandlung xP, weis nicht genau was aber ich würde einfach vermuten wenn zb. edit1.text = nix ist, also einfach nur leer (ich habe bei jedem edit feld im "OnKeyPress" eine procedure eingefügt das man nur zahlen reinschreiben kann.)
bzw. zu dem hier werd ich noch sehen, da mir momentan grad dazu nichts einfällt.

ab
// sprechende Bezeichner wären.....
wird das wohl so erklärt:
Label2 ist nur visible (sichtbar) wenn eins = fuenf (der wert im editfeld) und zwei = vier ist.
und Label3 ist nur visible (sichtbar) wenn label2 nciht sichtbar ist.

hoffe das ich das dann richtig verstanden hab.
allerdings muss ich sagen momentan find ich das auf meine methode noch einfacher ^^ naja liegt wohl daran das ich das kann und noch net sooo weit gedacht hab ^^
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#24

Re: Zahlen symmetrisch

  Alt 28. Mär 2008, 10:31
Lass mal ein Edit leer und drück den Button, dann weißt Du, was ich mit Fehlerbehandlung meinte. Und mit sprechenden Bezeichnern meine ich, statt Label22 einen Namen wie lblVorname (nur als Beispiel) zu wählen, dann kann man evtl. auch ohne das Formular zu kennen auf den Sinn schließen
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 xShadowBoZz
xShadowBoZz

Registriert seit: 19. Jan 2008
Ort: Deutschland ~.~
80 Beiträge
 
Delphi 7 Enterprise
 
#25

Re: Zahlen symmetrisch

  Alt 28. Mär 2008, 10:57
ja des mit edit leer lassen kommt halt mit dem problem
" is not a valid integer value.
muss ich halt noch gucken das dann entweder nichts kommt oder eine andere error nachricht.

bzw.
habs so probiert funktioniert allerdings net,

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var eins, zwei, drei, vier, fuenf: Integer;
begin
  eins:=StrToInt(edit1.text);
  zwei:=StrToInt(edit2.text);
  drei:=StrToInt(edit3.text);
  vier:=StrToInt(edit4.Text);
  fuenf:=StrToInt(edit5.Text);
// Das hier sollte die Fehlerbehandlung sein
  If (eins or zwei or drei or vier or fuenf =$22) then
  Showmessage('Bitte fülle alle Felder aus!')
// ende der Fehlerbehandlung
  else
  If (eins = fuenf) and (zwei = vier) then begin
    Label3.Visible:=StrToBool('False');
    Label2.Visible:=StrToBool('True');
  end
else
  begin
    Label2.Visible:=StrToBool('False');
    Label3.Visible:=StrToBool('True');
  end;
end;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#26

Re: Zahlen symmetrisch

  Alt 28. Mär 2008, 11:10
Schau Dir mal TryStrToInt an.
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 Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#27

Re: Zahlen symmetrisch

  Alt 28. Mär 2008, 11:13
Oder Delphi-Referenz durchsuchenStrToIntDef
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#28

Re: Zahlen symmetrisch

  Alt 28. Mär 2008, 11:14
Dann weißt Du aber nicht, ob die Zahl eingegeben wurde oder nicht
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
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#29

Re: Zahlen symmetrisch

  Alt 28. Mär 2008, 11:16
versuchs mal so:
Delphi-Quellcode:
uses
  StrUtils; // Uses ergänzen

function IsSymmetricNumber(const s: String): Boolean;
begin
  Result := s = ReverseString(s);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Temp: Integer; // Dummyvariable
  s: String;
begin
  s := edit1.text + edit2.text + edit3.text + edit4.text;
  // wenn du das ganze mit nur einem edit machen willst dann
  // s := edit1.text;

  if TryStrToInt(s, Temp) then // wenn in s eine zahl drinnsteht...
    begin
      Label2.Visible := IsSymmetricNumber(s);
      Label3.Visible := not Label2.Visible;
    end;
end;
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Benutzerbild von xShadowBoZz
xShadowBoZz

Registriert seit: 19. Jan 2008
Ort: Deutschland ~.~
80 Beiträge
 
Delphi 7 Enterprise
 
#30

Re: Zahlen symmetrisch

  Alt 28. Mär 2008, 11:47
ok thx für die hilfe.

hab es jetzt auch geschaft bei mir im code einen fehler error einzubauen falls nicht alle editfelder *edit* meine ausgefüllt sind.

hab jetzt einfach das hinzugefügt.
Delphi-Quellcode:
try
  eins:=StrToInt(edit1.text);
  zwei:=StrToInt(edit2.text);
  drei:=StrToInt(edit3.text);
  vier:=StrToInt(edit4.Text);
  fuenf:=StrToInt(edit5.Text);
except
  ShowMessage('Bitte Fülle alle Felder aus!');
  abort;
end;
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 15:14 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