Neuling braucht dringend Hilfe



  • Hallo allerseits.

    Erstmal zur Erklärung:

    Ich habe mir für mein Studium zum Teil Java selbst beigebracht, weil ich dachte es dafür zu brauchen. Nun heißt es plötzlich wir müssen schon C++ können. Und bis morgen muss ich eine Programmieraufgabe gelöst haben.
    Mir geht es erstmal nur darum den Linker error wegzukriegen, wie gesagt bin Java-Umsteiger und habe keine Ahnung von sowas:

    # include <iostream>

    using namespace std;

    void quintary(int i);

    main()
    {
    int Zahl;
    int Zahl2;

    cout << "Geben Sie eine Dezimalzahl ein: " << endl;
    cin >> Zahl;
    quintary ( Zahl );
    {
    while ( Zahl != 0 )
    {
    Zahl = Zahl % 5 ;
    Zahl2 = Zahl2 / 5 ;
    return Zahl;

    }
    }

    cin.get();
    cin.get();
    }

    Hab natürlich auch gegooglet, aber nichts gefunden was mir hilft. Hoffe auf schnelle Antwort und danke schonmal.



  • Du kannst keine Funktion aufrufen, die nur deklariert aber noch nicht definiert wurde.

    MfG



  • Was wäre z.B. eine Definition dieser Funktion?



  • kojo schrieb:

    Was wäre z.B. eine Definition dieser Funktion?

    Naja - das, was die Funktion eben tun soll! (auch "Implementation"/"Implementierung" genannt)
    Das ist in Java aber auch nicht anders.

    BTW: Bitte "C/C++"-Tags verwenden (siehe Button) - schont unsere Augen und verbessert die Antworten, die Du bekommst.

    Gruß,

    Simon2.



  • kojo schrieb:

    Hallo allerseits.

    Erstmal zur Erklärung:

    Ich habe mir für mein Studium zum Teil Java selbst beigebracht, weil ich dachte es dafür zu brauchen. Nun heißt es plötzlich wir müssen schon C++ können. Und bis morgen muss ich eine Programmieraufgabe gelöst haben.
    Mir geht es erstmal nur darum den Linker error wegzukriegen,
    Wäre gut wenn du den Fehler mal posten würdest (für die Zukunft)
    wie gesagt bin Java-Umsteiger und habe keine Ahnung von sowas:

    # include <iostream>
    
    using namespace std;
    
    void quintary(int i);
    
    main()
    {
       int Zahl;
       int Zahl2;
       
       cout << "Geben Sie eine Dezimalzahl ein: " << endl;
       cin >> Zahl;
       quintary ( Zahl );
       
       while ( Zahl != 0 ){
           Zahl = Zahl % 5 ;
           Zahl2 = Zahl2 / 5 ;    
           return Zahl;
             
                 
       }                   
       
      
       
       cin.get();
       cin.get();
    }
    

    Hab natürlich auch gegooglet, aber nichts gefunden was mir hilft. Hoffe auf schnelle Antwort und danke schonmal.

    Was soll dein Programm denn überhaupt machen?
    Den FktKopf anzuschreiben nennt man Deklaration

    void quintary(int i);
    

    Diese Fkt muss dann aber auch definiert werden: (z.B.: )

    void quintary(int i){
        int z=i+1;
    }
    

    Weiter ist das return in deiner Main Fkt total unnütz weil das Programm an der Stelle beendet wird
    Zahl2 wird allerdings nie definiert.
    Eigentlich ist so ziemlich alles an dem Programm sinnlos.
    Daher: Schau dir ein paar Tutorials an.



  • # include <iostream>
    
    using namespace std;
    
    void quintary(int i);
    
    main()
    {
           int Zahl
    
           cin >> Zahl;
           quintary(Zahl);
    }
    

    Ist vorgegeben als Rahmen, meine Frage ist jetzt WO genau ich die Funktion definieren muss? Es gibt zwar viele Parallelen zu Java ( was ich mir jedoch auch nicht vollständig beibringen konnte, mehr so das Grundgerüst ).
    Ein konkretes Beispiel für eine Definition in diesem Rahmen würde mir schon sehr helfen und ich würde aufhören euch zu nerven 😉



  • Danke, das Programm soll eine Dezimalzahl einlesen und als Zahl zur Basis 5 wiedergeben, ohne sich selbst immer wieder aufzurufen. Das mit den Tutorials habe ich vor, aber da ich diese Aufgabe schon morgen abgeben muss, muss ich mich da so irgendwie durchwurschteln.



  • kojo schrieb:

    # include <iostream>
    
    using namespace std;
    
    int quintary(int i){
    /*
    
    HIER KOMMT DEIN CODE HIN
    BAU HIER DEINE AUFGABE EIN
    
    */
      return ergebnis;
    }
    
    int main(int argc, char** argv)
    {
           int Zahl;
           cin >> Zahl;
           Zahl=quintary(Zahl);
           cout <<Zahl<<endl;
    }
    


  • Danke, Danke!

    Ein letztes Mal belästige ich euch noch:

    # include <iostream>
    
    using namespace std;
    
    int quintary(int i){ 
         int gaus = i; 
         int ziffer = i;
         int rest;
         int zahl2;
    
         while ( gaus != 0 )
         {
    
         zahl2 = gaus / 5;  
         rest = gaus % 5;
         cout << rest ;
    
         gaus = zahl2;
         }
    
    }     
    int main()
    {
    
       int Zahl;
       cin >> Zahl;
       Zahl = quintary(Zahl); 
    
       cin.get();
       cin.get();
    }
    

    Das Programm tut das was es soll, NUR, gibt es das ergebnis dann in der falschen Reihenfolge aus. Wie kann ich dem Programm sagen, dass es die erste Ziffer die es bei quintary ausrechnet als letztes schreiben soll, und die zweite als vorletztes, usw. ?



  • Du könntest es in einem std::vector zwischenspeichern und dann über einen reverse_iterator rauskopieren

    std::vector<int> result;
    
        while ( gaus != 0 ) {
    
            zahl2 = gaus / 5;  
            rest = gaus % 5;
            result.push_back(rest);
    
            gaus = zahl2;
        }
    
        std::copy(result.rbegin(), result.rend(), ostream_iterator<int>(cout));
    

Log in to reply