AGB  ·  Datenschutz  ·  Impressum  







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

Fehlfunktion in if-Abfrage

Ein Thema von TurboMartin · begonnen am 15. Okt 2006 · letzter Beitrag vom 15. Okt 2006
Antwort Antwort
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#1

Fehlfunktion in if-Abfrage

  Alt 15. Okt 2006, 13:41
Hi DP !
Ich hbe folgenden Code:
Delphi-Quellcode:
  if zahlenarray1[1] = 1 then
    zahlenaray3moeglichezahlen[1] := zahlenaray3moeglichezahlen[1]+1 //
  else if zahlenarray1[1] = 2 then
         zahlenaray3moeglichezahlen[2] := zahlenaray3moeglichezahlen[2]+1 //
       else if zahlenarray1[1] = 3 then
              zahlenaray3moeglichezahlen[3] := zahlenaray3moeglichezahlen[3]+1; // Zugewiesene Zahlen aus den Arrays z1 und z2
if zahlenarray1[2] = 1 then
  zahlenaray3moeglichezahlen[1] := zahlenaray3moeglichezahlen[1]+1 // lesen und z3z hinufügen
  else if zahlenarray1[2] = 2 then
         zahlenaray3moeglichezahlen[2] := zahlenaray3moeglichezahlen[2]+1 //
       else if zahlenarray1[2] = 3 then
              zahlenaray3moeglichezahlen[3] := zahlenaray3moeglichezahlen[3]+1; //

  if zahlenarray2[1] = 1 then
    zahlenaray3moeglichezahlen[1] := zahlenaray3moeglichezahlen[1]+1
  else if zahlenarray2[1] = 2 then
         zahlenaray3moeglichezahlen[2] := zahlenaray3moeglichezahlen[2]+1
       else if zahlenarray2[1] = 3 then
              zahlenaray3moeglichezahlen[3] := zahlenaray3moeglichezahlen[3]+1;
  if zahlenarray2[2] = 1 then
    zahlenaray3moeglichezahlen[1] := zahlenaray3moeglichezahlen[1]+1
  else if zahlenarray2[2] = 2 then
         zahlenaray3moeglichezahlen[2] := zahlenaray3moeglichezahlen[2]+1
       else if zahlenarray2[2] = 3 then
              zahlenaray3moeglichezahlen[3] := zahlenaray3moeglichezahlen[3]+1; // wie oben

  if z3z[1] = 1 then //
  begin //
    if z3[2] <> 0 then //
    z3[1] := 1 //
    else z3[2] := 1; //
  end //
  else if z3z[2] = 1 then //
       begin // wo in z3z eine 1 steht, diese Zahl zu z3 hinzufügen.
         if z3[2] <> 0 then //
         z3[1] := 2 //
         else z3[2] := 2; //
       end //
       else if z3z[3] = 1 then //
            begin //
              if z3[2] <> 0 then //
              z3[1] := 3 //
              else z3[2] := 3; //
            end; //
  ShowMessage(IntToStr(z3z[1])+'+'+IntToStr(z3z[2])+'+'+IntToStr(z3z[3]));
  ShowMessage('z3: '+IntToStr(z3[1])+'+'+IntToStr(z3[2]);
z3z und z3 sin beide ein array [1..3] of Integer
Bei der ersen Meldung soll mir immer zweimal eine 1 angezeigt werden und eine 2. Das Funktioniert so auch.
Danach soll dann z3[1] und z3[2] die Zahl des Arrays übergeben werden, in der eine 1 steht.
so wie ich es mache, kriege ich aber immer nur für die zweite Zahl eine Zahl, und die erste ist immer 0.
Aber wieso?
Was mache ich falsch?
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Fehlfunktion in if-Abfrage

  Alt 15. Okt 2006, 13:44
Was mache ich falsch 1. Formatierung
2. Dokumentation
3. Variablennamen
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Fehlfunktion in if-Abfrage

  Alt 15. Okt 2006, 13:50
Zitat von Union:
1. Formatierung
Die Formatierung ist aus einem Buch.


Zitat von Union:
2. Dokumentation
Ändere ich direkt.


Zitat von Union:
3. Variablennamen
Finde ich nicht. Für mich ist es klar alles.
Je länger die sind, umso eher schreibt man sie falsch.
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Fehlfunktion in if-Abfrage

  Alt 15. Okt 2006, 13:54
Zitat:
Die Formatierung ist aus einem Buch.
Früher kam man für sowas noch in die Hölle...
Zitat:
Je länger die sind, umso eher schreibt man sie falsch.
Das ist ein einleuchtendes Argument. Aber anders herum: Je kürzer und ähnlicher sie sind, desto eher verwechselt man sie. Mir flimmert's jedenfalls vor den Augen. Ein Variablenname sollte etwas über die Verwendung aussagen, auch ohne Dokumentation. Was für Werte werden in diesen Arrays gespeichert?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#5

Re: Fehlfunktion in if-Abfrage

  Alt 15. Okt 2006, 13:56
Delphi-Quellcode:
if z1[1] = 1 then z3z[1] := z3z[1]+1
  else if z1[1] = 2 then z3z[2] := z3z[2]+1
       else if z1[1] = 3 then z3z[3] := z3z[3]+1;
Kann man so schreiben:

Inc(z3z[z1[1]]); Wenn z1[1] nur 1, 2 oder 3 annehmen kann.

Benutze mal den Debugger.
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#6

Re: Fehlfunktion in if-Abfrage

  Alt 15. Okt 2006, 13:57
Zitat von TurboMartin:
Zitat von Union:
1. Formatierung
Die Formatierung ist aus einem Buch.
Orientiere dich daran, um Welten lesbarer. btw: was fuer ein Buch ist das?


Zitat von TurboMartin:
Zitat von Union:
3. Variablennamen
Finde ich nicht. Für mich ist es klar alles.
Je länger die sind, umso eher schreibt man sie falsch.
Je kuerzer sie sind, desto weniger versteht man, und desto eher macht man Fehler. Dein derzeitiges Problem ist das beste Beispiel. Einen falsch geschriebenen Variablennamen meckert der Compiler an. Einen Logikfehler darfst du selber suchen. Und das bereitet dir hier offensichtlich Schwierigkeiten. Was lernen wir daraus? Aussagekraeftige Variablennamen sind ein muss fuer jedes Programm mit mehr als 10 Zeilen!
Es kann sein, dass fuer dich alles klar ist, zumindest jetzt. Guck dir das Programm 2 Monate lang nich an, und versuch es nochmal zu verstehn. Ausserdem: Fuer dich ist alles klar, weil du den Code geschrieben hast. Ein Aussenstehender hat schon alleine Schwierigkeiten damit, den Quellcode zu verstehn, und ich habe schon lange aufgehoert, solche Quellcodes zu lesen.
Lektion Nr2: Aussagekraeftige Variablennamen verringern nicht nur die Fehlerwahrscheinlichkeit, sondern erhoehen auch die Wahrscheinlichkeit, dass jemand anderes deinen Quellcode liest und evt. auch korrigieren kann.

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Fehlfunktion in if-Abfrage

  Alt 15. Okt 2006, 14:01
Zitat von Union:
Zitat:
Die Formatierung ist aus einem Buch.
Früher kam man für sowas noch in die Hölle...
Zitat:
Je länger die sind, umso eher schreibt man sie falsch.
Das ist ein einleuchtendes Argument. Aber anders herum: Je kürzer und ähnlicher sie sind, desto eher verwechselt man sie. Mir flimmert's jedenfalls vor den Augen. Ein Variablenname sollte etwas über die Verwendung aussagen, auch ohne Dokumentation. Was für Werte werden in diesen Arrays gespeichert?
var z1, z2, z3, z3z: array [1..3] of Integer; Am Anfang werden z1 und z2 Werte zugelost.
Da es bei z3 dann zu lange dauert bis es auch Werte hat lese ich aus, welche Werte schon verwendet werden.
Es gibt drei Werte: 1,2 und 3. Alle müssen am Ende 2 mal drin vorkommen.
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#8

Re: Fehlfunktion in if-Abfrage

  Alt 15. Okt 2006, 14:35
Zitat von JasonDX:
Orientiere dich daran,
Gibts sogar in ner deutschen Fassung: http://www.dsdt.info/grundlagen/styleguide/

Variablennamen:
Ich sag immer: Die beste Dokumentation is der Code selber. Wenn man schon aus den Bezeichnern rauslesen kannst, das passiert, brauchst du weniger Prosa zu schreiben. Die Heisenbergsche Unschärferelation für Programmierer: Code * Kommentar >= h

@TurboMartin:
Wenn du uns sagst, was der Code bezweckt, können wir vielleicht besser helfen...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  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 01:25 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