mittelwert
-
Du hast umsatz_unternehmen_1[12] als Typ int definiert.
Aber in Zeile 25printf("Eingabe:");scanf("%f",&umsatz_unternehmen_1[i]);
möchtest du eine Dezimalzahl eingeben.
Entweder du änderst in dieser Zeile das %f auf %d, oder die Zeile 13 von
int umsatz_unternehmen_1[12];
auf
float umsatz_unternehmen_1[12];
Gruß mcr
-
fehler gefunden!
-
EEK schrieb:
Du teilst die Summe bei jedem Schleifendurchgang. Das sollte wohl eher nach der Schleife berechnet werden
for(i=0;i<=n;i++) { printf("Bitte %i -ten Umsatz fuer %s %s \n",i+1,monate[i],jahr[i]); // Eingabe printf("Eingabe:");scanf("%f",&umsatz_unternehmen_1[i]); summe += umsatz_unternehmen_1[i]; mittelwert = summe / 12; // <--- }
Du hast Recht, es macht keinen Sinn, das so zu machen. Es ist aber nicht
der Fehler. Das Ergebnis ist richtig.summe/12 speichert er in einer anderen Variable: mittelwert.
Gruß mcr
-
Solang das ergebnis richtig ist es ok.
Wieso machts wenig Sinn?
Ich hätte auch eine while Schleife machen können mit while (n <= 12)
n++
...
und dann durch n teilen oder? würds mehr Sinn machen ? Oder wie meinst du das..
Gruß hasso
-
Hallo,
eine frage noch.. und zwar zur Standardabweichung.
Die Schleife soll nur 7 mal durchlaufen. Dafür hab ich 7 Umsätze eingeben:
660
893
623
528
809
643
1834Der Mittelpunkt ist: 856
Standardabweichung = müsste 456 sein habs nachgerechnet und steht in mein Lösungsheft! Ich bekomme aber 369 als Ergebnis, das heisst im Programm läuft etwas falsch.#include <stdio.h> #include <math.h> int main() { char monate[12][12] = {"Januar", "Ferbruar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" }; char jahr[12][5] = {"2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007"}; double standardabweichung; int i; int n=6; double s=0; double umsatz_unternehmen_1[12]; double summe_u_1 = 0; double mittelwert = 0; for(i=0;i<=n;i++) { printf("Bitte %i -ten Umsatz fuer %s %s \n",i+1,monate[i],jahr[i]); // Eingabe printf("Eingabe:");scanf("%lf",&umsatz_unternehmen_1[i]); summe_u_1 = summe_u_1 + umsatz_unternehmen_1[i]; mittelwert = summe_u_1 / 7; standardabweichung = pow( umsatz_unternehmen_1[i] -mittelwert,2); // bin mir sicher das hier der Fehler sein müsste. s = sqrt(standardabweichung/7); } printf("Die Standardabweichung ist: %lf Der Mittelwert %.2lf Summe: %.2lf",s,mittelwert,summe_u_1); system("pause"); }
gruß
-
-
An deiner Stelle würde ich separate for-Schleifen für:
- Einlesen der Daten
- Mittelwert bestimmen
- Standardabweichung bestimmen
Für die Standardabweichung benötigst du den Mittelwert. Schon
deswegen geht das nicht in einer Schleife.Gruß mcr
-
Hallo der compiler hat ne macke glaub ich!!!!!
jedes mal die Fehlermeldung the variable weiter is not initizialed...
Er meint die Variable sei nicht installiert!!! Ich hab sie aber installiert!?
#include <stdlib.h> #include <stdio.h> #include <math.h> #include "conio.h" int main() { float standardabweichung; float umsatz_summe_1 = 0; float umsatz_summe_2 = 0; float mittelwert = 0; float n=11; float umsatz_unternehmen_1[12],umsatz_unternehmen_2[12]; char monate[12][12] = {"Januar", "Ferbruar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" }; char jahr[12][5] = {"2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007"}; int i; char weiter; do { printf("\n\tHandelsfirma A & B GmbH\n"); printf("Menue:\n"); printf("1: - Umsaetze eingeben\n"); printf("2: - Programm Wiederholen\n"); printf("3: - Ermittlung kleinster Wert\n"); printf("4: - Ermittlung groesster Wert\n"); printf( "\nBitte geben Sie die Daten fuer das 1. Unternehmen ein:\n" ); for(i=0;i<=n;i++) { printf("Bitte %i -ten Umsatz fuer %s %s \n",i+1,monate[i],jahr[i]); // Eingabe printf("Eingabe:");scanf("%f",&umsatz_unternehmen_1[i]); } printf( "\nBitte geben Sie die Daten fuer das 2. Unternehmen ein:\n" ); for(i=0;i<=n;i++) { printf("Bitte %i -ten Umsatz fuer %s %s \n",i+1,monate[i],jahr[i]); // Eingabe printf("Eingabe:");scanf("%f",&umsatz_unternehmen_2[i]); } printf("\n--------------------------------------------------------------------------------\n"); printf("\n\n Filiale 1 Filiale 2\n\n"); printf("\n--------------------------------------------------------------------------------\n"); for (i=0;i<=11;i++) { printf("%5i. %10s %10s %10.2f",i+1 ,monate[i],jahr[i],umsatz_unternehmen_1[i]); //Ausgabe Umsatz, Monat, Jahr printf("%5i. %10s %10s %10.2f",i+1 ,monate[i],jahr[i],umsatz_unternehmen_2[i]); //Ausgabe Umsatz, Monat, Jahr printf("\n"); } printf("\n--------------------------------------------------------------------------------\n"); printf("Programm verlassen (j/n)?"); } while(weiter != 'j'); system("pause"); }
Warum???
gruß hasso
-
hasso schrieb:
jedes mal die Fehlermeldung the variable weiter is not initizialed...
Er meint die Variable sei nicht installiert!!! Ich hab sie aber installiert!?Wo denn ?
-
Initialisiert, nicht installiert...
-
Du hast vergessen, der Variablen weiter einen Wert zuzuweisen.
Da müsste noch so etwas wie getchar() rein und das leeren des
Tastaturpuffer.Gruß mcr
-
hasso schrieb:
Hallo der compiler hat ne macke glaub ich!!!!!
fiehlmann ?
ey ich glaub du brauchst ne brille, das sieht doch ein blinder mit hut was da nicht initialisiert ist
-
ach wirklich schlaumeier habs übersehen kann den besten passieren .. vogel
-
hasso schrieb:
ach wirklich schlaumeier habs übersehen kann den besten passieren .. vogel