Baktereinzähler - brauche dringend hilfe



  • Nene, ist schon richtig. ich hatte da nämlich eine wichtige datei die schon main.cpp hieß, und die wollte ich natürlich nicht überschreiben, da habe ich einfach den neueren namen geändert.

    werner@linux:~> cd /home/werner
    werner@linux:~> g++ maino.cpp -o maino.exe
    werner@linux:~> ./maino.exe
    hkuwerner@linux:~>



  • Oder soll ich das lieber in Linux/Unix forum posten? Hier sind es ja schon mittlerweile 5 seiten 🙂



  • Ich habe es nochmal mit gcc anstadt g++ probiert. das kam raus:

    werner@linux:~> gcc maino.cpp -o maino.exe
    maino.cpp:13:2: warning: no newline at end of file
    /tmp/ccNvALVG.o(.text+0x24): In function `main':
    maino.cpp: undefined reference to `std::cin'
    /tmp/ccNvALVG.o(.text+0x29):maino.cpp: undefined reference to `std::basic_istream<char, std::char_traits<char> >::operator>>(int&)'
    /tmp/ccNvALVG.o(.text+0x60):maino.cpp: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
    /tmp/ccNvALVG.o(.text+0xb7):maino.cpp: undefined reference to `std::cout'
    /tmp/ccNvALVG.o(.text+0xbc):maino.cpp: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
    /tmp/ccNvALVG.o(.text+0xc5):maino.cpp: undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(int)'
    /tmp/ccNvALVG.o(.text+0xce):maino.cpp: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
    /tmp/ccNvALVG.o(.text+0xd7):maino.cpp: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::_Setprecision)'
    /tmp/ccNvALVG.o(.text+0xe0):maino.cpp: undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(std::ios_base& (*)(std::ios_base&))'
    /tmp/ccNvALVG.o(.text+0xe9):maino.cpp: undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(long double)'
    /tmp/ccNvALVG.o(.text+0xf2):maino.cpp: undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))'
    /tmp/ccNvALVG.o(.text+0x128): In function `__static_initialization_and_destruction_0(int, int)':
    maino.cpp: undefined reference to `std::ios_base::Init::Init[in-charge]()'
    /tmp/ccNvALVG.o(.text+0x157): In function `__tcf_0':
    maino.cpp: undefined reference to `std::ios_base::Init::~Init [in-charge]()'
    /tmp/ccNvALVG.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
    collect2: ld returned 1 exit status
    werner@linux:~> ./maino.exe
    bash: ./maino.exe: Datei oder Verzeichnis nicht gefunden
    werner@linux:~>
    


  • poroblem schrieb:

    Nene, ist schon richtig. ich hatte da nämlich eine wichtige datei die schon main.cpp hieß, und die wollte ich natürlich nicht überschreiben, da habe ich einfach den neueren namen geändert.

    werner@linux:~> cd /home/werner
    werner@linux:~> g++ maino.cpp -o maino.exe
    werner@linux:~> ./maino.exe
    hkuwerner@linux:~>

    ja das passt schon. und "g++" war richtig. "gcc" ist _nicht_ das, was du willst. und "hku" ist die ausgabe deines programms. was genau hast du nochmal kompiliert? (inhalt von maino.cpp) ???



  • ja, maino.cpp hieß die datei und hier ist der code:

    #include <iostream>
    #include <iomanip>
    
    int main ()
    {
        int x;
        std::cin >> x;
        long double res = 1;
        for (int i = 1 /* statt 0 */; i <= x; ++i)
            std::cout << "2^" << i << " = " << std::setprecision (0) << std::fixed
                      << (res *= 2) << std::endl;
        return 0;
    }
    


  • Es berechnet nur die population von bakterien.
    Wenn es keiner von euch weiß, setzte ich es ins unix linux forum. Dort habe ich ja eine höchere chance auf eine antwort, da dort alle mit linux arbeiten



  • Wenn es keiner von euch weiß, setzte ich es ins unix linux forum. Dort habe ich ja eine höchere chance auf eine antwort, da dort alle mit linux arbeiten

    Just do it - tue es einfach.





  • Da bekomme ich ja weniger antworten als hier 🙂



  • das programm geht. kompiliers unter windows, wenn linux probleme macht.



  • Danke an euch alle, die mir geholfen haben. Es klappt jetzt unter Linux. Schuld war meine (oder eure??) dummheit.

    Ich habe mir jetzt ein c++ buch geben lassen. Es soll zwar nicht so gut sein, aber dafür war es kostenlos. "Jetzt lerne ich ... Spieleprogrammierung mit DirektX und VisualC++" vom MUT verlag. Ok, spiele will ich nicht programmieren, DirektX will ich auch nicht können, sondern OpenGL (aber auch nur für softwareprogrammierung dn_ppsmilie11.gif). Aber die grundlagen sind gut erklärt und ich habe was zu lesen.

    Da ich nicht weiß wie groß der Sprachumfang von C++ ist, habe ich hier mal eine Liste von den sachen die ich 90%=< kann.

    - Ein und Ausgabe von Daten (cout - printf; cin - scanf)
    - Variablen und Konstanten
    - Alle arten von Operatoren, Schleifen und Fallunterschieden.
    - Text-,Binärdateien.
    - Funktionen (kann ich so halb ... immer wenn ich ein code sehe, weiß ich wie es funktioniert, aber ich kann keine selber schreiben)
    - Zeiger (muss mich damit wohl auch noch eine Weile beschäftigen)

    Was gehört den noch so zum sprachumfang von C++ ??

    Ich habe noch 2 Bücher gefunden, die mir sehr gut gefallen.
    http://www.c-plusplus.net/cms/modules.php?op=modload&name=mbBooks&file=index&func=isbn&isbn=3826629841
    http://www.c-plusplus.net/cms/modules.php?op=modload&name=mbBooks&file=index&func=isbn&isbn=3446224270

    Was haltet ihr von dennen (das erste buch, find ich, am interessantesteren ... blä :D).



  • .filmor schrieb:

    Was zum...?!

    So sieht die Ausgabe für meinen Code aus:

    [...]
    2^56 = 144115188075855870
    2^57 = 288230376151711740
    2^58 = 576460752303423490
    2^59 = 1152921504606847000
    2^60 = 2305843009213694000
    2^61 = 4611686018427387900
    2^62 = 9223372036854775800
    2^63 = 18446744073709552000
    

    Und diese Zahlen sind sowas von dezimal!

    ... und offensichtlich falsch. Jedenfalls diese letzten paar.



  • Dürfte ich den Sinn dieses Beitrags hinterfragen? Das ist bereits geklärt, die Schleife hatte versehentlich bei 0 angefangen, weshalb alles um eins verschoben ist, im korrigierten Code ist das nicht mehr der Fall. Die 0-en am Ende kommen von der Ungenauigkeit von long double. Noch was auszusetzen?



  • Tatsache war aber, dass in Windoof die 2^57 = ***** falsch war, den sie hörte mit 0 auf, obwohl eine zahl darüber sie mit 6 aufhörte (und 2 mal 6 sind nicht 0). Das liegt auch daran, weil double nur 17 zeichen fassen kann (habe ich in meinem Spieleprogrammier-buch gelesen). Warum das unter linux nicht passiert ist mir ein rätsel.

    Was haltet ihr von den büchern?



  • poroblem schrieb:

    Danke an euch alle, die mir geholfen haben. Es klappt jetzt unter Linux. Schuld war meine (oder eure??) dummheit.

    definitiv deine. ganz sicher.

    was war denn eigentlich der (letzte) fehler?


Anmelden zum Antworten