![]() |
Wie kann ich in Pascal kürzen?
Ich bins wieder schon wieder mit einem Pascal Problem!
Ich habe folgendes:
Delphi-Quellcode:
Das ist ein Teil von einem Programm es funktoniert perfekt das Ergebniss stimmt auch aber es soll auch gekürzt werden! Wie geht das?
begin
write('Gib den Nenner ein : '); readln(nenner); write('Gib den Zähler ein : '); readln(zahler); write('Gib das Rechenzeichen ein : '); readln(zeich); write('Gib den Zweiten Nenner ein : '); readln(nenner2); write('Gib den Zweiten Zähler ein : '); readln(zahler2); teiler:=zahler * zahler2; if zeich = '+' then begin x:=teiler div zahler; y:=teiler div zahler2; nenner:=nenner * x; nenner2:=nenner2 * y; nennerges:=nenner + nenner2; writeln(nennerges); writeln(teiler); end; Danke [edit=sakura][Delphi]-Tags gesetzt. Mfg, sakura[/edit] |
Re: Wie kann ich in Pascal kürzen?
Kürzen ließe es sich schon, allerdings leidet die Lesbarkeit des Codes sehr. Wäre nicht so empfehlenswert...
Delphi-Quellcode:
...:cat:...
begin
write('Gib den Nenner ein : '); readln(nenner); write('Gib den Zähler ein : '); readln(zahler); write('Gib das Rechenzeichen ein : '); readln(zeich); write('Gib den Zweiten Nenner ein : '); readln(nenner2); write('Gib den Zweiten Zähler ein : '); readln(zahler2); teiler:=zahler * zahler2; if zeich = '+' then begin nennerges:=nenner * (teiler div zahler) + nenner2 * (teiler div zahler2); writeln(nennerges); writeln(teiler); end; |
Re: Wie kann ich in Pascal kürzen?
Sakura? Ich glaube, er meinte das mathematische Kürzen von Brüchen. :mrgreen:
|
Re: Wie kann ich in Pascal kürzen?
Zitat:
...:cat:... |
Re: Wie kann ich in Pascal kürzen?
:hi:
In der Unit JclMath gibt es die Funktion GCD (zu deutsch GGT) Teilst du nun den Bruch durch den GCD (also GGT) der beiden Zahlen . . . bist Du deinem Ziel schon ein wenig näher . . . |
Re: Wie kann ich in Pascal kürzen?
Zum Kürzen des Bruches bestimmst du zuerst das größte gemeinsame Vielfache von Zähler und Nenner, durch das du dann beide teilst.
Folgende Funktion liefert den GGT für zwei Zahlen (Basierend auf ![]()
Delphi-Quellcode:
function ggt(u, v: Integer): Integer
begin if u > 0 then Result := ggt(v mod u, u) else Result := v; end; |
Re: Wie kann ich in Pascal kürzen?
Ich brauche auch grade den ggT von 2 Zahlen, und hab eben nun gesucht, und diese Lösung von dir (Niko) benutzt. Ich kenne mich leider nicht so sehr mit rekursiver Programmierung aus, wie du es in diesem Fall machst, aber bei mir Funktioniert es so nicht.
Bist du dir sicher das das der größte gemeinsame Teiler ist? Du schreibst nämlich selbst das das das größte gemeinsame Vielfache ist. Ich hab mir jetzt die Lösung auf der Seite angesehen, und du hast hier doch die While Schleife vergessen, die man in der C Lösung sieht? Programmier das ganze eh grade in C, also ist das eh egal *g*...ich werde versuchen ob die Lösung auf dieser Seite funktioniert. Edit: Okey leider funktioniert die andere Lösung bei mir auch nicht, außerdem Blicke ich trotzdem nicht ganz durch.. hab die Delphi Lösung jetzt eben in Delphi geschrieben, doch leider funktioniert auch das nicht. Hat von euch jemand eine andere Lösung? |
Re: Wie kann ich in Pascal kürzen?
Zitat:
Die Prozedur ist die vorletzte auf der genannten Seite (Überschrift "Das ganze noch rekursiv"). |
Re: Wie kann ich in Pascal kürzen?
:hi:
hier mal eine :
Delphi-Quellcode:
mfg Tobias
function GCD(a,b : integer):integer;
begin if (b mod a) = 0 then Result := a else Result := GCD(b, a mod b); end; |
Re: Wie kann ich in Pascal kürzen?
Ich habe die von mir gepostete Funktion eben mit ein paar Zahlen ausprobiert und sie hat für alle richtige Ergebnisse geliefert (was aber nichts heißen muss). Nenn doch mal zwei Zahlen, bei denen ein falsches Ergebnis herauskommt.
Mirilins Funktion dürfte so ziemlich auf das selbe hinauslaufen, nur etwas verdreht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:30 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