Mittelwert berechnen aus bestimmter Anzahl von Werten
-
Also erst mal danke!
Also zuerst eine for Schleife schreiben, in der die Zeiger addiert werden und dann eine weitere zur Berechung der Mittelwerte die ich dann wieder in den Zeigern ablege?
Hab ich das jetzt so richtig verstanden!
Habs so was in der Art mal schon probiert aber das ging ned so recht!
-
Bjoern821 schrieb:
Also zuerst eine for Schleife schreiben, in der die Zeiger addiert werden
Zeiger kann man nicht addieren. Du musst schon das addieren, auf das die Zeiger zeigen.
und dann eine weitere zur Berechung der Mittelwerte
Wieviele Werte willst du denn berechnen? Einen, oder?
Hab ich das jetzt so richtig verstanden!
Nein. Der Mittelwert ist die Summe geteilt durch die Anzahl. Das sollte man aber einem, der Ingenieur werden will, nicht mehr erklären müssen

Habs so was in der Art mal schon probiert aber das ging ned so recht!
Ach so, dann ist ja alles klar

-
Wie addiere ich denn Zeiger?
Die ANzahl der WErte soll dynamisch sein, also am Programmstart eingegeben werden!
Das mit der Mittelwertberechnung ist mir schon klar, steht in meiner Frage ganz obern!
-
Bjoern821 schrieb:
Wie addiere ich denn Zeiger?
Zeiger: gar nicht.
Die Werte dahinter kannst du (analog zu einem Array) über den Index-Operator ansprechen - 'ptr[0]' liefert das erste Element hinter dem Zeiger 'ptr[n-1]' das n-te.
-
Also den operator hatten wir noch gar nicht und hab auch noch nie was davon gehört, naja ham ja auch nur 1 Semester!

Na ich probiers mal weiter
-
zeig doch mal, deinen aktuellen quelltext, dann kann man bestimmt mehr sagen. allgemein muss man einen zeiger dereferenzieren, um an den wert zu kommen, auf den er zeigt. das geht so:
int wert3 = *(zeigerAufIntWerte + 2);der index-operator ist eine abkürzung dafür:
int wert3 = zeigerAufIntWerte[2];
-
Also hier ist der Code:
//Test //Prüfung SS06 #include <iostream.h> void main () { double nE, nW; cout<<"Bitte Anzahl der Werte eigeben:"<<endl; cin>>nW; cout<<"Bitte SChrittweite eingeben"<<endl; cin>>nE; double *werte = new double[nW]; int *dwerte= new int[nW]; //Eingabe for (int i=0; i<nW; i++) { cout<<"Bitte Messwert "<<(i+1)<<" eingeben"<<endl; cin>> *(werte+i); }//end for //Berechnung for(i=0; i<nE; i++) { *(dwerte+i)=*(dwerte+i)+*werte[i]; //Hier sollte ich eine variable Anzahl von werte addieren, die in den Pointern stehen }//end for //Ausgabe for (i=0; i<nW; i++) { cout<<*(werte+i)<<endl; //Nur eine Testausgabe, ob er richtig einliest }//end for for (i=0; i<(nW-nE); i++) { cout<<*(dwerte+i)<<endl; }//enjd for }//end mainAlso wie schon im Programm steht sollte ich eine variable Anzahl nE von Werten addieren die in den Pointern stehen, aber wie geht das?
-
Du benötigst nur eine (nebenbei: double) Variable, in die du nacheinander alle Werte addierst:
double sum=0; for(int i=0;i<nW;++i) sum=sum+werte[i];//oder: sum+=werte[i]; cout<<sum/nW;
-
Dankeschön!
Dann werde ich mal ein bischen weiterprogrammiern !
Mal sehen wie weit ich komme
-
Achja noch ne kurze Frage!
Ich muß dann von ca. 20 Messwerten immer drei zusammenzählen, das geht doch ambesten wenn ich die Variable sum, die sie zusammenzählt auch als pointer mache oder?
-
Hallo
Probiere es aus. Du solltest auch den korrekten Header einbinden iostream (ohne .h) und int main statt void main schreiben.
chrische
-
Hallo!
Warum muß ich es ohne .h schreiben?
und int main?
Tut mir leid ich hab davon keine Ahnung, hab erst seit okt c++!
-
Hallo
Weil das seit 1998 Standard ist. Wenn du iostream ohne .h schreibst, solltest du beachten, dass nun fast alles im namespace std liegt. Du musst also noch using namespace std; drunter schreiben, oder du schriebst statt cout std::cout.
chrische
-
Tja dann weiß ich ja jetzt auf welchem Stand unser Professor ist

Weil der uns das ganze so beigebracht hat!