Hilfe zu Array



  • Ich grüße euch,
    ich bräuchte eine ein Struktogram und zwar zu folgendes : Eine Widerstandscharge soll simuliert und statistisch untersucht werden. Dazu soll mittels Zufallsgenerator 100 Widerstandswerte 91kOhm und +- 7 kOhm in ein Feld gespeichert werden.
    Der Durchschnitt (arithmetisches Mittel) und alle Feldelmente sind abschließend auszugeben.

    Ich danke euch für eure Hilfe und Unterstützung


  • Mod

    Was hat das mit C++ zu tun?
    Was hat das mit Arrays zu tun?
    Warum sollte dir jemand die Hausaufgaben machen wollen, wenn du keinerlei Eigeninitiative zeigst?



  • Keine Frage sehe ich ein, aber meine Frage bitte ich brauche doch Array um die Widerstandswerte zwischen zu speichern.
    Was mich verwundert und mich auch zum verzweifeln bringt ist die 91 kOhm und die +- 7 kOhm sind das Beispiele ?



  • VW 13 schrieb:

    Was mich verwundert und mich auch zum verzweifeln bringt ist die 91 kOhm und die +- 7 kOhm sind das Beispiele ?

    Wozu sind die Gold- oder Silberringe an der 4. Stelle gut?



  • Tut mir leid leid aber jetzt verwunderst du mich wirklich mit den Ringen .
    Schleifen sind ja hier auch überflüssig oder ?
    Tut mir leid leid bin Anfänger



  • also ein 91k-widerstand hat niemals genau 91k, sondern mal mehr, mal weniger. in deinem fall sollen die widerstände also werte von 91k - 7k = 84k bis 91k + 7k = 98k besitzen und du sollst jetzt mittels zufallsgenerator 100 werte zwischen 84k und 98k in ein array schreiben und daraus dann den mittelwert berechnen und dann mittelwert und alle werte des array auf dem bildschirm ausgeben.



  • Komisch... da nimmt man schon so lange am Unterricht teil, und plötzlich fragt der Lehrer nach Sachen, die man noch nie gemacht hat. Frechheit!



  • Ok liebe Dank Hans Klaus habe jetzt i=98 bis 84 For schleife und wie berechne ich jetzt den Mittelwert also (x1 +x2 +xn :100) *1/(Summe)



  • äh es gibt standardmethoden, um zufallszahlen zu erstellen, z.b. die funktion rand(). was meinst du mit "i= 98 bis 84 for schleife"?

    die rufst du auf und wenn sich die zahl im gewünschten bereich befindet, speicherst du sie im array ab. für den mittelwert durchläufst du das array mit einer for-schleife, addierst die jeweiligen werte zu der summe hinzu und dividierst dann durch die anzahl der elemente.



  • HansKlaus schrieb:

    und wenn sich die zahl im gewünschten bereich befindet, speicherst du sie im array ab.

    😋



  • ja es gibt auch noch die möglichkeit, zur untergrenze die zufallszahl modulus differenz obergrenze - untergrenze zu addieren, dann geht das alles etwas schneller, aber ich glaube, dass das erst einmal zuviel ist. 🙄


  • Mod

    Test mal, wie oft du im Durchschnitt rand aufrufen musst, um 15 Zahlen zwischen 84 und 98 zu erhalten. Und bevor du das nächste Mal solche Ratschläge gibst, denk vorher über solche Dinge nach.



  • Ok ich brauche ja das struktogramm ich schreibe also 1 zeile bei E also Widerstandswert dann 2 Zeile for Schleife wo drin steht I=98 bis 84
    3 Im Anweisungsblock dann E=Widerstandswert
    Zeile drunter Summe bilden
    Stimmt das bis dahin ?



  • Viel spannender finde ich doch, wie die Widerstände in dem Toleranzbereich verteilt sind. Ist das ein Gauß um 91 kΩ\Omega mit der Breite 7 kΩ\Omega - wobei, was für eine Breite eigentlich - Stddev, FWHM? Wie ist denn die Toleranz so definiert? Und wenn ein Widerstand in der Produktion um mehr als die Toleranz abweicht, ist das dann Ausschussware?

    Ich würde jedenfalls die Antwort gern wissen!

    Oder ist eine Gleichverteilung in diesem Bereich gewünscht?

    An HansKlaus:
    nimm noch einfach eine uniform_int_distribution<int> dist(91-7, 91+7) - das ist doch in jedem Fall einfacher + klarer als da irgendwie komisch mit modulo oder sonstwie rumzuhantieren und dann noch den Bereich zu verschieben!



  • wob schrieb:

    Viel spannender finde ich doch, wie die Widerstände in dem Toleranzbereich verteilt sind. Ist das ein Gauß um 91 kΩ\Omega mit der Breite 7 kΩ\Omega - wobei, was für eine Breite eigentlich - Stddev, FWHM? Wie ist denn die Toleranz so definiert? Und wenn ein Widerstand in der Produktion um mehr als die Toleranz abweicht, ist das dann Ausschussware?

    wenn man die widerstände hergestellt hat, werden die meine ich gemessen und je nachdem, wie stark sie von dem eigentlichen wert abweichen, in eine spezielle kiste einsortiert. im prinzip ist das eine umgedrehte gauß-kurve, weil die mit der geringsten abweichung ab seltensten vorkommen und daher entsprechend teuer sind.

    nimm noch einfach eine uniform_int_distribution<int> dist(91-7, 91+7) - das ist doch in jedem Fall einfacher + klarer als da irgendwie komisch mit modulo oder sonstwie rumzuhantieren und dann noch den Bereich zu verschieben!

    wieso bereich verschieben? du rechnest zur untergrenze 84 irgendeine zufallszahl von 0 - 14 dazu. nur hielt ich es für komisch, jemandem, der es offenbar nicht hinbekommt, lesend und schreibend mit einer schleife auf ein array zuzugreifen, auch noch mit sowas zu kommen, bzw. man hätte ja danach klären können, warum das programm so langsam läuft. 😃

    VW 13 schrieb:

    Ok ich brauche ja das struktogramm ich schreibe also 1 zeile bei E also Widerstandswert dann 2 Zeile for Schleife wo drin steht I=98 bis 84
    3 Im Anweisungsblock dann E=Widerstandswert
    Zeile drunter Summe bilden
    Stimmt das bis dahin ?

    äh ich glaube nicht. ich geb dir mal was vor, vielleicht verstehst du es ja dann. also ein mögliches programm könnte so aussehen:

    int main()
    {
    int array[100];
    int summe=0;
    int mittelwert;
    
    for(int i=0;i<100;i++)
    {
         array[i]=//hier die zufallswerte eintragen
         summe=//hier die elemente aufsummieren
    }
    
    mittelwert=//hier den mittelwert ausrechnen
    cout<<"Der Mittelwert lautet"//hier den mittelwert ausgeben
    cout<<"Die Widerstandswerte lauten"//einleitung zur ausgabe der widerstandswerte
    
    for(int i=0;i<100;i++)
    {
         cout<<//hier die widerstandswerte ausgeben
    }
    
    //programmende, evtl. konsolenfenster offen halten
    }
    


  • Für einen Widerstandswert ein int 😕
    Die sind doch nicht ganzzahlig (zumindest nicht mit Toleranz)

    HansKlaus schrieb:

    wenn man die widerstände hergestellt hat, werden die meine ich gemessen und je nachdem, wie stark sie von dem eigentlichen wert abweichen, in eine spezielle kiste einsortiert. im prinzip ist das eine umgedrehte gauß-kurve, weil die mit der geringsten abweichung ab seltensten vorkommen und daher entsprechend teuer sind.

    Das einzelne Messen der Widerstände ist zu aufwendig.
    Wenn, dann werden Stichproben gemessen und dann ganze Chargen in die Kisten sortiert.

    Dann bekommst du aber für die Reihen mit hohen Toleranzen eher eine Trampeltierkurve (mit zwei Höckern), da die Werte mit der niedrigen Toleranz in einer anderen Kiste sind.



  • DirkB schrieb:

    Für einen Widerstandswert ein int 😕
    Die sind doch nicht ganzzahlig (zumindest nicht mit Toleranz)

    das programm ist ja auch auf hochohmige widerstände von 91kOhm ausgelegt. selbst bei 0,5% toleranz hast du da noch abweichungen von 455Ohm.

    Das einzelne Messen der Widerstände ist zu aufwendig.
    Wenn, dann werden Stichproben gemessen und dann ganze Chargen in die Kisten sortiert.

    funktioniert das denn? angeblich soll das doch unglaublich schwer sein, die paste so gleichmäßig aufzutragen, dass die widerstandswerte halbwegs stabil sind.

    Dann bekommst du aber für die Reihen mit hohen Toleranzen eher eine Trampeltierkurve (mit zwei Höckern), da die Werte mit der niedrigen Toleranz in einer anderen Kiste sind.

    hast du ja im prinzip auch. aber ab der mitte des jeweiligen höckers fängt die vorherige bzw. nächste wertegruppe an.


Log in to reply