Forum: PC-Programmierung C++ Anfänger problem


von Krabs (Gast)


Lesenswert?

Huhu
ich habe ein kleines Problem bei einem (vermutlich) relativ simplen C++ 
Programm.

# include <iostream>
# include <stdio.h>
# include <math.h>

using namespace std;

int main ()
{
  system ("PAUSE");
  double x;
  double y;






  cout << "Bitte Radikant eingeben: " << endl;
  cin >> x;
  do
  {
    y=x-0.000001;
    while ( (y*y-x)/x >= 0.000001);
  }



  cout << "Wurzel: " << (0.5*(sqrt(y)+(x/(sqrt(y))))) << endl;



  system ("PAUSE");









  return 0;
}



Fehlermeldung:
error C2061: Syntaxfehler: Bezeichner 'cout'


Ich weiß wirklich nicht was das Programm damit meint ...
und meine do while schleife funktioniert auch nicht -.-
wäre echt nett wenn mir hier jemand weiter helfen kann
vielen dank schonmal

von Rolf Magnus (Gast)


Lesenswert?

Krabs schrieb:
> Fehlermeldung:
> error C2061: Syntaxfehler: Bezeichner 'cout'
> Ich weiß wirklich nicht was das Programm damit meint ...

Es meint damit, daß der Name cout ihm unbekannt ist. Das liegt daran, 
daß cout im Namespace std definiert ist. Du mußt std::cout schreiben. 
Gleiches gilt für cin und endl.

> und meine do while schleife funktioniert auch nicht -.-

Zum einen steht das while innerhalb der Schleife (es müßte nach der 
schließenden geschweiften Klammer stehen), zum anderen wird diese 
Schleife je nach dem vorher eingegebenen Wert entweder genau einmal oder 
für immer durchlaufen. Es wird schließlich innerhalb der Schleife nichts 
weiter getan, als daß y immer wieder derselbe Wert zugewiesen wird.

von Vlad T. (vlad_tepesch)


Lesenswert?

sieht eigentlich gut aus.
cout sollte in der iostream deklariert werden und im Namespace std 
liegen, den du korrekt importierst.
bist du sicher, dass du die richtige Datei compilierst, oder die Datei 
gespeichert hast?

was benutzt du denn für eine IDE und compiler?

das nächste mal benutze bitte c-Tags
1
[c]
2
3
[/c]



außerdem:
system-Aufrufe sind nicht schön.

gleiches kannst du erreichen durch
1
char c;
2
cin >> c;
schmeiße am besten die stdio und die system-Aufrufe raus.
Daran wirds aber nicht liegen

von ... (Gast)


Lesenswert?

1) Bring Dein Profgramm in eine vernünftige Form! So will das niemand 
lesen.
2) Beim Posten Code-Tags benutzen!
3) Die Fehlermeldung enthält sicher auch eine Zeilennummer? Der Fehler 
liegt in der Zeile davor.

Meine Glaskugel meint:
1
cout << "Wurzel: " << (0.5*(sqrt(y)+(x/(sqrt(y))))) << endl;
ist die Zeile, die angemeckert wird. Wie gesagt, der Fehler liegt in der 
Zeile davor.

von Vlad T. (vlad_tepesch)


Lesenswert?

Krabs schrieb:
> do
>   {
>     y=x-0.000001;
>     while ( (y*y-x)/x >= 0.000001);
>   }

das stück ist auf jeden fall falsch:

das while muss hinter die schließende geschweifte klammer
1
do
2
{
3
  y=x-0.000001;
4
}  while ( (y*y-x)/x >= 0.000001);
außerdem hast du hier eine Endlosschleife, in der y immer neu berechnet 
wird, sich aber nix an den zugehörigen Termen ändert, folglich aber auch 
die Abbruchbedingung nie erfüllt wird, wenn sie nicht schon beim ersten 
Test erfüllt ist


edit:
ich hab die Fehlermeldung vorhin als "unbekannter Bezeichner" 
interpretiert.
Tatsächlich beschwert er sich aber daraüber, dass er ein cout anstelle 
des whiles findet.
Das innere While funktioniert, weil es in dieser Form als While-schleife 
mit leerem Body (nur Semikolon) interpretiert wird.

von ... (Gast)


Lesenswert?

Stand doch eindeutig da: "Syntaxfehler:"
Und
1
do { ... } cout ...
ist nunmal kein gültiges C-Konstrukt, weshalb der Compiler zu Recht beim 
Auftauchen von "cout" rummeckert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.