Hallo allersetis,
ich muss folgendes Programmieren:
Ich soll beweisen das Gleitkommatypen mit den Operatoren + und * nicht assoziativ sind.
ich habe mir folgendes ausgedacht:
ich habe eine Methode Beweis das zunächst zeigen soll was mit Assoziativ gemeint ist und mit den anderen Methoden habe ich versucht zu beweisen das mit dem Typ float das Assoziativgesetz nicht gilt. Ich habe aber das Problem das die beiden ergebnisse gleich sind statt unterschiedlich. Ich weiß nicht warum das so ist was mache ich falsch bzw. wie könnte ich es sonst beweisen ?
ich muss folgendes Programmieren:
Ich soll beweisen das Gleitkommatypen mit den Operatoren + und * nicht assoziativ sind.
ich habe mir folgendes ausgedacht:
C++:
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <iomanip>
using namespace std;
void Assoziativ(){
// Allgemein gillt a+(b+c) = (a+b)+c
// Allgemeint gillt (a*b)*c = a*(b*c)
int a = 3; int b = 7; int c = 2; int result;
result = a+(b+c); cout<<"3+(7+2) = "<<result<<endl;
result = (a+b)+c; cout<<"(3+7)+2 = "<<result<<endl;
}
void BeweisFloat(){
float a = 0.05; float b = 0.70; float c =b-a; float result;
//a+(b+c)
result = a+(1+b); cout <<"res1 "<<result<<endl;
result = (a+b)+1; cout <<"res2 "<<result<<endl;
}
void BeweisFloatv2(){
// Gleitkommatypen float, double und long double
//double a = 10213.32452e10; double b=1; double c = 11.334; double res;
//(a+b)+c
double a = 6.*1024*1024*1024*1024*1024; double res;
res= a;
res=res+1;
res=res+1;
cout << setprecision(15) << setw(12) << res << endl;
//cout<<res<<endl;
//a+(b+c)
res=a+2;
cout << setprecision(15) << setw(12) << res << endl;
//cout<<res<<endl;
//result = a+result2; cout<<" "<<result<<" result 2 "<<result2<<endl;
//cout<<endl;
//result2 = (a+b);
//result = result2+c; cout<<" "<<result<<" result 2 "<<result2<<endl;
//
}
int main(){
Assoziativ();
cout<<endl;
BeweisFloat();
system("pause");
return 0;
}
ich habe eine Methode Beweis das zunächst zeigen soll was mit Assoziativ gemeint ist und mit den anderen Methoden habe ich versucht zu beweisen das mit dem Typ float das Assoziativgesetz nicht gilt. Ich habe aber das Problem das die beiden ergebnisse gleich sind statt unterschiedlich. Ich weiß nicht warum das so ist was mache ich falsch bzw. wie könnte ich es sonst beweisen ?
Zuletzt bearbeitet von einem Moderator: