Hallo,
in unserer Vorlesung C müssen wir ein Prog. schreiben,
das aus verschiedenen Messwerte eine Regressionsgerade berechnet.
Bei unserem Prog haben wir allerdings einen „kleinen“ Fehler
und kamen trotz Teamwork (noch ohne Prof.) nicht auf die
Lösung.
Bei folgendem Listing werden Messwerte in ein Mischmasch aus struct und array eingelesen.
Allerdings wird die for-Schleife nicht richtig durchlaufen.
Die Abfrage für den 1. x-Wert kommt doppelt, dessen Eingabe wird aber im 1. y-Wert gespeichert.
Falls Ihr lust habt, könnt ihr es euch ja mal anschauen…
Wir arbeiten mit dem Borland C+±Builder (aber [meist] nur C-Befehle)
Listing:
#pragma hdrstop
#include
#include
#include
#include
#include
#include
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
struct TMessen
{
double xi;
double yi;
};
void solve_2 (double arr[2][3], double *d, double *k)
/*Lösen Mithilfe der Kramerregel mit zwei Unbekannten und Abspeichern der
Lösungswerte in den Variablen d und k*/
{
double det;
/*Nennerdeterminante der Matrix arr*/
det = arr[0][0]* arr[1][1]-arr[0][1]* arr[1][0];
/*Berechnung der zweiten Lösung von der Matrix arr */
*d = arr[0][2]* arr[1][1]-arr[0][1]* arr[1][2]/det;
/* b1 * a22 - a12 * b2 */
/*Berechnung der ersten Lösung von der Matrix arr */
*k = arr[0][0]* arr[1][2]-arr[0][2]* arr[1][0]/det;
}
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
/*Berechnung einer linearen Regression (Regressionsgerade), durch Eingabe der
Messwerte*/
/*Initialiserung der Variablen*/
int ianzahl, MessAnzahl, Stelle;
double Cramer[2][3], c, m, *n;
char cc;
TMessen Messwerte[1000];/*Deklaration von einem Messwertearray*/
printf(„Bitte geben Sie die Anzahl der vorhandenen Messwerte ein\n“);
scanf("%d",&MessAnzahl);
/*Allokieren des Speicherplatzes, dynamisch nach der Messwertanzahl*/
/*n=(double *) malloc (MessAnzahl* sizeof (double));*/
printf(„Geben Sie jetzt die Messwerte xi und yi ein\n“);
Stelle=1;
//Hier kommt die Eingabe der Messwerte mit fehlerhafter FOR-Schleife
for(ianzahl=0; ianzahl