maria1789 hat geschrieben:puh danke, du scheinst es echt drauf zu haben, aber es hat mich ziemlich verwirrt... hmm ich poste mal was ich nun habe, wahrscheinlich lachst du mich aus
Gar nicht. Ich hab genau so angefangen und so lange programmier ich auch noch nicht ( demnächst das Einjährige
). Das wichtigste ist nen klaren Kopf zu haben, nicht in Panik ausbrechen, Ordnung halten und Motivation nicht verlieren.
Tut mir leid wenn ichs ein wenig komplizierter ausdrücke, ich versuchs ein wenig klarer zu machen. Habe leider keine Ahnung, ob du hobbymäßig programmierst, studierst, oder sonst wie aufs Programmieren gekommen bist, deshalb kenn ich deine "Anforderungen" nicht.
Ich kann dir schlecht den ganzen Code einfach hier rein kopieren, weil du dabei wahrscheinlich nichts/kaum was lernen wirst (kenn ich aus eigener Erfahrung, man kopiert gerne Sachen einfach ab). Man lernt am besten wenn man sich selber klar macht, was man programmiert hat.
Generell rate ich dir, genau wie cloidnerux es beschrieben hat, Ordnung in deinen Code zu bringen.
Ich weiß allerdings nicht wie weit du mit dem Programmieren fortgeschritten bist, deshalb versuch ich den Code so einfach wie möglich zu schreiben.
Mach dir wirklich klar, was GENAU du in deinem Code haben willst.
(Vllt. hilft es dir umgangssprachlich zu übersetzen ^^ Wenn i größer 115 dann erhöhe die Anzahl der Grenzwertüberschreitungen.....)
Code: Alles auswählen
for (i=0;i<1440;i++)
{
a[i]= rand()%71+60;
if(((i+1) % 60) == 0)
{
mittelwert = mittelwert / 60;
printf("Mittelwert von Stunde %f: %f\n", (i+1) / 60, mittelwert);
}
}
for (i=0;i<1440;i++)
{
if(a[i]>115)
sum=sum + 1
printf ("%d",sum)
}
Das bringt wieder nicht das gewünschte Ergebnis.
(1.) Wie zuvor hast du 2 Zählschleifen: Du kannst die if-Anweisung genau so in die erste packen. Wenn du eine weiter Schleife druchläufst braucht dein Pc die doppelte Zeit und das Programm wird langsamer.
Ausdrucken würde ich die Anzahl der Grenzwertüberschreibungen erst am Ende. -> Programm ist wieder langsamer, da es alle Zahlen die über 115 sind ausdrucken muss ( macht bei kleinen Programmen nicht viel aus, aber trotzdem...)
2. Du hast in printf das Format %f eingefügt: %f fordert, dass du im auch eine float Zahl lieferst, du hast aber oben sum und i als int deklariert.
Code: Alles auswählen
int a = 0, b = 5.9;
float c = 5, d = 6.8
printf("%d %d\n", a, b);
printf("%f %f", c, d);
Output:
0 5
5.0 6.8
Für die Anzahl der Stunden brauchst du keine Kommazahl, da du nur ganze Stunden ausdrucken willst.
Schau dir am besten das C-Tutorial von Xin an wenn du Zeit hast.
EDIT:
Da du nach jeder Stunde den Mittelwert abfragst, musst du nach jedem mal Ausdrucken den Mittelwert auf 0 setzen, damit ein anderer Mittelwert herauskommt.
Code: Alles auswählen
if(((i+1) % 60) == 0)
{
mittelwert = mittelwert / 60;
// nach voller Stunde alle Werte bis dahin geteilt durch 60
printf("Mittelwert von Stunde %d: %f\n", (i+1) / 60, mittelwert);
// druckt mittelwert der x-ten Stunde aus
mittelwert = 0;
// resetet den Mittelwert, damit bei der nächsten vollen Stunde ein neuer/anderer
// Wert ausgedruckt werden kann
}