Erster programmier Versuch



  • Hallo erstmal und danke an alle im vorraus, die sich die Zeit nehmen sich das Programm mal durchzulesen.
    Ich habe hier zum aller ersten mal programmiert und bin selbst verwundert dass das Programm zumindest ohne fehler und warnungen compiliert aber es funktioniert trotzdem nicht 😕
    Ich bitte deshalb dringend um hilfe
    Gruß jennesta

    #include <stdio.h>
    #include <process.h>
    #include <math.h>
    #include <iostream.h>

    void berechnung() { /*Funktion zur berechnung*/
    double a=0;
    double x0=0;
    double d=0;
    double x=0;

    int c=0;
    do
    {
    x=(0,5*(x0+a/x0));

    x=((x-x0)/x0);

    printf("Beim ,%d, Durchlauf ist x: ,%f",c,x);

    x0=x;

    c=(c+1);
    }
    while(x>d);
    };

    float main (void)
    {
    double a=0;
    double x0=0;
    double d=0;
    double x=0;

    int c=0;

    char weiter=0;

    do
    {
    system("cls");
    printf("Herzlich Willkommen\n");
    printf("Bitte geben Sie nun den Wert fuer X0 ein: ");
    scanf("%lf",x0);

    printf("Bitte geben Sie nun den Wert für a ein: ");
    scanf("%lf",a);

    printf("Bitte geben Sie nun die zu ereichende Genauigkeit d ein: ");
    scanf("%lf",d);

    c=1;
    berechnung();

    printf("Die gewünschte Genauigkeit wurde erreicht Das Endergebnis für x ist: ,%f,x");

    printf("Möchten Sie dieses Programm nocheinmal benutzen? j/n: ");
    scanf("%c",weiter);

    }
    while(weiter=='j');
    printf("Danke dass Sie dieses Programm verwendet haben");
    printf("Auf Wiedersehen");
    return 0;
    };



  • Ohne Codetags ist mir das lesen dieses Codes zu anstrengend. Was willst du berechnen?



  • 1. Siehe meine Signatur
    2. Code-Tags benutzen
    3. Wenn du mit scanf einen double einlesen willst, musst du die Adresse übergeben. Gleiches gilt für char und int.
    4. int main



  • 1: die main funktion muss int zurück geben!
    (Wie zum Teufel kommst du auf float?)
    2: Beschäftige dich mal mit Parametern und Rückgabewerten. Findest du in jedem Anfängertutorial.
    3: <iostream.h> gibts net. wenn schon, dann <iostream>, was aber unnötig ist, weil du in dem Programm eh nur C Funktionen verwendest.



  • Wo wir schon dabei sind...

    #include <stdio.h> -> #include <cstdio>
    #include <process.h> -> wird hier nicht gebraucht, also weg
    #include <math.h> -> #include <cmath>
    #include <iostream.h> -> #include <iostream>



  • langsam wirds mir unheimlich...wieso machen alle neuen dieselben fehler?
    wieso benutzt keiner der neuen die neuen streams, sondern nur printf und konsorten.

    das ist eine verschwörung, ganz sicher.



  • das ist eine verschwörung, ganz sicher.

    lach

    ich frag mich warum alle als erstes programm inzwischen gleich nen compiler bauen und das gute alte "hello world" aussterben lassen



  • Das ist ein Troll.
    float main schreibt kein Schwein.
    🤡



  • randa schrieb:

    Das ist ein Troll.
    float main schreibt kein Schwein.
    🤡

    Wenn du wüsstest, was teilweise von wem unterrichtet wird. Schau dir doch nur einige Tutorials oder Kursmaterialien an die google ausspuckt. Mich wundert mittlerweile garnichts mehr.



  • MaSTaH schrieb:

    Schau dir doch nur einige Tutorials oder Kursmaterialien an die google ausspuckt.

    hast recht:

    #include <iostream.h>   /* Das ist die Definitionsdatei für Ströme */
    

    http://ladedu.com/cpp/src_html/komm.html
    lol 😃

    Edit: und noch eins, sogar noch besser: 👍

    # include <iostream.h>
    // Library für Ein- und Ausgabefunktionen
    
    void main ( )
    ...
    

    http://www.inf.fu-berlin.de/lehre/kurse/cplusplus/Lektion1.html#HDR0
    🙄



  • Schaut nach einem reinen C Programm aus. Als solches wäre es wohl im C Forum besser aufgehoben, dann würde sich auch keiner über die Header mokieren.



  • otze schrieb:

    langsam wirds mir unheimlich...wieso machen alle neuen dieselben fehler?
    wieso benutzt keiner der neuen die neuen streams, sondern nur printf und konsorten.

    das ist eine verschwörung, ganz sicher.

    was die includes betrifft nehmen oft selbst c++ tutorials/bücher teilweise die c header (ich in der regel auch aus gewohnheit)

    so toll sin die c++ header ja nich
    z.b.

    // cstdio standard header
    
    #if     _MSC_VER > 1000
    #pragma once
    #endif
    
    #ifndef _CSTDIO_
    #define _CSTDIO_
    #ifdef _STD_USING
     #undef _STD_USING
     #include <stdio.h>
     #define _STD_USING
    #else
     #include <stdio.h>
    #endif /* _STD_USING */
    #endif /* _CSTDIO_ */
    


  • randa schrieb:

    MaSTaH schrieb:

    Schau dir doch nur einige Tutorials oder Kursmaterialien an die google ausspuckt.

    hast recht:

    #include <iostream.h>   /* Das ist die Definitionsdatei für Ströme */
    

    http://ladedu.com/cpp/src_html/komm.html
    lol 😃

    Edit: und noch eins, sogar noch besser: 👍

    # include <iostream.h>
    // Library für Ein- und Ausgabefunktionen
    
    void main ( )
    ...
    

    http://www.inf.fu-berlin.de/lehre/kurse/cplusplus/Lektion1.html#HDR0
    🙄

    na ja, der erste link ist von 1996

    der zweite ist von 1994
    http://www.inf.fu-berlin.de/lehre/kurse/

    ich frage jetzt mal nicht, ob ihr eure seiten täglich neu von fehlern befreit, und auch nicht, ob ihr nach euren vor mehr als 10 jahren geschriebenen turorials permanent googlet, weil irgendeiner die alte version runtergeladen hat und auf seine page stellt.

    programmieren lernen kann man trotzdem mit vielen guten tutorials. wir sind ja schließlich erwachsen und denken mit 😉



  • Das Problem an vielen Kursen ist, dass sie immer noch so unterrichtet werden an einigen Unis (zum Glück nicht an meiner 😃 ).



  • Ich kommentier jetzt mal dein Programm, ja (sieht mehr nach c aus -> dafür gibts hier auch ein Forum, ich versuche mich mal an sauberem c++)

    #include <stdio.h>
    #include <process.h>    //Brauchst du nicht
    #include <math.h>       //Wo benutzt du die?
    #include <iostream.h>   /nein!!! iostream!!!!! und using namespace std
    
    void berechnung() { /*Funktion zur berechnung*/    //sinnvoller wäre es, double zurückgeben zu lassen und die Parameter zu erwarten?
    double a=0;
    double x0=0;
    double d=0;
    double x=0;
    
    int c=0;
    do
    {
    x=(0,5*(x0+a/x0));
    
    x=((x-x0)/x0);
    
    printf("Beim ,%d, Durchlauf ist x: ,%f",c,x);    //cout (typsicher
    
    x0=x;
    
    c=(c+1);
    }
    while(x>d);
    };
    
    float main (void)    //int main()
    {
    double a=0;
    double x0=0;
    double d=0;
    double x=0;
    
    int c=0;
    
    char weiter=0;
    
    do
    {
    system("cls");
    printf("Herzlich Willkommen\n");
    printf("Bitte geben Sie nun den Wert fuer X0 ein: ");
    scanf("%lf",x0);
    
    printf("Bitte geben Sie nun den Wert für a ein: ");
    scanf("%lf",a);
    
    printf("Bitte geben Sie nun die zu ereichende Genauigkeit d ein: ");
    scanf("%lf",d);
    
    c=1;
    berechnung();
    
    printf("Die gewünschte Genauigkeit wurde erreicht Das Endergebnis für x ist: ,%f,x");
    
    printf("Möchten Sie dieses Programm nocheinmal benutzen? j/n: ");
    scanf("%c",weiter);
    
    }
    while(weiter=='j');
    printf("Danke dass Sie dieses Programm verwendet haben");
    printf("Auf Wiedersehen");
    return 0;
    };
    

    so würde ich das machen: (mir ist die Berechnung schleierhaft, kommt erst noch in Mathe, denk ich mal...

    #include <iostream>
    
    double berechnung(double a, double x0, double d)
    {
        double x;
        int c=0;
        do
        {
        x=0,5*(x0+a/x0);
    
        x=(x-x0)/x0;
    
        cout<<"Beim "<<c<<". Durchlauf ist x: "<<x<<flush;
    
        x0=x;
    
        c++;
        }
        while(x>d);
    };
    
    int main ()
    {
    double x0,x,a,d;
    int c=0;
    char weiter=0;
    
    do
    {
    system("cls");
    cout<<"Herzlich Willkommen"<<endl;
    cout<<"Bitte geben Sie nun den Wert fuer X0 ein: ";
    cin>>x0;
    
    cout<<"Bitte geben Sie nun den Wert für a ein: ";
    cin>>a;
    
    cout<<"Bitte geben Sie nun die zu ereichende Genauigkeit d ein: ";
    cin>>d;
    
    c=1;
    x=berechnung(a,x0,d);
    
    cout<<"Die gewünschte Genauigkeit wurde erreicht. Das Endergebnis für x ist: "<<x<<endl;
    
    cout<<"Möchten Sie dieses Programm nocheinmal benutzen? j/n: ";
    cin>>c;
    }
    while(weiter=='j');
    cout<<"Danke dass Sie dieses Programm verwendet haben"<<endl;
    cout<<"Auf Wiedersehen";
    return 0;
    };
    

    Bestimmt nicht perfekt, auch hätte es sicher anders gemacht, aber dann wäre ja gar nichts mehr von deinem Quelltext zu erkennen...



  • Sovok schrieb:

    // cstdio standard header
    
    #if     _MSC_VER > 1000
    #pragma once
    #endif
    
    #ifndef _CSTDIO_
    #define _CSTDIO_
    #ifdef _STD_USING
     #undef _STD_USING
     #include <stdio.h>
     #define _STD_USING
    #else
     #include <stdio.h>
    #endif /* _STD_USING */
    #endif /* _CSTDIO_ */
    

    ...was nur zeigt, dass Mickeysoft den Standard nicht begriffen hat. Diese Implementierung ist schlicht und ergreifend falsch, weil die Funktionen aus der stdio.h im Namespace std sein müssen, wenn man cstdio includet. Sinnvoller wäre noch

    namespace std {
    #include <stdio.h>
    }
    

    Aber auch das wäre in den meisten Fällen falsch, weil viele Funktionen der stdio.h in C auch als Makros implementiert sein können. Und die kümmern sich nicht um namespaces.



  • truebool schrieb:

    ich frag mich warum alle als erstes programm inzwischen gleich nen compiler bauen und das gute alte "hello world" aussterben lassen

    hmm hab grad das erste mit dem zweiten verbunden, 200 zeilen code, doch nun steht hello world auf meinem bildschirm :D.



  • @randa: Deine Beispiele bitte mit etwas mehr Sorgfalt wählen:

    Version 2.61 - Sep. 22, 1996
    in Deutscher Übersetzung - 21. April, 14. November 1997, 28. Oktober 2001

    <iostream.h> war damals sehrwohl Standard.

    MfG SideWinder



  • Was is denn daran falsch? Keine lib? oder was meint ihr?
    (bin auch neu, wie ihr sicherlich merkt :p



  • Es ist einfach kein Standard, sondern war mal Standard - allerdings vor knapp 7 Jahren. Seit dem neuen Standard ist es falsch.

    MfG SideWinder


Anmelden zum Antworten