Problem in Anwendung

Hallo!
Ich habe ein Problem in einer selbstgeschriebenen Anwendung. Beim kompilieren tauchen Fehler auf und ich weiß nicht wie ich sie beheben soll. Bei der Korrektur sollte nicht allzu kompliziert vorgegangen werden, da ich noch ein Anfänger bin… Die Fehler lauten:

\C++\Vektoren\Vektoren.cpp(15) : error C2146: syntax error : missing ';' before identifier 'cout'
\C++\Vektoren\Vektoren.cpp(21) : error C2679: binary '\>\>' : no operator found which takes a right-hand operand of type 'int (\_\_cdecl \*)(void)' (or there is no acceptable conversion)
\C++\Vektoren\Vektoren.cpp(24) : warning C4551: function call missing argument list
\C++\Vektoren\Vektoren.cpp(24) : error C2450: switch expression of type 'int (\_\_cdecl \*)(void)' is illegal
 Integral expression required
\C++\Vektoren\Vektoren.cpp(30) : error C3861: 'clrscr': identifier not found, even with argument-dependent lookup
\C++\Vektoren\Vektoren.cpp(47) : error C3861: 'clrscr': identifier not found, even with argument-dependent lookup
\C++\Vektoren\Vektoren.cpp(52) : error C2065: 'xa' : undeclared identifier
\C++\Vektoren\Vektoren.cpp(52) : error C2065: 'xb' : undeclared identifier
\C++\Vektoren\Vektoren.cpp(52) : error C2065: 'ya' : undeclared identifier
\C++\Vektoren\Vektoren.cpp(52) : error C2065: 'yb' : undeclared identifier
\C++\Vektoren\Vektoren.cpp(53) : error C3861: 'xa': identifier not found, even with argument-dependent lookup
\C++\Vektoren\Vektoren.cpp(53) : error C3861: 'ya': identifier not found, even with argument-dependent lookup
\C++\Vektoren\Vektoren.cpp(53) : error C3861: 'xb': identifier not found, even with argument-dependent lookup
\C++\Vektoren\Vektoren.cpp(53) : error C3861: 'yb': identifier not found, even with argument-dependent lookup
\C++\Vektoren\Vektoren.cpp(55) : error C2668: 'acos' : ambiguous call to overloaded function
 h:\Programme\MSVisualStudio2003\Vc7\include\math.h(586): could be 'long double acos(long double)'
 h:\Programme\MSVisualStudio2003\Vc7\include\math.h(538): or 'float acos(float)'
 h:\Programme\MSVisualStudio2003\Vc7\include\math.h(183): or 'double acos(double)'
 while trying to match the argument list '(int)'
\C++\Vektoren\Vektoren.cpp(56) : warning C4551: function call missing argument list

Der Quelltext lautet:

#include 
#include 

using namespace std;


