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

  1. serubbabel

    serubbabel Thread StarterMacUser Mitglied

    Mitglied seit:
    15.07.2003
    Beiträge:
    261
    Zustimmungen:
    0
    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!
     
    serubbabel, 17.03.2004
  2. Supersonic

    SupersonicMacUser Mitglied

    Mitglied seit:
    26.07.2003
    Beiträge:
    1.072
    Zustimmungen:
    10
    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.
     
    Supersonic, 17.03.2004
  3. Munuel

    MunuelMacUser Mitglied

    Mitglied seit:
    26.03.2003
    Beiträge:
    298
    Zustimmungen:
    2
    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"?
     
    Munuel, 17.03.2004
  4. Munuel

    MunuelMacUser Mitglied

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

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

    serubbabel Thread StarterMacUser Mitglied

    Mitglied seit:
    15.07.2003
    Beiträge:
    261
    Zustimmungen:
    0
    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>
     
    serubbabel, 17.03.2004
  6. serubbabel

    serubbabel Thread StarterMacUser Mitglied

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

    belowMacUser Mitglied

    Mitglied seit:
    15.03.2004
    Beiträge:
    13.289
    Zustimmungen:
    1.086
    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
     
    below, 17.03.2004
  8. serubbabel

    serubbabel Thread StarterMacUser Mitglied

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

    RakorMacUser Mitglied

    Mitglied seit:
    05.11.2003
    Beiträge:
    2.785
    Zustimmungen:
    3
    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.
     
    Rakor, 17.03.2004
  10. janosch

    janoschMacUser Mitglied

    Mitglied seit:
    24.10.2003
    Beiträge:
    1.305
    Zustimmungen:
    6
    moin !

    Setze mal unter die include anweisung folgendes:


    #include <iostream>
    using namespace std;

    mfg janosch
     
    janosch, 17.03.2004
Die Seite wird geladen...
Ähnliche Themen - gnu c++ compiler
  1. Wolfseye
    Antworten:
    16
    Aufrufe:
    308
  2. GeFa
    Antworten:
    9
    Aufrufe:
    601
    Gondomir
    15.08.2016
  3. Saloice
    Antworten:
    4
    Aufrufe:
    577
  4. ZoliTeglas
    Antworten:
    5
    Aufrufe:
    384
    mrthomasd
    13.10.2015
  5. nnd
    Antworten:
    32
    Aufrufe:
    1.820