Autor |
Beitrag |
nixblicker
Hält's aus hier
Beiträge: 12
|
Verfasst: Fr 30.10.09 19:43
Hallo!
Wie kann ich prüfen, ob eine Zahl eine Ganzzahl, also Integer, ist?
Ich teile eine Zahl durch 1 bis 9 und prüfe dann immer, ob das Ergebnis
eine Ganzzahl ist. Wie krieg ich das hin?
Vielen Dank im Voraus!
Mfg.
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Fr 30.10.09 19:53
Hey und  im Forum!
Schau Dir mal den Befehl mod an. Dieser gibt Dir den Rest einer Division zurück.
Alternativ bietet sich hier auch die Funktion Frac() an, die Dir die Nachkommastellen einer Zahl zurückgibt. 
|
|
nixblicker 
Hält's aus hier
Beiträge: 12
|
Verfasst: Fr 30.10.09 20:23
Okay, danke ich versuchs mal damit. Wenn Fragen kommen, meld ich mich nochmal
Aber jetzt noch eine kleine Frage:
Wenn ich in einer If-Konstruktion mehrer Bedingungen haben will, wie geht das?
z.B.
Delphi-Quelltext 1: 2: 3: 4:
| If Rest = 0 and Rest1 = 0 then begin ... end; |
Ich will etwas nur ausführen, wenn Rest = 0 und eben Rest1 = 0 sind. Wie oben geschrieben
funktioniert das nicht. Aber wie sonst?
Danke schonmal.
Mfg.
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: Fr 30.10.09 20:28
Delphi-Quelltext 1: 2: 3: 4:
| If Rest = 0 or Rest1 = 0 then begin ... end; |
Du sagst ja: wenn das eine ODER das andere eintritt. Dein Quelltext aber sagte, ausführen nur dann, wenn Bedingung 1 UND Bedingung 2 wahr (gleichzeitig) zutreffen...
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|
thepaine91
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: Fr 30.10.09 20:31
Hi, folgendes zu beachte denn in z.B. Delphi 6 wird es ohne Klammern probleme geben. Da keine Delphi Version bekannt gegeben worden ist.
Delphi-Quelltext 1:
| If (Rest = 0) or (Rest1 = 0) then |
|
|
nixblicker 
Hält's aus hier
Beiträge: 12
|
Verfasst: Fr 30.10.09 20:34
Okay danke. Ich habs jetzt so gelöst, dass ich kein AND oder OR brauch...
Aber ne andre Frage...
Ich glaub ich post mal den ganzen Code.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| ... var Teiler: integer; Rest: integer;
begin
zahler := StrToInt(Edit1.Text); nenner := StrToInt(Edit2.Text);
for Teiler := 1 to 10 do begin Rest := (Zahler mod Teiler) + (Nenner mod Teiler) ;
If Rest = 0 then begin zahlerneu := zahler / teiler; nennerneu := nenner / teiler ; end else;
end; ... |
Es kommt bei der Zeile zahlerneu := ... die Fehlermeldung "Incompatible types: 'Integer' and 'Extended'".
(zahlerneu und nennerneu sind weiter oben schon als integer deklariert.)
Warum das denn?
EDIT: Ich hab zahlerneu und nennerneu als double deklariert, jetzt scheints zu funktionieren!
Danke schonmal.
Mfg.
|
|
thepaine91
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: Fr 30.10.09 20:39
Integer = ganzzahl
double = gleitkommazahl
Integer kann nur Ganze zahlen darstellen wie es schon sagt.
Daher kann man nicht sagen Integer := 1,1;
hoffe das hilft wenn nicht einfach mal F1 drücken in der Delphi-Hilfe wird das sehr gut erklärt.
Edit: Das ist das selbe wie string := integer nicht geht.
Man muss es auf jeden fall vorher Konvertieren mit z.b.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure xy; var i: integer; d: double; begin I := 1; d := 1; I := d; I := Floattoint(d); d := 1,5; i := d; i := Floattoint(d); end; |
mfg nic
|
|
nixblicker 
Hält's aus hier
Beiträge: 12
|
Verfasst: Fr 30.10.09 20:50
Danke, hab jetzt aber ein anderes Problem:
Wie breche ich eine for-Schleife ab?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| for Teiler := 20 downto 2 do begin Rest := (Zahler mod Teiler) + (Nenner mod Teiler) ;
If Rest = 0 then begin zahlerneu := zahler/teiler; nennerneu := nenner/teiler; showmessage(FloatToStr(zahlerneu) + ' / ' + FloatToStr(nennerneu)); end else;
end; |
Wie geht das? Sorry für die vielen Fragen^^
Mfg.
|
|
thepaine91
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: Fr 30.10.09 20:55
Break oder Exit für Unterschied F1 
|
|
nixblicker 
Hält's aus hier
Beiträge: 12
|
Verfasst: Fr 30.10.09 21:06
Danke, Frage ist erstmal beantwortet.
Ihr werdet aber sicher nochmal von mir hören...
Mfg.
|
|
FinnO
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: Fr 30.10.09 23:09
so. Warum jetzt nicht tryStrToInt?!
edit: gemeint war natürlich tryIntToStr
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Sa 31.10.09 14:29
|
|
nixblicker 
Hält's aus hier
Beiträge: 12
|
Verfasst: Sa 31.10.09 18:35
Hallo...
Zitat: |
Es geht wohl eindeutig ums Kürzen. Aber warum verwendest Du nicht einfach den Algorithmus von Euklid zur Bestimmung des ggTs?
|
weiiil ähm...ich wollt schauen ob ichs selber hinkrieg. und es hat sogar geklappt...wird ein programm für die schule, deshalb will ich so wenig wie möglich "fremden" (mit fremd mein ich vorgefertigt) Code einbauen...und für EUKLID fehlt
mir grad die Zeit und die Lust 
|
|