gnu c++ compiler probleme! vorsicht anfänger!

Diskutiere mit über: gnu c++ compiler probleme! vorsicht anfänger! im Mac OS X Entwickler, Programmierer Forum

  1. serubbabel

    serubbabel Thread Starter MacUser Mitglied

    Beiträge:
    261
    Zustimmungen:
    0
    Registriert seit:
    15.07.2003
    Hallo!
    Bin absoluter Anfänger und habe da ein Problem beim compilieren von einnfachen c++ Programmen. Vielleicht kennt sich hier ja einer aus und schaut sich das mal an.
    Also das ist das Prog:
    //mittelwert

    #include <iostream.h>

    int main()
    {
    int n = 0;
    double summe=0;
    double werte[10];

    cout << "Anzahl der Werte = ";
    cin >> n;

    for(int i=0;i < n; i++){
    cout >> "Wert" << i << " = ";
    cin >> werte [n];
    }

    for(int j=0;j<n; j++){
    summe=summe+werte[j];
    }

    cout << "Summe = " << summe << "\n";
    cout << "Mittelwert = " << summe/n;
    cin >> "";

    }

    und dies die Fehkermeldung vom compiler:

    Kai-s-Computer:~/documents/c++ Kai$ g++ mittelwert.cpp
    mittelwert.cpp: In function `int main()':
    mittelwert.cpp:16: error: no match for `std::ostream& >> const char[5]'
    operator
    mittelwert.cpp:26: error: ambiguous overload for `std::istream& >> const
    char[1]' operator
    /usr/include/gcc/darwin/3.3/c++/istream:695: error: candidates are:
    std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char,
    _Traits>&, signed char*) [with _Traits = std::char_traits<char>] <near
    match>
    /usr/include/gcc/darwin/3.3/c++/istream:690: error:
    std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char,
    _Traits>&, unsigned char*) [with _Traits = std::char_traits<char>] <near
    match>

    Vielen Dankl schon mal!
     
  2. Supersonic

    Supersonic MacUser Mitglied

    Beiträge:
    1.068
    Zustimmungen:
    10
    Registriert seit:
    26.07.2003
    Den Fehler mit in main () bekomme ich auch. Es hilft, mal ein bisschen mit int, main usw. rumzuspielen (inkl. return 0). Sorry, wenn ich was falsches erzähle, aber bei mir klappt es dann irgendwann.


    Aber an einer richtigen Lösung wäre ich auch interessier.
     
  3. Munuel

    Munuel MacUser Mitglied

    Beiträge:
    298
    Zustimmungen:
    2
    Registriert seit:
    26.03.2003
    Der Fehler müsste hier liegen:
    for(int i=0;i < n; i++){
    cout >> "Wert" << i << " = ";
    cin >> werte [n];
    }

    Bei diesem Stream sind die Richtungen gegenläufig. Kanns jetzt nicht überprüfen aber nimm lieber 2 Zeilen (ich weiß Programierer sind faul ;-).
    Und bist du dir Sicher dass du "werte[n]" meinst und nicht "werte"?
     
  4. Munuel

    Munuel MacUser Mitglied

    Beiträge:
    298
    Zustimmungen:
    2
    Registriert seit:
    26.03.2003
    Ach ja, probier doch erst noch folgendes aus:

    int main(int argc, char *argv[])
     
  5. serubbabel

    serubbabel Thread Starter MacUser Mitglied

    Beiträge:
    261
    Zustimmungen:
    0
    Registriert seit:
    15.07.2003
    hast recht mit dem fehler aber das ist nicht das eigentliche problem!
    selbst wenn der quellcode stimmt will er nicht compilieren!
    das sagt er jetzt:

    mittelwert.cpp: In function `int main()':
    mittelwert.cpp:26: error: ambiguous overload for `std::istream& >> const
    char[1]' operator
    /usr/include/gcc/darwin/3.3/c++/istream:695: error: candidates are:
    std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char,
    _Traits>&, signed char*) [with _Traits = std::char_traits<char>] <near
    match>
    /usr/include/gcc/darwin/3.3/c++/istream:690: error:
    std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char,
    _Traits>&, unsigned char*) [with _Traits = std::char_traits<char>] <near
    match>
     
  6. serubbabel

    serubbabel Thread Starter MacUser Mitglied

    Beiträge:
    261
    Zustimmungen:
    0
    Registriert seit:
    15.07.2003
    ne, will er auch nicht!
    ich weis das es schon mal funktionierte!
     
  7. below

    below MacUser Mitglied

    Beiträge:
    13.882
    Zustimmungen:
    1.086
    Registriert seit:
    15.03.2004
    Hallo

    erstens:

    for(int i=0;i < n; i++){
    cout >> "Wert" << i << " = ";
    mittelwert.cpp:16: error: no match for `std::ostream& >> const char[5]'
    operator

    cout ist ein OUTPUT Stream, der weis natürlich nicht, was er mit >> anfangen soll. Besser:

    cout <<"Wert" << i << " = ";

    zweitens:

    cin >> "";
    mittelwert.cpp:26: error: ambiguous overload for `std::istream& >> const
    char[1]' operator

    Da bin ich genauso überfragt, wie der Compiler. Meinst Du vielleicht:

    cout << "";

    Denn den Wert des Input Streams cin kannst Du nicht in einen konstanten String lesen, nur in eine Variable.

    Hilft das?

    Gruss,

    Below
     
  8. serubbabel

    serubbabel Thread Starter MacUser Mitglied

    Beiträge:
    261
    Zustimmungen:
    0
    Registriert seit:
    15.07.2003
    den ersten fehler habe ich schon korigiert, ohne erfolg!
    zum cin>> ""; es ist nur dafür da damit die ausgabe nicht direct beendet wird!
     
  9. Rakor

    Rakor MacUser Mitglied

    Beiträge:
    2.785
    Zustimmungen:
    3
    Registriert seit:
    05.11.2003
    Dieser Code compiliert bei mir:

    #include <iostream>
    using namespace std;

    int main()
    {
    int n = 0;
    double summe=0;
    double werte[10];

    cout << "Anzahl der Werte = ";
    cin >> n;

    for(int i=0;i < n; i++){
    cout << "Wert" << i << " = ";
    cin >> werte [n];

    return 0;
    }

    for(int j=0;j<n; j++){
    summe=summe+werte[j];
    }

    cout << "Summe = " << summe << "\n";
    cout << "Mittelwert = " << summe/n;
    //cin >> ""; /* Das macht so keinen Sinn!!*/

    }


    In C++ solltest du bei Standardlis in der Include-Zeile das .h weglassen. Informiere dich mal über nacmespaces. Die solltest du verwenden. Ich benutze sie auch nicht wirklich, aber aus Gründen der kompartibilität solltest du zumindest den std-namespace setzen.

    cout ist ein ausgabestrom und kann nur << enthalten. Alles andere macht keinen Sinn.
    cin braucht was wo der eingabestrom hin soll. Du kannst das nicht an "" Leiten. Das macht kein Sinn.
     
  10. janosch

    janosch MacUser Mitglied

    Beiträge:
    1.298
    Zustimmungen:
    6
    Registriert seit:
    24.10.2003
    moin !

    Setze mal unter die include anweisung folgendes:


    #include <iostream>
    using namespace std;

    mfg janosch
     
Die Seite wird geladen...
Ähnliche Themen - gnu c++ compiler Forum Datum
Suche einfache IDE für C Mac OS X Entwickler, Programmierer 13.08.2016
C++ Programm von Windows zu Mac? Mac OS X Entwickler, Programmierer 05.05.2016
Buchtip für C++ Mac OS X Entwickler, Programmierer 13.10.2015
C: Array in Funktionsprototyp Mac OS X Entwickler, Programmierer 26.08.2015
GNU Build-Umgebung auf PPC umstellen? Mac OS X Entwickler, Programmierer 15.04.2010

Diese Seite empfehlen

Benutzerdefinierte Suche