Klasse
-
operator void schrieb:
<imho>Rohe dynamische Arrays sollte man nie direkt verwenden. Nimm vector, und wenn der Overhead irgendwann mal ein Problem sein *sollte*, nimm einen unflexibleren Wrapper für new[].</imho>
stimmt, dass ist ja das c++ forum :p
-
Hallo
//qm-regelkarte
//MITTELWERT STANDARTABWEICHUNGSKARTE SHEWHART-REGELKARTE
//Obere- und UEG
//MITTELWERT DER MITTELWERTE und STANDARDABWEICHUNG
//MEDIAN undSPANNWEITE//FORMEL
//+----------------------------------------------------+
//Stichprobenumfang
float a3[] = {1.427, 1.287, 1.182, 1.099, 1.032, 0.975};
float a4[] = {0.691, 0.548, 0.508, 0.433, 0.412, 0.362};
float b3[] = {0 , 0.030, 0.118, 0.185, 0.239, 0.284};
float b4[] = {2.089, 1.970, 1.882, 1.815, 1.761, 1.716};
float d3[] = {0 , 0 , 0.076, 0.136, 0.184, 0.233};
float d4[] = {2.114, 2.004, 1.924, 1.864, 1.816, 1.777};class CKennwerte
{
private:
float array0[];
public:
//CKennwerte(float array[]);
void mittelwert(float mw[]);
void Median();
void OEG();
void UEG();
};void CKennwerte::mittelwert(float mw[])
{
float am=0; int x; int len;for(x=0; x<len; x++) { am=am+a3[x]; }
mw[0] = (am/len);for(x=0; x<len; x++) { am=am+a4[x]; }
mw[1] = (am/len);for(x=0; x<len; x++) { am=am+b3[x]; }
mw[2] = (am/len);for(x=0; x<len; x++) { am=am+b4[x]; }
mw[3] = (am/len);for(x=0; x<len; x++) { am=am+d3[x]; }
mw[4] = (am/len);for(x=0; x<len; x++) { am=am+d4[x]; }
mw[5] = (am/len);
}int main()
{
float x[6];
CKennwerte A;return 0;
}Wer kann den nun hier diese klasse so ergänzen das sie den Mittelwert berechnen kann und diese in einem Array abspeichert.
Ich hoffe jetzt kann mir jemand helfen.
Das was ihr vorher geschrieben habt ist ja schön und gut und hilft euch bestimmt, aber leider nutzt mir das nix.
Alles Klarr !!
Gruß
Hans
-
@Heino-Hans
Du solltest Dir erst mal Klarwerden, was du hier programmieren willst ! C oder C++ ???Deine Arrays sind typisches C !
Dein Problem: die Groesse des Arrays
Dein Vorteil: die Variable des Arrays ist nen zeiger aufs erste element und somit von der Groesse unabhaengig.
Die Loesung: deine Funktion braucht zusaetzlich zum Zeiger auf die 1. Variable auch die Groesse !
die Bemerkung: Aehnlichkeiten die dann zu gewissen API Aufrufen entstehen, sind nicht unbegruendet ! Schau Dir mal WinAPI funktionen an, die Listen/Arrays von Werten brauchen.Nutze das, wenn du ne C schnittstelle programmierst, also z.B. wenn deine Funktion spaeter in ne DLL wandern soll und von der Exportiert werden soll.
Im Zeitalter von C++ solltest das aber meiden wie die Pest !
Du willst ne Klasse die dir Arbeit abnimmt, dann benutzte auch Klassen, die Dir Arbeit abnehmen. Gute Wahl sind STL-COntainer, wie vorgeschlagen. std::vector<float> ist wesentlich eleganter, fehlerunanfaelliger !Ciao ...
-
Hi
Ich wollte den Mittelwert berechnen und nicht einen Arbeitstag dafür opfern.
Das muss so in ungefähr 10 Minuten zu Lösen sein.
Seit den ich mich mit dir Unterhalte dauert die Aufgabe 24 Stunden.
Ist doch komisch oder
-
Dann berechne doch den Mittelwert und opfere keine 24 Stunden.
Natürlich ist das in ein paar Minuten möglich, aber daß Du Dich bei uns drüber beschwerst, daß *Du* immer noch keine Lösung hast läßt für mich nur eine Schlußfolgerung zu:Du willst, daß wir Deine Arbeit erledigen.
Und jetzt mal was zum Thema:
Warum willst Du denn eine Klasse programmieren? Ich meine den Mittelwert berechnen, das sieht für mich wie ne astreine Funktion aus. Das in eine Klasse zu verpacken ist völliger Schwachsinn... und das versuchen wir Dir hier die ganze Zeit zu erzählen. Wenn Du eine Funktion schreibst, dann fallen viele Probleme auch gleich weg.
float MittelWert(float * Array, int Size) { float Sum = 0.0f; for(int i=0; i<Size; ++i) { Sum += Array[i]; } return Sum/Size; }
Fertig, Zeit < 5 Minuten, ist doch komisch oder?
MfG Jester
-
hi
Entlich habt ihr die nervenden mekereien abgestellt und kommt zum kern des themas.
Na ja wie auch immer...
Ich möchte meine variablen und methoden schützen.
Sie sollen geschützt sein, vor manipulationen.Deswegen muss ich sie in Klassen schreiben, weil später diese Funktionen in Borland C++ Builder implementiert werden und später erst erfahren werden das es doch sinnvoll war es in klassen zu schreiben.
Gruß
Hans
-
Aber die Variablen in Deinem Code-Beispiel sind doch alle außerhalb der Klasse, wie willst Du sie denn da vor irgendwas schützen?
Die Daten sind offensichtlich frei zugänglich, und ab jetzt kann jeder der will mit Hilfe dieser Funktion und seinen Daten einen Mittelwert berechnen.
Und wie kann man denn bitte eine Funktion manipulieren?Und selbst wenn die Daten irgendwie zu schützen sind, dann ist das nicht Aufgabe einer Klasse, die einen Mittelwert berechnet (sowas macht eigentlich keinen Sinn), sondern Aufgabe irgendeiner Daten-Klasse. Diese wiederum könnte dann eine Methode Mittelwert besitzen.
Ich glaube, Du solltest Deine Nase nochmal in irgendein Buch oder Tutorial stecken wo's um Klassen geht. Schau Dir am besten das Tut vköon Volkard oder das von Shade an. Ich habe das Gefühl, Du hast nicht wirklich verstanden wozu Klassen gut sind und wie man sie einsetzt. Da werden dann auch ein paar nette Beispiele gemacht, dann ist alles gleich viel leichter...
aber das willst Du wahrscheinlich garnicht hören, nicht wahr? Du bist ja Experte auf dem Gebiet.
-
also wenn du mir das Beispiel auf meinem Code ergänzen würdest wäre ihc eine ecke schlauer.
kannst du mir bitte ohne virtual so wie ich es benutze, mit double arrays eine mittelwertberechnung durchführen, wo die Members geschützt sind.
Ich weiss das es mit dem Konstruktot und dekonstruktor geht, aber ich muss mir das mal anschauen.
Bitte !!!
Danke
Gruß
Hans
-
Heino-Hans schrieb:
also wenn du mir das Beispiel auf meinem Code ergänzen würdest wäre ihc eine ecke schlauer.
Nein, das würde Dich nicht schlauer machen. Das Beispiel ist Murks und läßt sich durch ergänzen (außer auskommentieren) auch nicht retten.
Heino-Hans schrieb:
kannst du mir bitte ohne virtual so wie ich es benutze, mit double arrays eine mittelwertberechnung durchführen, wo die Members geschützt sind
Wer redet denn von virtual?
Jetzt auf einmal doubles?
Und wovor willst Du denn irgendwas schützen? Du kriegst die Daten doch von außen? Also gehören sie Dir nicht und Du muß Sie auch nicht schützen.Du solltest Dir erstmal drüber klar werden was Du denn erreichen willst.
Warum willst Du denn unbedingt ne Klasse schreiben, wenn doch eine Funktion vollkommen genügt?MfG Jester
-
Hi
Schafst du heute nocheine Klasse zu schreiben mit die geschützt ist und den Mittelwert berechnet?
Was machst du den gerade bist du Schüler oder machst du eine Ausbildung Arbeitst du ?
Wenn dein Chef sagt machmal machst du erst eine 10 Std. Diskusion oder schreibst du sofort los.
Also wenn du so nett sein wilst dann schreib mal erst.
Ich verstehe nur Hauptbahnhof, weil ich tausen anderer Dinge hier habe.
Ich muss immer wieder überlege private oder public, virtuel nei war es doch double.
Ach leck mich mal
-
Heino-Hans schrieb:
Ach leck mich mal
Danke das war's. Schönen Tag noch.
-
-
Sorry für meinen Ausraster.
Du fragst aber wie dir Krippo
Kannst du auch mal was machen.
Das du diskutieren kannst hast du schon bewiesen.
Gruß
Heino
-
Heino-Hans schrieb:
Schafst du heute nocheine Klasse zu schreiben mit die geschützt ist und den Mittelwert berechnet?
Er schaffts (auch wenns keinen Sinn macht), du anscheinend nicht..
Heino-Hans schrieb:
Wenn dein Chef sagt machmal machst du erst eine 10 Std. Diskusion oder schreibst du sofort los.
Bist du sein Cheff?!?
Heino-Hans schrieb:
Also wenn du so nett sein wilst dann schreib mal erst.
Er ist nett und hat bereits sehr viel geschrieben...
Heino-Hans schrieb:
Ich verstehe nur Hauptbahnhof, weil ich tausen anderer Dinge hier habe.
Dann lerne erstmal etwas vernünftig bevor du mit dem nächsten anfängst
Heino-Hans schrieb:
Ich muss immer wieder überlege private oder public, virtuel nei war es doch double.
watt?
Heino-Hans schrieb:
Ach leck mich mal
lol
-
er hat doch schon viel "gemacht", in dem er dir die richtigen hinweise geliefert hat.
nun bist du am zug.
fertigen quellcode gibt es hier selten, nur hilfe, wenn einer an einem bestimmten stück nicht weiterkommt.
also fang an
-
Hallo
Members SOS Schliesst hier diesen Beitrag bevor die hier weiter diskutieren.
Das ist ja wie hin gekackt und hingeschissen.Gruß
-
Kannst du auch mal was machen.
lol, was glaubst du bringt dir das wenn dir jemand den Code schreibt? Du hast nun mal keine Ahnung von C++, wie man deutlich sieht. So stehst du nur vor Code und kapierst überhaupt nicht, was er warum macht. Lies dir doch mal ein vernünftiges C++ Anfänger Buch durch, anstelle irgend wo rumzupöbeln. Das Forum ist ja keine Code-Fabrik, wo du sagst, schreibt mir mal das und das. Wenn du das so haben willst, dann musst du Geld zahlen. Gibt genug Freelancer, die dir gerne eine Median-Berechnung schreiben
und vor dem posten in irgend welchen Foren solltest du lieber das lesen, anstelle rumzupöbeln.
http://www.catb.org/~esr/faqs/smart-questions.html
-
mann mann... hans
ausdrücke hast du.... tststs..
halt dich an den ratschlag: zeig, was du fertig hast, definiere, wo dein problem ist, dann wird dir sicher geholfen... und lass deine hinscheissereien
-
#define PROTECT #define UNPROTECT(x) #define ENSUREPROTECTION(x) PROTECT float MittelWert(const float * Array, int Size) { PROTECT float Sum UNPROTECT(Sum) = ENSUREPROTECTION(Sum) 0.0f; // die Summe nur für die Zuweisung kurz ungeschützt lassen for(int i=0; i<Size; ++i) { Sum UNPROTECT(Sum)+=ENSUREPROTECTION(Sum) Array[i]; // wie oben für die Addtion kurz Zugriff zulassen } return Sum/Size; }
i und den Rückgabewert kannst Du dann nach selbem Schema selbst absichern.
Dann hast Du die Funktion vollständig geschützt!SCNR
-
Du hast vergessen, den Rückgabewert zu UNPROTECTen!