Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
--- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
---- Algorithmen (http://www.informatikerboard.de/board/board.php?boardid=17)
----- C++ Maschinengenauigkeit und Summen (http://www.informatikerboard.de/board/thread.php?threadid=2564)


Geschrieben von Marcell99 am 14.11.2015 um 19:26:

 

oder was bedeutet bei dir die zahl auf eins setzen ??



Geschrieben von eulerscheZahl am 14.11.2015 um 19:32:

 

Das meine ich mit Zahl auf 1 setzen:
code:
1:
Zahlta =1.0;

Hast du den Code mal laufen lassen (vermutlich nicht, sonst hättest du die fehlende Klammer bemerkt). Tu das mal und schaue, was rauskommt.



Geschrieben von Marcell99 am 14.11.2015 um 19:45:

 

doch hab ich
da ist auch kein Fehler
aber wenn ich das laufen lasse steht nichts im Terminal



Geschrieben von eulerscheZahl am 14.11.2015 um 19:48:

 

Weil das Programm in einer Endlosschleife hängenbleibt.
Zahla = 1;
1+Zahla = 2, was größer ist als 1. Also setzt du in der Schleife Zahla = 1 (was es ja vorher schon war) und durchläufst die Schleife erneut. Da wird höchstens der Prozessor warm.



Geschrieben von Marcell99 am 14.11.2015 um 19:49:

 

#include <stdio.h>

int main(int argc, const char * argv[]) {

float Zahla=1.0F;
float Zahlb;
while ((1+Zahla) ==1) {
Zahlb=Zahla;
Zahla=1.0;
}

printf("%f\n",Zahla);

double epsilon = 0.01;
double epsilonValid;
while ((1 + epsilon) > 1)
{
epsilonValid = epsilon;
epsilon /= 2;
}
printf("%g\n", epsilon);



long double c=0.0234L;
long double d;
while ((1+c)>1) {
d=c;
c/=2;
}

printf("%Lf\n",c);

return 0;
}



Geschrieben von Marcell99 am 14.11.2015 um 19:51:

 

wo schreib ich das denn hin ?? ich bin verwirrt
deswegen ich mein pc so warm



Geschrieben von Marcell99 am 14.11.2015 um 19:55:

 

warum denn gleich?? die Formel ist >1

jetzt kommt

1.000000
7.10543e-17
0.000000
Program ended with exit code: 0

raus



Geschrieben von eulerscheZahl am 14.11.2015 um 20:02:

 

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
#include <stdio.h>

int main(int argc, const char * argv[]) {
	float Zahla=1.0F;
	float Zahlb;
	while (1+Zahla > 1) {
		Zahlb=Zahla;
		Zahla /= 2; // Zahla=1.0; 
	}
	printf("float: %g\n",Zahlb);

	double epsilon = 0.01;
	double epsilonValid;
	while ((1 + epsilon) > 1)
	{
		epsilonValid = epsilon;
		epsilon /= 2;
	}
	printf("double: %g\n", epsilonValid);

	long double c=0.0234L;
	long double d;
	while ((1+c)>1) {
		d=c;
		c/=2;
	}
	printf("long double: %.30Lf\n",d);
	return 0;
}



Geschrieben von Marcell99 am 14.11.2015 um 20:09:

 

bei float
printf
an dieser stelle kann ich nach dem Komma keine Zahlb eintippen nur Zahla da
zahlb nicht definiert ist

da gilt auch für die anderen



Geschrieben von Marcell99 am 14.11.2015 um 20:14:

 

hab den Fehler gefunden du hast die geschweifte klammer falsch gesetzt



Geschrieben von eulerscheZahl am 14.11.2015 um 20:14:

 

Also, der Code, den ich oben kopiert habe, klappt bei mir wunderbar:
code:
1:
g++ -Wall infoboard.cpp

gibt keine Warnungen aus, ausführen kann ich auch.
Welchen Compiler verwendest du und was ist die genaue Fehlermeldung?



Geschrieben von Marcell99 am 14.11.2015 um 20:16:

 

Xcode aber ich hab das jetzt
ich hab jetzt eine lange liste von float und double und long double



Geschrieben von eulerscheZahl am 14.11.2015 um 20:20:

 

Xcode ist eine Entwicklungsumgebung, das sagt nichts über den Compiler aus.
Aber wenn alles geht, soll es mir recht sein.



Geschrieben von Marcell99 am 14.11.2015 um 20:28:

 

das weiß ich nicht ://

aber hast du vllt lust mir noch zu helfen ???

ich hab nämlich noch zwei Aufgaben :/

aber nur wenn du willst



Geschrieben von eulerscheZahl am 14.11.2015 um 20:32:

 

Du kannst sie ja mal einstellen - aber nur mit eigenem Lösungsansatz smile


Forensoftware: Burning Board, entwickelt von WoltLab GmbH