AGB  ·  Datenschutz  ·  Impressum  







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

Wie kann ich in Pascal kürzen?

Ein Thema von Sofa5000 · begonnen am 7. Nov 2003 · letzter Beitrag vom 17. Nov 2003
Antwort Antwort
Sofa5000

Registriert seit: 25. Apr 2003
48 Beiträge
 
#1

Wie kann ich in Pascal kürzen?

  Alt 7. Nov 2003, 18:37
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]
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Wie kann ich in Pascal kürzen?

  Alt 7. Nov 2003, 18:56
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;
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Wie kann ich in Pascal kürzen?

  Alt 7. Nov 2003, 18:59
Sakura? Ich glaube, er meinte das mathematische Kürzen von Brüchen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Wie kann ich in Pascal kürzen?

  Alt 7. Nov 2003, 19:01
Zitat von Luckie:
Sakura? Ich glaube, er meinte das mathematische Kürzen von Brüchen.
Hm, der Punkt geht an Dich Aber er hat es nicht genauer geschrieben, ist er also selbst schuld

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Mirilin
Mirilin

Registriert seit: 21. Dez 2002
Ort: Lenzburg
861 Beiträge
 
Delphi 6 Professional
 
#5

Re: Wie kann ich in Pascal kürzen?

  Alt 7. Nov 2003, 19:16


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 . . .
Tobias
Die Physik ist für die Physiker eigentlich viel zu schwer.
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Wie kann ich in Pascal kürzen?

  Alt 7. Nov 2003, 19:18
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;
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
Benutzerbild von n00b_on_knees
n00b_on_knees

Registriert seit: 5. Apr 2003
128 Beiträge
 
#7

Re: Wie kann ich in Pascal kürzen?

  Alt 15. Nov 2003, 11:33
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?
Against TCPA & And I think we should live our dreams
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Wie kann ich in Pascal kürzen?

  Alt 17. Nov 2003, 19:05
Zitat von n00b_on_knees:
Du schreibst nämlich selbst das das das größte gemeinsame Vielfache ist.
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").
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
Benutzerbild von Mirilin
Mirilin

Registriert seit: 21. Dez 2002
Ort: Lenzburg
861 Beiträge
 
Delphi 6 Professional
 
#9

Re: Wie kann ich in Pascal kürzen?

  Alt 17. Nov 2003, 19:16


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
Tobias
Die Physik ist für die Physiker eigentlich viel zu schwer.
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Wie kann ich in Pascal kürzen?

  Alt 17. Nov 2003, 19:30
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.
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  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 23:07 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