Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie kann ich in Pascal kürzen? (https://www.delphipraxis.net/11491-wie-kann-ich-pascal-kuerzen.html)

Sofa5000 7. Nov 2003 18:37


Wie kann ich in Pascal kürzen?
 
Ich bins wieder schon wieder mit einem Pascal Problem!
Ich habe folgendes:

Delphi-Quellcode:
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;
Das ist ein Teil von einem Programm es funktoniert perfekt das Ergebniss stimmt auch aber es soll auch gekürzt werden! Wie geht das?

Danke

[edit=sakura][Delphi]-Tags gesetzt. Mfg, sakura[/edit]

sakura 7. Nov 2003 18:56

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:
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;
...:cat:...

Luckie 7. Nov 2003 18:59

Re: Wie kann ich in Pascal kürzen?
 
Sakura? Ich glaube, er meinte das mathematische Kürzen von Brüchen. :mrgreen:

sakura 7. Nov 2003 19:01

Re: Wie kann ich in Pascal kürzen?
 
Zitat:

Zitat von Luckie
Sakura? Ich glaube, er meinte das mathematische Kürzen von Brüchen. :mrgreen:

Hm, der Punkt geht an Dich :wall: Aber er hat es nicht genauer geschrieben, ist er also selbst schuld :spin:

...:cat:...

Mirilin 7. Nov 2003 19:16

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 . . .

Niko 7. Nov 2003 19:18

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 http://www.linux-related.de/coding/alg_euklid.htm):
Delphi-Quellcode:
function ggt(u, v: Integer): Integer
begin
  if u > 0 then
    Result := ggt(v mod u, u)
  else
    Result := v;
end;

n00b_on_knees 15. Nov 2003 11:33

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?

Niko 17. Nov 2003 19:05

Re: Wie kann ich in Pascal kürzen?
 
Zitat:

Zitat von n00b_on_knees
Du schreibst nämlich selbst das das das größte gemeinsame Vielfache ist.

:oops: Es sollte größter gemeinsamer Teiler heißen, ich seh mir die Funktion aber noch mal an.
Die Prozedur ist die vorletzte auf der genannten Seite (Überschrift "Das ganze noch rekursiv").

Mirilin 17. Nov 2003 19:16

Re: Wie kann ich in Pascal kürzen?
 
:hi:

hier mal eine :

Delphi-Quellcode:
function GCD(a,b : integer):integer;
begin
 if (b mod a) = 0 then Result := a
 else Result := GCD(b, a mod b);
end;
mfg Tobias

Niko 17. Nov 2003 19:30

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 17:51 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