Fehler im code

vektor123

Grünschnabel
Hallo alle zusammen,
ich kann die Fehler im Code nicht erkennen, kann mir jemand helfen?
Code1:
C++:
#include <stdio.h>

int abs(int x)
{
	return((x>0)?x:-x);
}

main()
{
	int x =3, y = -9, z = 7;
	long abc;
	abc=abc(abc(x*y)*z);
	printf("Der %s von %d*%d*%d ist %f.",
		   "Betrag", x, y, z, abc);
}
und Code2: soll den gerundeten Zahlenwert von Wurzel 2 (Quadratwurzel aus 2)ausgeben, leider ergibt sich ein völig unsinniger Wert:
C++:
#include <stdio.h>
main()
{
	double wurzelZwei;
	wurzelZwei=sqrt(2.0);
	printf("Wurzel 2:  %3.2lf\n", wurzelZwei);
}

Vielen Dank
 
Zuletzt bearbeitet von einem Moderator:
Hallo alle zusammen,
ich kann die Fehler im Code nicht erkennen, kann mir jemand helfen?
Code1:
Wie äußert sich denn der Fehler? Wie ist denn die Funktion abc definiert? Kann es sein, das du abs meintest?
und Code2:(soll den gerundeten Zahlenwert von Wurzel 2 (Quadratwurzel aus 2)ausgeben, leider ergibt sich ein völig unsinniger Wert:

C:
#include <stdio.h>
main()
{
	double wurzelZwei;
	wurzelZwei=sqrt(2.0);
	printf("Wurzel 2:  %3.2lf\n", wurzelZwei);
}
Ich erhalte folgende Warnungen vom Compiler:
Code:
wurz2.c:3:1: Warnung: Rückgabetyp ist auf »int« voreingestellt [-Wreturn-type]
wurz2.c: In Funktion »main«:
wurz2.c:6:3: Warnung: Implizite Deklaration der Funktion »sqrt« [-Wimplicit-function-declaration]
wurz2.c:6:14: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »sqrt« [standardmäßig aktiviert]
Übersetzung:

Die sqrt Funktion ist offenbar nicht deklariert!

Deshalb nimmt der Compiler an, das der Rückgabetyp int ist!

Der Compiler weiß, das es eine Funktion sqrt gibt, diese allerdings den Rückgabetyp double besitzt.

Ergo: Du hast vergessen math.h einzubinden.
C:
#include <math.h>
Bitte verwende die Code-Tags für deine Codeschnipsel!

\edit: Der Rückgabetyp von main muß int sein.

Bei printf gibt es kein %lf Format, nur bei scanf.

Gruß
 
Zuletzt bearbeitet:
Zurück