[C/C++] Probleme mit Heron Algorithmus

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Zeh++, 11. Juli 2008 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 11. Juli 2008
    Probleme mit Heron Algorithmus

    Vorab ich hab die suche benutzt und leider kein ähnliches Programm gefunden.

    Also ich hab vor längerem ein Buch zu C++ gelesen und noch nicht viel mit dem gelernten anfangen können.
    Als mein Mathematiklehrer als Hausaufgabe aufgegeben hat das ganze in einem Tabellenkalkulationsprogramm auszuprobieren dacht ich mir "das versuch ich mal in C++"

    So als mein Code dann fertig war hat er anfangs gar nicht funktioniert, daraufhin hab ich mich bei Lehrern erkundigt was falsch is aber die können alle kein C++ (jaha selbst mein Infolehrer).

    Ich weiß jetzt nur das ich eine Funktion brauch die noch den Absolutwert einer Zahl ausgibt ...
    -das Programm ist immer in eine unendliche Schleife gefallen oder hat nach 2 Schritten gar nichts tun
    abgebrochen... dazu is mir kein einfacher Code eingefallen um das zu regeln -

    Code:
    //Heronverfahren
    #include "stdafx.h"
    #include <iostream>
    #include <conio.h> // ich hab vergessen wofür diese Einbindung gut war(vermutlich von einer früheren version)
    
    float heron(float,float);
    
    float x_vor=1, y_vor, x_nach, y_nach, diff=1, zahl;
    
    float heron(float x_vor,float y_vor) {
     x_nach=(x_vor+y_vor)/2;
     y_nach=zahl/x_nach;
     diff=x_nach-y_nach; //hier braucht man was mit absoluten Werten
     cout << "x beträgt jetzt:\t" << x_nach << "\ty beträgt jetzt :\t"
     << y_nach << "\tDie Differenz der zahlen ist:" << diff << "\n";
     x_vor=x_nach;
     y_vor=y_nach;
     return 0;
    }
    
    int main(){
     int stellen;
     cout << "Bitte geben sie die zu wurzelnde Zahl ein:\n" ;
     cin >> zahl ;
     cout << "Bitte geben sie die gewünschte Anzahl der Stellen ein:\n" ;
     cin >> stellen ;
     y_vor=zahl/x_vor;
     while (diff >=1/10^stellen) {
     heron(x_vor, y_vor);
     }
     getch();
     return 0;
    }
    Also ich weiß das der Sourcecode schlecht ist das sagt mir mein compiler auch ^^ aber auf konstruktive Kritik würd ich mich sehr freuen
    bitte berücksichtigt das is mein erstes funktionales programm​

    ich hoffe die Empfehlung eines Freundes stimmt und der post lohnt sich ...
    Vielen Dank im voraus =)
     
  2. 12. Juli 2008
    AW: Probleme mit Heron Algorithmus

    kann dein Compiler "^" ?

    und dann noch eines ist mir aufgefallen du Deklarierst deine Variablen der Funktion Global. Sehr komischer Still.
     
  3. 12. Juli 2008
    AW: Probleme mit Heron Algorithmus

    jah ich hab da noch sehr wenig Erfahrung ...
    aber ich will unbedingt richtig programmieren lernen und "Übung macht den Meister"
    mein Problem ich finde kaum Aufgaben die meine Programme lösen sollten deswegen war das auch mein erstes

    ^ : ich benutze Microsoft Visual C++ 2005 Express Edition - aber ich weiß nicht genau ob der das kann

    Edit: das mit den globalen variablen (is mir grad aufgefallen) hab ich damals (leider länger her wegen anderen Ablenkungen) dafür so geschrieben das ich ned die werte die ja im hauptprogramm zum ersten mal dann berechnet werden noch extra ändern muss ... vllt is das ja ein fehler ich weiß ned weiter
     
  4. 12. Juli 2008
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Probleme mit Heron Algorithmus

    habs mal mit jscript probiert:
    Code:
    //Heronverfahren
    /* jScript.NET */
    
    /* import system to handle the cmd */
    import System;
    
    package Heron {
     class Calculator {
     var xt:double = 1;
     var yt:double = 0;
     var userInput:float = 0;
     var diff:double = 1;
     var limit:int = 10;
     
     private function _calc():void {
     var xto:double = (this.xt + this.yt) / 2;
     var yto:double = this.userInput / xto;
     this.diff = Math.abs(xto - yto);
     Console.WriteLine('x betraegt jetzt:' + xto);
     Console.WriteLine('y betraegt jetzt:' + yto);
     Console.WriteLine('die differenz der zahlen ist:' + this.diff);
     Console.WriteLine('---------------------------');
     this.xt = xto;
     this.yt = yto;
     };
     
     public function Calculator() { 
     Console.WriteLine('bitte gib ein limit an um einen absturtz zu vermeiden');
     this.limit = parseInt(Console.ReadLine());
     
     //check limit...
     if(this.limit == 0) {
     this.limit = 1;
     } else if(this.limit > 100) {
     this.limit = 100;
     }
     
     Console.WriteLine('\nbitte geben sie die zu wurzelnde zahl ein');
     this.userInput = parseFloat(Console.ReadLine());
     Console.WriteLine('\nbitte geben wie die gewuenschte anzahl der stellen ein');
     var o:double = 1 / Math.pow(10, parseInt(Console.ReadLine()));
     var i:int = 0;
     
     //start
     Console.WriteLine('\nstarte...\n');
     
     while(this.diff > o) {
     if(i++ >= this.limit) {
     Console.WriteLine('limit erreicht! (' + this.limit + ')\n');
     break;
     } else {
     this._calc();
     }
     }
     
     //end
     Console.WriteLine('fertig!\nbeenden mit eingabe-taste');
     Console.ReadLine();
     };
     }
    };
    
    new Heron.Calculator();
    hier die exe falls du keinen compiler hast: No File | xup.in
     
  5. 13. Juli 2008
    AW: Probleme mit Heron Algorithmus

    vielen Dank jetzt hab ich zumindest schonmal ein funktionierendes Programm ...
    :] wusst gar nicht das javaskript auch so mit Konsole funktioniert ^^​

    aber gibt es denn niemanden der zumindest die "absoluter-wert-funktion" kennt `? (in C/C++)
    ich will ja auch mein programm zu laufen griegen auch wenn es nicht so schön geskriptet is (und auch funktioniert) wie das von Murdoc
     
  6. 13. Juli 2008
    AW: Probleme mit Heron Algorithmus

    joa, auch in c++ hast du die Math::Abs methode.
    Math.Abs Method (Decimal) (System)
     
  7. 13. Juli 2008
    AW: Probleme mit Heron Algorithmus

    Oder du baust sie dir schnell selber...
    Code:
    template<class T>
    T abs(T x)
    {
    if (x<0)
     x = -x;
    return x;
    }
    
    Habs jetzt zwar nicht ausprobiert, sollte aber so stimmen^^'
     
  8. 29. Juli 2008
    AW: Probleme mit Heron Algorithmus

    Also ich glaube das thema kann geschlossen werden ... danke schön euch allen ^^
    ich wer jezz erstma VC++ neu installieren und eventuell dazu etwas posten(denn da fehlt irgendwas für die cin und cout funktionen) aber das später...
    :spam:
     
  9. 29. Juli 2008
    AW: Probleme mit Heron Algorithmus

    Okay, dann closed
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.