[C++] Modulo funktioniert nicht ?/kein namespace std

daemon777

Lt. Commander
Registriert
Dez. 2003
Beiträge
1.371
Ich hatte vor ein einfaches Programm zur Berechnung von Priemzahlen zu Programmieren. Ist eigentlich keine große Sache. Allerdings habe ich gleich zwei Probleme. Das erste Problem ist dass ich bei folgender Funktion eine Fehlermeldung bekomme:

Code:
int teilbar(int x,int y)
{
	if(x%y=0) // Hier bekomme ich die Fehlermeldung.
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

Die Fehlermeldung sieh so aus:
error C2106: '=' : Linker Operand muss ein L-Wert sein
Fehler beim Ausführen von cl.exe.


Das zweite Problem ist, dass mein Kompiler behauptet, dass der namespace std nicht existieren würde. Das verwundert mich doch ein wenig da ich ihn ja vor einigen Wochen ständig benutzt habe :D


Könnt ihr mir da weiter helfen ? Irgendwie bin ich doch ein wenig verzweifelt :lol:
 
Für einen Vergleich musst du ein doppeltes Gleichheitszeichen verwenden. ;)
Das mit dem Namespace kommt wohl daher dass du kein Header mit dem Namespace includiert hast!? Ist das der gesamte Code? Ich denke nicht, daher nochmal das komplette Ding posten, inklusive der originalen Compilermeldung.
 
Das mit dem Modulo funktioniert jetzt. Danke an euch alle :)

Zu der Sache mit dem namespace:

Code:
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#include <windows.h>

using namespace std;

int teilbar(...)
{...}

int istpriemzahl(...)
{...}

int main()
...

Und die Kompilermeldung:

--------------------Konfiguration: test3 - Win32 Debug--------------------
Kompilierung läuft...
main.cpp
D:\Priemzahlen\tes3t\test3\main.cpp(5) : error C2871: 'std' : Existiert nicht oder ist kein Namespace
Fehler beim Ausführen von cl.exe.

test3.exe - 1 Fehler, 0 Warnung(en)

Wie ihr seht ist das schon test3 also hab ich schon ein wenig daran rumprobiert komm aber irgendwie nicht drauf was es sein könnte :D
 
Hi daemon,

daemon777 schrieb:
Code:
int teilbar(int x,int y)
{
	if(x%y=0) // Hier bekomme ich die Fehlermeldung.
	{
		return 1;
	}
	else
	{
		return 0;
	}
}
Der fehler wurde ja schon beseitigt, aber ich würde noch mehr klammern setzen um mehr Fehlerquellen zu beseitigen.

Aus
Code:
if(x%y==0)
würde dann
Code:
if((x%y) == 0)

So vermeidet man dann Fehler die durch die Gewichtung der Operatoren kommen.



Das zweite Problem ist, dass mein Kompiler behauptet, dass der namespace std nicht existieren würde. Das verwundert mich doch ein wenig da ich ihn ja vor einigen Wochen ständig benutzt habe :D

Wenn du nach den #include zeilen 'using namespace std;' reinschreibst sollte auch dieses Problem behoben sein.

HTH

Tim
 
daemon777 schrieb:
Das mit dem Modulo funktioniert jetzt. Danke an euch alle :)

Zu der Sache mit dem namespace:

Code:
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#include <windows.h>

using namespace std;

int teilbar(...)
{...}

int istpriemzahl(...)
{...}

int main()
...

Und die Kompilermeldung:

--------------------Konfiguration: test3 - Win32 Debug--------------------
Kompilierung läuft...
main.cpp
D:\Priemzahlen\tes3t\test3\main.cpp(5) : error C2871: 'std' : Existiert nicht oder ist kein Namespace
Fehler beim Ausführen von cl.exe.

test3.exe - 1 Fehler, 0 Warnung(en)

Wie ihr seht ist das schon test3 also hab ich schon ein wenig daran rumprobiert komm aber irgendwie nicht drauf was es sein könnte :D

Ein paar Fragen bzw Dinge:

  1. Welche Version von Visual C++ benutzt du?
  2. Man sollte #include <iostream> schreiben. Die ganzen standard c++ header mit .h Endung sind veraltet.

Aber merkwürdig ist das schon, selbst der uralte Borland C++ Compiler in meiner ehemaligen Schule hat 'using namespace std;' gefressen.

Gruß

Tim
 
Jetzt funktionierts.

Ich hab nichts weiter gemacht als aus #include <iostream.h> ein #include <iostream> zu machen.

Ich benutzte den Visual C++ 6 (Autoren Version).

Was ich ein wenig seltsam finde ist, dass wenn ich in meinen älteren Projekten nachsehe immer #include <iostream.h> steht und es trotzdem funktioniert obwohl ich damals genau das gleiche Programm verwendet habe.

Was solls. Es funktioniert das ist die Hauptsache.

Danke an euch alle.
 
daemon777 schrieb:
Ich hab nichts weiter gemacht als aus #include <iostream.h> ein #include <iostream> zu machen.
das ist auch standardkonform im gegensatz zu iostream mit .h dran. das mit dem h stammt noch aus zeiten als viele compiler keine namespaces kannten (und schlicht aufgeborte c-compiler waren), damit es heute keinen streß mit alten programmen gibt, funktioniret die variante mit h immer noch und hier wird normalerweise automatisch der namespace std vorausgesetzt. allerdings müsste dich dein compiler warnen, dass das deprecated ist und du das bitte nicht mehr nutzen sollst.
 
Zurück
Oben