kann mir jemand sagen, was an diesem programm falsch ist???
-
#include <stdio.h>
typedef enum {even, odd} tPar;
tPar parity (unsigned int n)
{
tPar par = even;
for (;n!=0;n=n>>1)
par = par ^(n & 1);
return par;
}
main()
{
unsigned int l;
tPar p;
do {
scanf("%d",&l);
p=parity(l);
if (p) printf("Parity odd\n");
else printf("Parity even\n");
}
while (l>0);
}
-
wenn du bereit bist etwas mehr informationen (fehlermeldung) herauszurücken, vielleicht....
mfg
-
par = par ^(n & 1);
die Fehlermeldung ist in dieser Zeile!
7 C:\paritywert.cpp
invalid conversion from `int' to `tPar'danke für die mühe!!!
*markus
-
Statt
main() { }
schreib lieber
int main() { .... return 0; }
-
MarcusN schrieb:
Statt
main() { }
schreib lieber
int main() { .... return 0; }
Warum?? Und was bringt das zur Fehlerbehebung?
@relex
Vielleicht hilfts ja was, wenn du den Ausdruck explicit castest.par ^= (tPar)(n & 1);
-
Es würde laufen, wenn du die Endung .c statt .cpp verwenden würdest, da der Kompiler das sonst als C++ Programm kompiliert.
Oder, wenn du das mit nem C++ Compiler kompilierst, musst du den Rückgabewert explizit casten....
-
par = (tPar)(par^(n & 1));
Der Algorithmus ist zudem falsch.....
-
AJ schrieb:
MarcusN schrieb:
Statt
main() { }
schreib lieber
int main() { .... return 0; }
Warum?? Und was bringt das zur Fehlerbehebung?
Das ist mir nur beim ersten Überfliegen des Codes aufgefallen, da hatte er seine Fehlermeldung noch gar nicht gepostet, hat sich überschnitten.
-
@MarcusN
Die Frage bleibt: Warum int main()??
-
AJ schrieb:
Die Frage bleibt: Warum int main()??
Weil
main() {}
ein Syntaxfehler sein kann. Abhängig von der verwendeten C Version.
-
Wusst ich noch gar nicht, dass Probleme geben könnte. Wobei mir das eigentlich egal ist, weil ich grundsätzlich den Datentyp angebe.
Gibt es dann nicht auch ein Problem, wenn das void zwischen den Klammern fehlt??