Absoluter Neuling möchte C ++ lernen...



  • Probier mal folgendes aus:

    1.Programm:

    #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    int main()
    {
      const double PI = 3.14159265;
      double C, L, f;
      cout << "Kapazitaet in MikroFarad: ";
      cin  >> C;
      cout << "Induktivitaet in MilliHenry: ";
      cin  >> L;
    
      f = 1 / ( 2 * PI * sqrt(L/1e3 * C/1e6) );
    
      cout << "Frequenz: " << f << " Hz" << endl;
    }
    

    2.Programm:

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main()
    {
      int     jahre, monate;
      double  zinssatz, zins, tilgung, kapital, monatsrate, 
              zinssumme=0, tilgungsumme=0;
    
      cout << "Kapital:    "   ; cin >> kapital;
      cout << "Zinssatz:   "   ; cin >> zinssatz;
      cout << "Jahre:      "   ; cin >> jahre;
      cout << "Monatsrate: "   ; cin >> monatsrate;
      cout << endl;
    
      monate = 12 * jahre;
    
      cout << setw(10) << " "       << setw(18) << "Zins" 
           << setw(16) << "Tilgung" << setw(16) << "Kapital" << endl << endl;  
    
      for(int i=1; i<=monate; ++i)
      {
        zins       = kapital * zinssatz/1200.0; // monatlicher Zins
        tilgung    = monatsrate - zins;
        kapital    = kapital - tilgung;
    
        cout.setf(ios::fixed,ios::floatfield); // Formatierung
        if((zins >= 0) && ((kapital + monatsrate) > 0) )
        {
            cout << setw( 4) << i <<". Monat: "
                 << setw(15) << setprecision(2) << zins    << ' ';
    
          if(kapital >=0)
          {
            cout << setw(15) << setprecision(2) << tilgung 
                 << setw(16) << setprecision(2) << kapital << endl;
            tilgungsumme += tilgung;
            zinssumme    += zins;
          }
          else
          {
            tilgung +=kapital;
            kapital  = 0; 
            cout << setw(15) << setprecision(2) << tilgung 
                 << setw(16) << setprecision(2) << kapital << endl;
            tilgungsumme += tilgung;
            zinssumme    += zins;
          }
        }
      }
      cout << setw(12) << endl << "Summe:"
           << setw(16) << setprecision(2) << zinssumme    << ' '
           << setw(15) << setprecision(2) << tilgungsumme << endl; 
    }
    


  • Warning : file does not end in newline
    ausfuehrbar.cpp line 20 }
    Error : /boot/home/TestC/test/ausfuehrbar.cpp: In function int main()': parse error before3.14159265358979323846'
    ausfuehrbar.cpp line 10 const double PI =3.14159265;

    Das ist der erste Error bei dem ersten Programm

    Der zweite

    Warning : file does not end in newline
    ausfuehrbar.cpp line 20 }

    Bei dem zweiten Programm

    Warning : file does not end in newline
    ausfuehrbar.cpp line 56 }

    Es funktioniert aber trotzdem....



  • Was nun ? was hat das zu bedeuten ?



  • Das mit dem "Warning : file does not end in newline" kannst du durch eine neue zeile am Ende des Programms(also nach der letzten schließenden }-Klammer) beheben.



  • Naja, immerhin kannst du schon kompilieren und linken. warnings sind auch keine errors! 😉 Geht doch.

    Jetzt mal das:

    #include <iostream>
    #include <vector>
    using namespace std;
    
    class Lampe
    {   
        private:
            int helligkeit_;
    
        public:
            Lampe() : helligkeit_(0){}
    
            void dimmen(int wert)
            {
                helligkeit_ = wert;
            }
    
            bool getEin() const {return getHelligkeit();}
            int  getHelligkeit() const {return helligkeit_;}
    };
    
    class Schalter
    {   
        private:
            bool ein_;
    
        public:
            Schalter() : ein_(false){}    
            void schalten()    
            {
                ein_ = !ein_;
            }
            bool getEin() const {return ein_;}  
    };
    
    class Beleuchtung
    {
        private:
            vector<Schalter> v_;
            Lampe l_;
    
        public:
            Beleuchtung( vector<Schalter> v, Lampe l ) : v_(v),l_(l){}
    
            void schalten(int i)
            {
                v_[i].schalten();
                if( 
                    (  v_[0].getEin() &&  v_[1].getEin() &&  v_[2].getEin() )   ||
                    (  v_[0].getEin() && !v_[1].getEin() && !v_[2].getEin() )   ||
                    ( !v_[0].getEin() &&  v_[1].getEin() && !v_[2].getEin() )   ||
                    ( !v_[0].getEin() && !v_[1].getEin() &&  v_[2].getEin() )   
                  )
                    l_.dimmen(100);
                else 
                    l_.dimmen(0);
            }
    
            void status() const
            {
                cout << "S1: "   << (v_[0].getEin()?"an ":"aus") << "  " 
                     << "S2: "   << (v_[1].getEin()?"gerade  ":"gekreuzt") << "  "
                     << "S3: "   << (v_[2].getEin()?"an ":"aus") << "  " 
                     << "Lampe: "      << (l_.getEin()?"an ":"aus") << " "
                     << "Helligkeit: " << l_.getHelligkeit() << endl;      
            }    
    };    
    
    int main()
    {
        Lampe l1;
        Schalter s1,s2,s3;
        vector<Schalter> v;
        v.push_back(s1);
        v.push_back(s2); 
        v.push_back(s3); 
        Beleuchtung b1(v,l1);
        for(int i=0; i<3; ++i)
        {
            b1.schalten(0);
            b1.status();
            b1.schalten(1);
            b1.status();
            b1.schalten(2);
            b1.status();
        }    
    }
    

    vector ist eine Klasse der STL.



  • DAs funktioniert auch herrvorragend, auch wenn ich wieder nicht weiß was das Programm macht oder wie es funktioniert.. 😞
    Ich habe da mal ne Frage was haltet ihr von den beiden folgendes Büchern, wenn ich mir die kaufe auch in bezug auf die Programmierung die ich nacher anstrebe unter Zeta ?

    http://www.amazon.de/exec/obidos/ASIN/3826629841/qid=1091614277/sr=2-3/ref=sr_2_0_3/028-2171445-1055752

    http://www.amazon.de/exec/obidos/ASIN/3826629841/qid=1091614277/sr=2-3/ref=sr_2_0_3/028-2171445-1055752



  • Meinte noch als zweites Buch folgendes:

    http://www.amazon.de/exec/obidos/ASIN/382663117X/qid=1091715816/sr=1-1/ref=sr_1_10_1/028-2171445-1055752

    Komischerweise waren oben zweimal die selben links...

    Also was meint ihr ?



  • AlternativEnde schrieb:

    Also was meint ihr ?

    Wenn du wie gesagt ein absoluter Anfänger bist, solltes du OOP für Dummies imho erstmal meiden, weil dort gleich, wie der Titel des Buches schon aussagt ;), mit OO-Konzepten loslegt wie Konstruktor, Vererbung, etc.
    Das Buch ist locker geschrieben und ist später für dich besser geeignet.
    Mehr dazu: http://www.c-plusplus.net/titelanzeige.php?ISBN=3826629841
    Das zweite Buch von dir genannt, habe ich nicht gelesen, daher kann ich keine Meindung dazu sagen.
    Mein Vorschlag ist: http://www.amazon.de/exec/obidos/ASIN/3826608240/marcbackccecke
    Erst wird die prozedurale Programmierung beschrieben, danach geht es dann mit OOP los.
    Leider wird die STL nur angeschnitten, das letze Kapitel befasst sich mit Container, was für dich aber noch unwichtig ist.



  • Ok werde weiter schauen und erstmal noch ein bisschen mit den online Sachen lernen.
    Ich habe nämlich ein kleines Problem mit meinem BeIDE undzwar folgendes
    Wenn ich diesen Code aus dem Beispiel

    #include <iostream.h>
    int // <-- da mit void dann kommt folgender Fehler * main()
    {
    float radius;
    float hoehe;
    cout<<"Bitte geben Sie den Radius ein: " ;
    cin>>radius;
    cout<<"Bitte geben Sie die Höhe ein: " ;
    cin>>hoehe;
    const float PI=3.14f;
    float grundflaeche=PI*radius*radius;
    float volumen=(grundflaeche*hoehe)/ 3;
    cout<<"Das Volumen betraegt: "<<volumen<<endl;
    };

    Error : return type for `main' changed to `int'
    volumenkegel.cpp line 3 {

    Was ist das wo meint das Programm nen Fehler zu sehen ?
    Für den Rest bin ich nun zu müde um das zu erfahren, denn da sind noch ein paar Sachen in dem Programm die in dem Tutorial leider nicht erklärt sind..

    Vielen DANK !



  • Hallo,

    Was ist das wo meint das Programm nen Fehler zu sehen ?

    Du hast die Stelle doch selber gekennzeichnet und die Meldung sagt eigentlich auch schon alles aus.

    void main() // falsch
    int main() // richtig
    


  • Aha super 🙂
    Dann ist die Frage, ob es an dem Programm liegt ja geklärt 🙂
    Wunderschön.. Bisher macht mir C++ echt Spaß und es ist super zu sehen wie die PRogramme laufen und ich dazu lerne



  • So habe nun herausgefunden welcher Compiler da verwendet wird..
    Foglendes Zitat aus der Manual

    "GCC is the name of
    the gnu C++
    compiler. This free
    compiler is frequently
    used on machines running the
    UNIX operating system"

    Gut ? oder schlecht ? Außerdem taten sich bei mir irgendwie noch ein paar Fragen auf..

    1. Ein Compiler macht doch eigentlich nichts anderes, als das was ich in "verständlicher" Schrift geschrieben habe in ASCII Codes umzuwandeln und diese dann in Formen von 0 und 1 an den Prozessor weiterzugeben oder ?

    2. Kann man mit C++ alles Programmieren ? Das wurde ich letztens in der Firma gefragt und ehrlich gesagt wusste ich es nicht.. Kann man Spiele zu programmieren ? Eione Ki erschaffen ? Es ist schon klar das ich mit C++ keine Internetseiten schaffen kann, weil es einfach aus dem Grundstock Html, PHP, MYSQl besteht, aber wie ist das generell ? Ist alles möglich wenn man weiß wie ?

    Viele Grüße !



  • "Man kann alles, wenn man kann..." 🙄

    Der Compiler gibt dem Prozessor gar nix, weil der Compiler zur Laufzeit gar nicht mehr vorhanden sein sollte. Ansonsten redest du vielleicht noch von einem Interpreter ! Der Compiler selbst wandelt deinen Code nicht bewusst in ASCII-Code um, sondern einfach in einen Byte-Strom, den man als ASCII-Versammlung interpretieren kann.

    mfg h4xX0r



  • AlternativEnde schrieb:

    1. Ein Compiler macht doch eigentlich nichts anderes, als das was ich in "verständlicher" Schrift geschrieben habe in ASCII Codes umzuwandeln und diese dann in Formen von 0 und 1 an den Prozessor weiterzugeben oder ?

    Prinzipiell ist ein Compiler nur ein Übersetzer, der einen Quelltext in eine Zielsprache transformiert.
    Dein C++ Compiler im speziellen wandelt deinen in ASCII-Text verfassten Sourcecode um in nativen Maschinencode, der dann von der CPU ausgeführt werden kann. Letztlich besteht übrigens auch dein ASCII-Quelltext nur aus 0er und 1er.

    2. Kann man mit C++ alles Programmieren ? Das wurde ich letztens in der Firma gefragt und ehrlich gesagt wusste ich es nicht.. Kann man Spiele zu programmieren ? Eione Ki erschaffen ? Es ist schon klar das ich mit C++ keine Internetseiten schaffen kann, weil es einfach aus dem Grundstock Html, PHP, MYSQl besteht, aber wie ist das generell ? Ist alles möglich wenn man weiß wie ?

    Mit reinem Standard C++ sind deine Möglichkeiten stark begrenzt. Mit C++ und entsprechenden Libs kannst du allerdings alles programmieren.
    Anmerkung: Eine Internetseite besteht (vereinfacht gesagt, jetzt mal ohne Betrachtung von XHTML, Clientside-Scripts etc) immer nur aus HTML (kein PHP oder MySQL). Allerdings kannst du mit der Sprache, für die es eine CGI Umgebung gibt (gilt natürlich auch für C++) dynamisch HTML generieren.



  • Oh Man... C++ ist echt ganz schön kompliziert.. Die richtigen probleme werden, aber erst dann auftreten, wenn ich mit meinem tutorial fertig bin und ich diese Beos API lernen muss... Gui Designen ist bestimmt auch schwer...



  • Naja, wenn du mit dem Tutorial fertig bist, solltest du erst mal ein paar Projekte nur mit Comsole realisieren. Danach kannst du dich ja mal in der BeOS API versuchen, allerdings musst du auch wissen, dass du auch mit dem Erlernen von reinem C++ an dieser Stelle noch längst nicht fertig bist.


Anmelden zum Antworten