Mittelwert berechnen über eine zahl...
-
dachschaden schrieb:
Harry1990 schrieb:
Wenn ich die Zahlen eingebe sollte das Program nur den Mittelwert von der zahl 20 und grösser berechnen. Die Zahlen nach der 20 müssten also grösser oder gleich sein und es müssten 3 hinterfolgenden Zahlen sein ansonsten wird keinen Mittelwert berechnet.
Verstehe ich dich korrekt hier?
Der Nutzer soll Zahlen eingeben können. Nach der Eingabe (wie soll die terminiert werden? Sind das immer fix 200 Zahlen, oder hast du da einen Limiter) soll ein Mittelwert berechnet werden, aber nur von den Zahlen, die größer oder gleich 20 sind, und die in einer Gruppe von drei nacheinanderfolgenden Zahlen stehen, auf die das zutrifft.
Was hast du denn schon so an Code geschrieben?
===========================
If you want, I guess we could communicate in English as well.
Tell me if I got you wrong here.
The user puts in numbers. After the input (how do you plan to terminate that? Are there always supposed to be 200 numbers, or do you have some sort of limiter) the mean is calculated, but only from numbers which are greater or equal 20 and in a group of three consecutive numbers which are like that.
What code have you written so far?
Danke für die schnelle Antwort!
Ja genau, du hast recht!
Man sollte maximal 200 Zahlen angeben können. Das program sollte wie du nennst den Mittelwert von allen Zahlen von 20 und grösser berechnen, aber es müssten mindesten 3 hinterfolgenden Zahlen sein. (Siehe Beispiel)
Das Programm soll ebenso angeben welche Zahl in der Reihenfolge grösser als 20 ist und wie viele Zahlen es sind.
Beispiel 2
Geben sie ihre Zahlen ein:
0 10 35 21 42 62 18 19 35 21 42 62 EN
Zahl Anzahl
3 4
9 4
-
Dann ist der Fall ja eigentlich klar, oder? Wenn nur maximal 200 Elemente eingegeben werden, legst du ein Array von 200 Elementen an. Dann lädst du über
scanf
deine Werte in das Array, bis du 200 erreicht hast oder das Eingabenende signalisiert wurde. Dann kannst du das Array durchgehen, prüfen, welche Einträge größer als 20 sind und sich in einer Dreiergruppe befinden, und die für deine Berechnung verwenden.Da die Eingabe der validen Regionen nach der Ausgabe des Mittelwerts kommt, kannst du angeben, wo deine 20er-Regionen sind, während du deinen Mittelwert berechnest.
EDIT:
Ich gehe davon aus, dass du das arithmetische Mittel meinst? Das berechnet man aber durch Zusammenaddieren aller Elemente, dann das Teilen der Anzahl der Elemente.
-
Ich bin gerade Neuanfänger in diesem Bereich, C++.
Bräuchte halt dieses Program für eine Weiterentwicklung in einem anderen Bereich.
-
dachschaden schrieb:
Dann ist der Fall ja eigentlich klar, oder? Wenn nur maximal 200 Elemente eingegeben werden, legst du ein Array von 200 Elementen an. Dann lädst du über
scanf
deine Werte in das Array, bis du 200 erreicht hast oder das Eingabenende signalisiert wurde. Dann kannst du das Array durchgehen, prüfen, welche Einträge größer als 20 sind, und die für deine Berechnung verwenden.Da die Eingabe der validen Regionen nach der Ausgabe des Mittelwerts kommt, kannst du angeben, wo deine 20er-Regionen sind, während du deinen Mittelwert berechnest.
geht auch ohne array. man kann den mittelwert bei jeder eingabe aus dem vorherigen mittelwert und dem neuen wert berechnen.
-
Harry1990 schrieb:
Ich bin gerade Neuanfänger in diesem Bereich, C++.
Bräuchte halt dieses Program für eine Weiterentwicklung in einem anderen Bereich.Schön? Du wirst hier keinen Quellcode für das Programm bekommen. Das ist ein Hilfeforum, kein Dienstleisterforum. Wenn du Probleme beim Verständnis einer Aufgabe oder bei einem Aspekt deines Codes hast, her damit. Aber du bekommst hier keine Komplettlösungen.
swapper schrieb:
geht auch ohne array. man kann den mittelwert bei jeder eingabe aus dem vorherigen mittelwert und dem neuen wert berechnen.
Stimmt, das geht auch.
-
Das Programm muss um Uhr 11:45 fertig sein.
Ist das möglich???
-
Harry1990 schrieb:
Das Programm muss um Uhr 11:45 fertig sein.
Ist das möglich???Wenn du dich ranhältst, sicherlich.
-
Harry1990 schrieb:
Das Programm muss um Uhr 11:45 fertig sein.
Ist das möglich???kommt auf deine programmierkenntnisse an.
ein erfahrener coder macht das in 10 minuten.
ein noob wird das bis 11:45 voraussichtlich nicht schaffen.
-
eins interessiert mich jetzt aber doch grad mal: wie liest man solche dynamischen mischungen aus zahlen und texten vernünftig ein? verarbeitet man da den rückgabewert von scanf?
-
HansKlaus schrieb:
eins interessiert mich jetzt aber doch grad mal: wie liest man solche dynamischen mischungen aus zahlen und texten vernünftig ein?
Das ist erst mal alles Text, was vom Terminal an dein Programm kommt.
scanf
tut dir nur den Gefallen und formatiert das bereits für dich um. Da brauchst du keinen Text umzuformatieren.
-
ja deshalb hatte ich ja auch einfach gets (oder ähnliches) und dann eine weiterverarbeitung vorgeschlagen.
aber so sachen wie
if(scanf("%d",&var)==EOF) //zahl einlesen { scanf("%s",&string); //string einlesen }
müssten doch gehen, oder?
-
HansKlaus schrieb:
müssten doch gehen, oder?
Aber wieso? Du liest doch nur Zahlen ein. Oder vergesse ich hier grade was wichtiges?
Für Zahlen reicht
scanf
vollkommen.
-
also da soll ein "EN" das ende der eingabe signalisieren.
warum es unbedingt ein "EN" sein muss, sei mal dahingestellt.
-
Kann mir jemand mit dem Anfang helfen?
Muss ich als erstes ein code für den Mittelwert herstellen?
-
HansKlaus schrieb:
also da soll ein "EN" das ende der eingabe signalisieren.
warum es unbedingt ein "EN" sein muss, sei mal dahingestellt.Harry1990 schrieb:
Ich bin gerade in einem versuch ein Program zu entwickeln das einen Mittelwert von positiven Zahlen berechnen kann.
Deswegen hätte ich als Sentinel einen negativen Wert verwendet, anstatt nur EN. Und selbst, wenn das EN nicht änderbar ist, weil es von einem externen Programm kommt, kann man auch einfach auf
if(!scanf)
prüfen, dann bricht er bei allen invaliden Eingaben ab.Harry1990 schrieb:
Kann mir jemand mit dem Anfang helfen?
Muss ich als erstes ein code für den Mittelwert herstellen?Einlesen wäre ein guter Anfang.
-
...