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

serubbabel

serubbabel

Aktives Mitglied
Thread Starter
Dabei seit
15.07.2003
Beiträge
268
Reaktionspunkte
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::eek:stream& >> 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::eek:perator>>(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::eek:perator>>(std::basic_istream<char,
_Traits>&, unsigned char*) [with _Traits = std::char_traits<char>] <near
match>

Vielen Dankl schon mal!
 
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.
 
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"?
 
Ach ja, probier doch erst noch folgendes aus:

int main(int argc, char *argv[])
 
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::eek:perator>>(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::eek:perator>>(std::basic_istream<char,
_Traits>&, unsigned char*) [with _Traits = std::char_traits<char>] <near
match>
 
ne, will er auch nicht!
ich weis das es schon mal funktionierte!
 
Hallo

erstens:

for(int i=0;i < n; i++){
cout >> "Wert" << i << " = ";
mittelwert.cpp:16: error: no match for `std::eek:stream& >> 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
 
den ersten fehler habe ich schon korigiert, ohne erfolg!
zum cin>> ""; es ist nur dafür da damit die ausgabe nicht direct beendet wird!
 
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.
 
moin !

Setze mal unter die include anweisung folgendes:


#include <iostream>
using namespace std;

mfg janosch
 
@Rakor

Da warst du woll schneller wie ich :D

mfg janosch
 
yo klappt! ihr seid echt super!
Besten Dank
 
Hubs... Da ist mir das return 0 an die falsche stelle gerutscht.. ;) Du weisst ja aber wie es gemeint ist. ;) So ist es wenn man einfach ein Blockende sucht aber nicht drauf achtet ob es das richtige ist.. :D
 
habe mich schon gewundert! Danke!
 
Zurück
Oben Unten