Mit array Zahlen einlesen Mittelwert ausgeben



  • Mein erster Versuch mit array

    #include <iostream> 
    # include <cmath> 
    
    using namespace std; 
    
    int main(){ 
    
    int arr[50]; 
    int x,sum; 
    
    cout<<"Bitte Maximal 50 Zahlen eingeben ABBRUCH = 0"<<endl; 
    while(cin>>x && x!=0){ 
    
    for(int i=0;i<x;i++){     
        arr[i]=x;       
                        }                       
    for(int i=0;i!='/O';i++) {               
                    sum=arr[x+(x+1)]/i; 
    
                                       }                   
                    } 
    
    cout<<"Das arithmetische Mittel ist :::"<<sum<<endl; 
    
    }
    

    Danke für Eure Hilfe(besonders SeppJ) ohne euch hätte ich es nicht gelöst
    Beispiel gelöst!
    LG
    Markus


  • Mod

    Ich kann dir helfen, aber nur wenn du versprichst, dass du dieses mal deinen Eröffnungsbeitrag nicht sinnentstellend veränderst, nachdem die Frage beantwortet wurde. Das stört den Forenbetrieb ungemein, wenn du das machst.



  • SeppJ schrieb:

    Ich kann dir helfen, aber nur wenn du versprichst, dass du dieses mal deinen Eröffnungsbeitrag nicht sinnentstellend veränderst, nachdem die Frage beantwortet wurde. Das stört den Forenbetrieb ungemein, wenn du das machst.

    bitte gerne
    lg
    markus



  • #include <numeric>
    int main()
    {
      int Array[49];
      //Array füllen
      float Mittelwert = std::accumulate(Array, Array + 49, 0.0f) / 49;
    }
    


  • Überleg mal, was du in deinem Programm mit der Variable z machst, d.h. wie die sich verändert, und was das für die Arrayfelder bedeutet, die du füllst.



  • EOutOfResources schrieb:

    #include <numeric>
    int main()
    {
      int Array[49];
      //Array füllen
      float Mittelwert = std::accumulate(Array, Array + 49, 0.0f) / 49;
    }
    

    Array füllen in meinem Beispiel gelöst

    cout<<"Beliebig viele Zahlen eingeben"<<endl; 
    while(cin>>arr[z] && arr[z]!=0)
    

    Das Problem das ich in meinem Beispiel habe ist wie kann ich die einzelnen Werte addieren

    numeric darf ich nicht verwenden,


  • Mod

    Dein Programm bis hier hin ist ... nicht so toll. Da sollten wir Schritt für Schritt durchgehen.

    Als ersten Schritt wollen wir die Werte einlesen. Das geht bei dir gründlich schief, in jedweder Hinsicht.

    Zunächst einmal überlege dir, ob du wirklich beliebig viele Werte aufnehmen möchtest. Das wäre in C++ sehr einfach, aber Arrays sind das falsche Mittel, da würde man einen std::vector nehmen. Das ist so ähnlich wie ein Array, aber mit veränderlicher Größe.
    Was derzeit bei dir beim Einlesen schiefgeht: z ist immer gleich. Du schreibst immer an die gleiche Stelle. Du musst das z irgendwie erhöhen. Und falls du bei statischen Arrays bleibst, dann pass auf, dass du nicht über die Länge des Arrays hinaus schreibst. Wenn du deinen Code ausbessern möchtest, achte auf diese Punkte. Falls du vector benutzen möchtest (würde ich empfehlen, ist insgesamt einfacher), dann guck in deinem Lehrbuch mal dazu.



  • SeppJ schrieb:

    Dein Programm bis hier hin ist ... nicht so toll. Da sollten wir Schritt für Schritt durchgehen.

    Als ersten Schritt wollen wir die Werte einlesen. Das geht bei dir gründlich schief, in jedweder Hinsicht.

    Zunächst einmal überlege dir, ob du wirklich beliebig viele Werte aufnehmen möchtest. Das wäre in C++ sehr einfach, aber Arrays sind das falsche Mittel, da würde man einen std::vector nehmen. Das ist so ähnlich wie ein Array, aber mit veränderlicher Größe.
    Was derzeit bei dir beim Einlesen schiefgeht: z ist immer gleich. Du schreibst immer an die gleiche Stelle. Du musst das z irgendwie erhöhen. Und falls du bei statischen Arrays bleibst, dann pass auf, dass du nicht über die Länge des Arrays hinaus schreibst. Wenn du deinen Code ausbessern möchtest, achte auf diese Punkte. Falls du vector benutzen möchtest (würde ich empfehlen, ist insgesamt einfacher), dann guck in deinem Lehrbuch mal dazu.

    sorry ist ein Irrtum,

    die Maximale Größe ist 50 Zahlen Abbruch mit 0;

    cout sollte heißen "Bitte maximal 50 Zahlen eingeben Abbruch 0"

    Ich muss array lernen, vector kommt erst viel später.



  • markuswenczel schrieb:

    SeppJ schrieb:

    Dein Programm bis hier hin ist ... nicht so toll. Da sollten wir Schritt für Schritt durchgehen.

    Als ersten Schritt wollen wir die Werte einlesen. Das geht bei dir gründlich schief, in jedweder Hinsicht.

    Zunächst einmal überlege dir, ob du wirklich beliebig viele Werte aufnehmen möchtest. Das wäre in C++ sehr einfach, aber Arrays sind das falsche Mittel, da würde man einen std::vector nehmen. Das ist so ähnlich wie ein Array, aber mit veränderlicher Größe.
    Was derzeit bei dir beim Einlesen schiefgeht: z ist immer gleich. Du schreibst immer an die gleiche Stelle. Du musst das z irgendwie erhöhen. Und falls du bei statischen Arrays bleibst, dann pass auf, dass du nicht über die Länge des Arrays hinaus schreibst. Wenn du deinen Code ausbessern möchtest, achte auf diese Punkte. Falls du vector benutzen möchtest (würde ich empfehlen, ist insgesamt einfacher), dann guck in deinem Lehrbuch mal dazu.

    sorry ist ein Irrtum,

    die Maximale Größe ist 50 Zahlen Abbruch mit 0;

    cout sollte heißen "Bitte maximal 50 Zahlen eingeben Abbruch 0"

    Ich muss array lernen, vector kommt erst viel später.

    der erste Fehler ist arr[z]

    sollte ich da nur arr[] verwenden die Abbruchbedingung ist 0

    while(cin>>arr[] && arr[]!=0)

    ???



  • SeppJ schrieb:

    Dein Programm bis hier hin ist ... nicht so toll. Da sollten wir Schritt für Schritt durchgehen.

    Als ersten Schritt wollen wir die Werte einlesen. Das geht bei dir gründlich schief, in jedweder Hinsicht.

    Zunächst einmal überlege dir, ob du wirklich beliebig viele Werte aufnehmen möchtest. Das wäre in C++ sehr einfach, aber Arrays sind das falsche Mittel, da würde man einen std::vector nehmen. Das ist so ähnlich wie ein Array, aber mit veränderlicher Größe.
    Was derzeit bei dir beim Einlesen schiefgeht: z ist immer gleich. Du schreibst immer an die gleiche Stelle. Du musst das z irgendwie erhöhen. Und falls du bei statischen Arrays bleibst, dann pass auf, dass du nicht über die Länge des Arrays hinaus schreibst. Wenn du deinen Code ausbessern möchtest, achte auf diese Punkte. Falls du vector benutzen möchtest (würde ich empfehlen, ist insgesamt einfacher), dann guck in deinem Lehrbuch mal dazu.

    Das ist die Aufgabenstellung Lesen Sie beliebig viele (max. 50) Zahlen (Abschluss mit dem Wert 0) ein,
    speichern Sie diese in einem Feld und geben Sie Mittelwert aus

    Das ein vector einfacher ist und es viele Möglichkeiten gibt das zu lösen ist mir mittlerweile klar aber ich möchte die Beispiele lösen und die jetzigen sind alle mit array -- vector kommt viel später erst vor
    lg
    markus



  • pumuckl schrieb:

    Überleg mal, was du in deinem Programm mit der Variable z machst, d.h. wie die sich verändert, und was das für die Arrayfelder bedeutet, die du füllst.

    Verstehe muss ich jetzt mal nachlesen irgendwie bin ich da am Holzweg danke für den Tip


  • Mod

    Ich muss array lernen, vector kommt erst viel später.

    Damit wir uns richtig verstehen, ist das ein Buch oder ein Lehrer?
    Buch -> wegwerfen
    Lehrer -> Du Armer...

    Ansonsten zeig mal her, welche Gedanken du dir über das Einlesen der Werte gemacht hast, anstatt auf die Komplettlösung zu warten. Du hast jede menge Tipps bekommen. Du musst beim Einlesen dafür sorgen, dass der Index des Arrays irgendwie hochgezählt wird. Weiterhin musst du 3 Dinge überprüfen: Ist cin noch gültig (prüfst du schon), war die Eingabe 0 (prüfst du schon), ist der Index größer 48 (das prüfst du noch nicht und dein Array hat 49 Elemente, nicht 50). Wenn du diese 4 Sachen nach C++ übersetzt, hast du die Werte eingelesen.



  • SeppJ schrieb:

    Ich muss array lernen, vector kommt erst viel später.

    Damit wir uns richtig verstehen, ist das ein Buch oder ein Lehrer?
    Buch -> wegwerfen
    Lehrer -> Du Armer...

    Das ist ein Kurs auf der Uni Wien für Wirtschaftsinformatik
    Einführung in die Programmierung

    Jetzt bin ich bei HÜ4
    von 9

    Die ersten drei habe ich schon

    Das Buch ist von Stoustrup denke das ist sehr gut aber schwierig
    Englisch und sehr viel Inhalt der nur kurz erläutert wird..

    Ansonsten zeig mal her, welche Gedanken du dir über das Einlesen der Werte gemacht hast, anstatt auf die Komplettlösung zu warten. Du hast jede menge Tipps bekommen. Du musst beim Einlesen dafür sorgen, dass der Index des Arrays irgendwie hochgezählt wird. Weiterhin musst du 3 Dinge überprüfen: Ist cin noch gültig (prüfst du schon), war die Eingabe 0 (prüfst du schon), ist der Index größer 48 (das prüfst du noch nicht und dein Array hat 49 Elemente, nicht 50). Wenn du diese 4 Sachen nach C++ übersetzt, hast du die Werte eingelesen.



  • SeppJ schrieb:

    Ich muss array lernen, vector kommt erst viel später.

    Damit wir uns richtig verstehen, ist das ein Buch oder ein Lehrer?
    Buch -> wegwerfen
    Lehrer -> Du Armer...

    Ansonsten zeig mal her, welche Gedanken du dir über das Einlesen der Werte gemacht hast, anstatt auf die Komplettlösung zu warten. Du hast jede menge Tipps bekommen. Du musst beim Einlesen dafür sorgen, dass der Index des Arrays irgendwie hochgezählt wird. Weiterhin musst du 3 Dinge überprüfen: Ist cin noch gültig (prüfst du schon), war die Eingabe 0 (prüfst du schon), ist der Index größer 48 (das prüfst du noch nicht und dein Array hat 49 Elemente, nicht 50). Wenn du diese 4 Sachen nach C++ übersetzt, hast du die Werte eingelesen.

    Mein Versuch allerdings abbruch nach Eingabe von einer Zahl:.

    #include <iostream>
    # include <cmath>
    
    using namespace std;
    
    int main(){
    
    int arr[50];
    int x,sum;
    
    cout<<"Bitte Maximal 50 Zahlen eingeben ABBRUCH = 0"<<endl;
    while(cin>>x && x!=0){
    
    for(int i=0;i<x;i++){    
        arr[i]=x;       
                        }                       
    for(int i=0;i!='/O';i++) {               
                    sum=arr[x+(x+1)]/i;
    
                                       }                   
                    }
    
    cout<<"Das arithmetische Mittel ist :::"<<sum<<endl;
    
    }
    

  • Mod

    Oje. Zwei Dinge die dir konkret helfen sollten:
    1. Rück mal vernünftig ein, dann siehst du, dass da allerlei in der Logik nicht stimmt.
    2. Nimm mal vernünftige Namen für deine Variablen. Du benutzt das x in mindestens drei verschiedenen Bedeutungen wild durcheinander, daher geht das auch schief. Ebenso das i, welches bei dir in einer Zeile zwei verschiedene Bedeutungen hat. Die Namen der Variablen seien ganze deutsche oder englische Wörter.

    Und noch ein paar allgemeine Tipps:
    Du strauchest an den Grundlagen. Lass mal all die Mittelwertberechnungen weg und konzentrier dich auf das einfachste, das Einlesen, damit du da dran lernen kannst.

    Ich gebe dir mal drei Aufgaben. Du magst lachen, weil sie sich leicht anhören, aber ich glaube sie täten dir ganz gut:
    1. Lies überhaupt eine Zahl ein und gib sie wieder aus
    2. Lies eine Zahl ein und gib sie 10x aus. Benutze dazu eine Schleife.
    3. Lies 10 Zahlen ein und gib sie danach wieder aus. Keine Nebenbedingungen wie dass du prüfst ob die Zahl 0 war oder ob cin noch gut ist. Einfach 10 Zahlen lesen und ausgeben. Benutze dazu zwei Schleifen.



  • Du bist arm dran mit deinen bisherigen Versuchen. Aber besser 'Arm dran' als 'Arm ab'! 🙂 Es fehlen dir noch einige Grundkenntnisse der Ablaufsteuerung mit while- und for-Schleifen. Beginne am besten so: Alle Zahlen mit while einlesen bis Abbruchkriterium - du wolltest eine Zahl Null. Zähler für die Anzahl der eingelesenen Zahlen einbauen und die Zahlen in einem Array speichern. Dann mit einer for-Schleife aus den Zahlen des Arrays den gewünschten Mittelwert bestimmen.

    edit: SeppJ, du bist sehr geduldig und setzt mit deinen Ratschlägen tiefer an. Aber so oder so ähnlich fängt jeder mal an. Auch dafür muss Platz hier im Forum sein. Helfen wir ihm beim Lernen. Nur lernen muss er dann selbst!



  • Ich bin nicht so auf Eigenleistung fixiert, sondern eher darauf, daß die Antwort auf fruchtbaren Boden fällt. Das kann ich hier nicht erkennen.



  • SeppJ schrieb:

    Oje. Zwei Dinge die dir konkret helfen sollten:
    1. Rück mal vernünftig ein, dann siehst du, dass da allerlei in der Logik nicht stimmt.
    2. Nimm mal vernünftige Namen für deine Variablen. Du benutzt das x in mindestens drei verschiedenen Bedeutungen wild durcheinander, daher geht das auch schief. Ebenso das i, welches bei dir in einer Zeile zwei verschiedene Bedeutungen hat. Die Namen der Variablen seien ganze deutsche oder englische Wörter.

    Und noch ein paar allgemeine Tipps:
    Du strauchest an den Grundlagen. Lass mal all die Mittelwertberechnungen weg und konzentrier dich auf das einfachste, das Einlesen, damit du da dran lernen kannst.

    Ich gebe dir mal drei Aufgaben. Du magst lachen, weil sie sich leicht anhören, aber ich glaube sie täten dir ganz gut:
    1. Lies überhaupt eine Zahl ein und gib sie wieder aus
    2. Lies eine Zahl ein und gib sie 10x aus. Benutze dazu eine Schleife.
    3. Lies 10 Zahlen ein und gib sie danach wieder aus. Keine Nebenbedingungen wie dass du prüfst ob die Zahl 0 war oder ob cin noch gut ist. Einfach 10 Zahlen lesen und ausgeben. Benutze dazu zwei Schleifen.

    3. Das einlesen ist kein Problem

    for(int i=0;i<10;i++){
    cout<<"Bitte Zahlen eingeben"<<endl;
    cin>>zahl;

    }

    aber dann ich muss ja die einzelnen Werte zwischenspeichern um Sie später wieder
    ausgeben zu können.

    Verstehe ich nicht sorry


  • Mod

    markuswenczel schrieb:

    aber dann ich muss ja die einzelnen Werte zwischenspeichern um Sie später wieder
    ausgeben zu können.

    Verstehe ich nicht sorry

    Deswegen sollst du das ja auch lernen! Meinst du die Aufgaben habe ich mir ausgedacht, um dich zu pisacken? Die sind pädagogisch wertvoll!

    Mittlerweile solltest du doch wenigstens mal die ersten beiden Kapitel in irgendeinem Lehrbuch angeguckt haben und wenigstens die Grundlagen zu Arrays angelesen haben. Davon ist überhaupt gar nichts zu merken, deshalb nehme ich mal an, dass du es nicht getan hast. Wie soll man dir da helfen, wenn du selber nur da sitzt und nichts tust? Du stellst seit Tagen Fragen zu Arrays und hast genau gar nichts gelernt und nichts selber gemacht. Im Leben bekommt man nicht alles umsonst serviert und beim Programmieren noch viel weniger.

    Wenn du eine Komplettlösung möchtest, dann biete etwas Geld an und stell einen Antrag im Projekteforum:
    http://www.c-plusplus.net/forum/f11
    Scorcher24 ist gewiss glücklich über diese Aufgabe:
    http://www.c-plusplus.net/forum/290561



  • SeppJ schrieb:

    markuswenczel schrieb:

    aber dann ich muss ja die einzelnen Werte zwischenspeichern um Sie später wieder
    ausgeben zu können.

    Verstehe ich nicht sorry

    Deswegen sollst du das ja auch lernen! Meinst du die Aufgaben habe ich mir ausgedacht, um dich zu pisacken? Die sind pädagogisch wertvoll!

    Mittlerweile solltest du doch wenigstens mal die ersten beiden Kapitel in irgendeinem Lehrbuch angeguckt haben und wenigstens die Grundlagen zu Arrays angelesen haben. Davon ist überhaupt gar nichts zu merken, deshalb nehme ich mal an, dass du es nicht getan hast. Wie soll man dir da helfen, wenn du selber nur da sitzt und nichts tust? Du stellst seit Tagen Fragen zu Arrays und hast genau gar nichts gelernt und nichts selber gemacht. Im Leben bekommt man nicht alles umsonst serviert und beim Programmieren noch viel weniger.

    Wenn du eine Komplettlösung möchtest, dann biete etwas Geld an und stell einen Antrag im Projekteforum:
    http://www.c-plusplus.net/forum/f11
    Scorcher24 ist gewiss glücklich über diese Aufgabe:
    http://www.c-plusplus.net/forum/290561

    ich verstehe was du meinst ich habe mich mit deiner Aufgabe beschäftigt aber
    noch keine lösung gefunden
    wenn du sagst das das gehen muss dann ok
    In dem Buch das ich gelesen habe
    Andre Willms
    Addison Wesley ist über array gerade mal soviel drinnen 3 Seiten, naja das ist net viel


Anmelden zum Antworten