Problem Rechteckregel programmieren
-
Skym0sh0 schrieb:
... er muss jetzt nicht noch geflamt oder getrollt werden...
Entschuldigung, das wollte ich ganz bestimmt nicht so verstanden wissen!

Es geht um compilerunabhängige Grundlagen zum Programmieren allgemein.
-
mh, ich habs immer noch nicht nicht negativ verstanden...
aber ok, mir ists eigentlich schnuppe wie es gemeint ist, da ich nicht angesprochen bin.aber ihr habt recht, der TE sollte sich erstmal im klaren darüber sein, was er machen will und wie er damit umgeht wenn z.b. das ergebnis von a+h*i z.b. 3,5 ist...
-
..genau dieses problem versteh ich nicht ganz, habe ja die messwerte als float definiert, und dann darf das ergebnis des array's keine dezimalzahl sein?? obwohl ich es eigentlich doch als dezimalzahl definiere? Vielleicht kann mir doch noch jemad eine Erklärung geben, weil steh da grad einfach auf dem schlauch, und komm deshalb nicht richtig weiter.
-
Du hast
anzahlmesswerte,messwert[0]bismesswert[anzahl-1]. Wenn du jetzt schreibst, dass du denmesswert[a+i*h]benutzen möchtest unda+i*hist eine Fließkommazahl, z.B. 3.32334, der wievielte Messwert ist dann gemeint?
-
Komm schon, so schwierig ist das nicht... es geht nicht um den Inhalt des Arrays, sondern um den Datentyp, mit dem auf die Elemente zugreifst.
Wenn du ein Array mit zwei Elementen definierst, dann greifst du mit dem Index 0 auf das erste und mit dem Index 1 auf das zweite Element zu. Welchen Sinn macht es, auf das Element 1.5 zugreifen zu wollen? Es gibt kein Element 1.5, das zwischen dem ersten und zweiten Element liegt, daher darfst du als Index nur ganzzahlige Datentypen benutzen, und zu denen gehörtfloatnun einfach nicht.Edit:
Beaten by Sepp
-
m_nus schrieb:
habe ja die messwerte als float definiert, und dann darf das ergebnis des array's keine dezimalzahl sein??
der Messwert ist ungleich dem arrayindex
der arrayindex ist ganzzahlig und hinter jedem index steckt ein messwert
messwert[0]=3.6; messwert[1]=5.2; ...warum willst du den arrayindex berechnen? oder willst du schauen, ob bzw. wo ein messwert schon im array vorhanden ist?
-
Nein, er will einfach die Flaeche unter der Kurve ausrechnen. Die Stuetzstellen sind die Messwerte. Sind sie aequidistant sollte folgendes ausreichen: (b-a)/anzahl * summe ueber alle Messwerte.
-
ok, hab das programm jetzt umgeschrieben, beim ausführen kommt jetz der fehler:
Unresolved external 'main' referenced from c:\Borland...von der Library nehm ich an. Muss ich etwa noch ne headerdatei einbinden?float getintegral ( float messwert[], int n, float a, float b, float h )
{
float y = 0 ;
int i ;
for ( i=0 ; i<n ; i++ )
h = ((b-a) / n) *(y += messwert[0]);
y *= h;
return(y);
}
-
Steht doch da: Du brauchst eine Funktion namens main. C++-Buch, erste Seite.
-
float getintegral ( float messwert[], int n, float a, float b, float h )
int main( )
{
float y = 0 ;
int i ;
for ( i=0 ; i<n ; i++ )
h = ((b-a) / n) *(y += messwert[0]);
y *= h;
return(y);
}Es kommt E2141: Declaration syntax error nach Eingabe der main-funktion, aber eigentlich kann man da doch nicht viel verkehrt machen

-
Such dir ein Tutorial zu C oder C++. Arbeite es durch! Ansonsten ist dein Programm ebenfalls falsch (mehr als nur eine Stelle). Da war deine erste Version besser, aber raten hilft eh nicht! Ich sollte das nicht tun, aber:
float getintegral ( float messwert[], int anzahl, float a, float b ) { float h = (b-a) / anzahl ; float x = 0 ; int i ; for ( i=0 ; i<anzahl ; i++ ) { x += messwert[i]; // <-- hier der Unterschied zu deinem ersten Versuch } x *= h; return x; }
-
ok, ich arbeite dass C++ Buch erstmal komplett durch. Hoffe ich bin dann weiter. Trotzdem danke