# Wuzel ziehen funktioniert nicht!



## fireflyhope (24. September 2004)

Mein vater hat mir gesagt um eine wurzel zuziehen muss ich das schreiben:


```
int vari;
vari = sqr(4);
```
so nun müsste er eigentlich den wert 2 ausgeben, er bringt aber einen fehler das er den befehl auch mit argument bezogenersuche nicht findn konnte


----------



## Fabian H (24. September 2004)

Hast du auch die Header Datei _math.h_ eingebunden?
Falls es dann noch nicht funktioniert, kannst du mal versuchen, den Parameter von sqrt in double zu casten.

Eventuell musst du auch die mathlib mitlinken, bei gcc geht das .z.B mit der Option _-lm_.

Bei mir wird dein Code jedenfalls fehlerfrei uebersetzt. (mit _math.h_)


Edit: Ups 
Siehe reima's Antwort.


----------



## Matthias Reitinger (24. September 2004)

```
int vari;
vari = sqrt(4);
```


----------



## fireflyhope (24. September 2004)

Ne geht nicht, mein Code sieht jetzt so aus:


```
#include "stdafx.h"
#include "math.h"

int _tmain(int argc, _TCHAR* argv[])
{
                     int vari;
	vari = sqrt(4);
	printf("lala = %d\n", vari);
	return 0;
}
```

fehler:

```
c:\Dokumente und Einstellungen\Vincent\Eigene Dateien\Visual Studio Projects\linearefunc\linearefunc.cpp(23): error C2668: 'sqrt': Mehrdeutiger Aufruf einer überladenen Funktion
```


----------



## C Coder (24. September 2004)

Versuchs so:

```
int Quadrat = 4;
int vari = sqrt(Quadrat);
```
oder so

```
int vari = sqrt(4.00);
```

und noch ein tipp am rande: nutz statt int ein double oder float


----------



## fireflyhope (24. September 2004)

ja mit dem 4.00 geht es jetzt, ich habe nur ein problem jetzt, ich mache ein programm das strecken im koordinaten system ausrechnen kann, so, ach ich poste meinen code(er  net da die variable erge nicht ".00" hintendran hat


```
#include "stdafx.h"
#include "func.h"
#include "math.h"

int _tmain(int argc, _TCHAR* argv[])
{
	int p1x = 5;
	int p1y = 5;
	int p2x = 4;
	int p2y = 3;
	int erge;
	int erge1;
	int a1;
	int a2;
	a1 = p1x - p2x;
	a1 = a1 * a1;
	a2 = p1y - p2y;
	a2 = a2 * a2;
	erge = a1 + a2;
	erge1 = sqrt(erge);
	printf("lala = %d\n", erge1);
    wait();
	return 0;
}
```


----------



## MCIglo (24. September 2004)

Bin ja selbst n n4p in C, aber kannst du aus dem int erge nicht einfach ein double erge machen?


----------



## Thomas Kuse (24. September 2004)

Natürlich!

Leute, die sqrt Funktion gibt Euch einen double zurück und keinen int!

einfach so:


```
double a=9.0;
double b=sqrt(a);
```

Wenn ihr dass dann lieber als int ausgeben wollt:

```
int c=rint(b);
```


----------



## Java/CppProgrammer (25. September 2004)

> _Original geschrieben von Thomas Kuse _
> *Natürlich!
> 
> Leute, die sqrt Funktion gibt Euch einen double zurück und keinen int!
> ...



Wenn dann so:
int x= static_cast<int>((sqrt(a))+0.5) 


Damit die Rundung auch korrekt gerundet wird.


----------