int main()
{
 int befehl()
 // Die Überschrift und Menü
 cout " " " \> befehl;

 // Befehl bearbeiten
 switch (befehl)
 {
 case 0: cout \> xa;
 cout \> ya;
 cout \> xb;
 cout \> yb;
 }
 break;
 case 2: 
 {
 clrscr();
 cout 

Hallo

Ich habe ein Problem in einer selbstgeschriebenen Anwendung.
int main()
{
int befehl()

Semikolon fehlt: int befehl();
Was soll das überhaupt an dieser Stelle?
Eine unmotivierte lokale Vorwärtsdeklaration
einer Funktion?

Möglicherweise meinst Du

 char befehl; 

oder

 int befehl;

// Die Überschrift und Menü

cin >> befehl;

Aha, Du willst einen Wert einlesen und
dann damit was anfangen. Der Einfachheit
halber nehmen wir mal oben besser

 int befehl;

und dann klappt das hier unten auch.

// Befehl bearbeiten
switch (befehl)
{

OK, ein „swidsch“ geht so nur auf eine integer-Größe,
also jetzt müsste es klappen.

case 1:
{
clrscr();

Hmmmm, wo hast Du das denn hergeholt? Sowas gabs
mal früher für DOS-Compiler, um das DOS-Fenster
zu reinigen. Im alten DOS-Borland-C++ wurde
das dann über

 #include 

eingebunden, wenn ich mich nicht irre.
Also erst mal auskommentieren: /* clrscr() */

case 1: {

int xa; int xb; int ya; int yb;
} break;

case 2: {
int a; int b; int c; int d;

a = xa * xb + ya * yb;

} break;

OK, jedes case-Statement bildet hier einen Block, also
kann er in „case 2“ die lokalen Variablen aus „case 1“
nicht kennen. Schreibe die Variablendeklaration

 int xa; int xb; int ya; int yb;

oben in den Kopf der Funktion, unter „int befehl“.

b = sqrt(fabs(xa)^2 + fabs(ya)^2) * sqrt(fabs(xb)^2 + fabs(yb)^2);

Na ja, eine a ^2-Funktion gab es in BASIC oder Fortran,
in C/C++ gibt es sie nicht. Schreib Dir eine Funktion
selber (analog zu sqrt) die „sqr“ heisst und so aussieht:

inline double sqr(double x) { return x \* x; }

Diese Schreibst Du dann oben
über Deine „main()“-Funktion und alles wird gut. Die zeile sieht dann
so aus:

 b = sqrt( sqr(xa) + sqr(ya) ) \* sqrt( sqr(xb) + sqr(yb) );

Später machst Da mal ein Template draus.

c = a / b;
d = acos©;
cout cout oder sowas?

Aus welcher Sprache hast Du das Programm übersetzt?

Grüße

CMБ

Hallo Fragewurm,

Besonders bei C/C++ musst du dir merken, dass der Fehler immer an der ersten angegebenen Stelle oder vorher zu finden ist !!

Besonders eine vergessene „}“ oder auch ein vergessenes „;“ können hunderte von Folgefehlern erzeugen.

Also als Anfänger solltest du immer nach dem ersten Fehler in der Fehlerliste suchen und danach neu kompilieren.

MfG Peter(TOO)

Wow!
Danke für die Hilfe!

Aus welcher Sprache hast Du das Programm übersetzt?

…das Prgramm hab ich allein geschrieben, bin aber eben noch nicht so gut in C++.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Mist!!

Schon wieder ein Fehler bei dem ich mich nicht auskenn…

C++\Vektoren\Vektoren.cpp(17) : error C2447: '{' : missing function header (old-style formal list?)





#include 
#include 
#include 

using namespace std;




int main();
int xa;int xb;int ya;int yb;int befehl;int a;int b;int c;int d;
//inline double sqr(double x) { return x \* x; };
{
 // Die Überschrift und Menü
 cout " " " \> befehl;

 // Befehl bearbeiten
 switch (befehl)
 {
 case 0: cout \> xa;
 cout \> ya;
 cout \> xb;
 cout \> yb;
 }
 break;
 case 2: 
 {
 clrscr();

 cout 

Guten Morgen.

Hier meine korrigierte Version (gibt allerdings Abzüge in punkto Ästhetik :smiley: ). Ausserdem sollte die Eingabe der Vektoren und deren Berechnung sequentiell ablaufen und der Berechnungsalgorithmus für die Vektoren geändert werden.

_#include
#include
#include
using namespace std;

int main()
{
int xa;
int xb;
int ya;
int yb;
int befehl;
int a;
int b;
double c;
int d;

//inline double sqr(double x) { return x * x; };

// Die Überschrift und Menü

cout " " " > befehl;

// Befehl bearbeiten
//while (befehl!=0) {
switch (befehl)

{

case 0: cout > xa;

cout > ya;

cout > xb;

cout > yb;

}

//break;

case 2:

{

//clrscr();

cout

HTH
mfg M.L. (Windows XP+SP2 @ M$ Visual C++ 6.0 Autoren Edition)

***Werbung***
http://www.programmersheavn.com
http://www.buj.com
http://www.derentwickler.de
http://www.entwickler-forum.de_