Komme nicht weiter. Was ist falsch?



  • Hallo zusammen,
    irgendwie komme ich mit meiner Lösung nicht weiter.
    Die Aufgabe lautete: Ein Karton mit einer best. Länge und Dicke(gibt man ein) wird auf einen Kern mit Durchmesser 250mm aufgerollt.
    Das Programm soll jeweils bei 20% 40% 60% 80% und 100% der Länge den radialen Abstand vom Kernmittelpunkt angeben

    Hier mein Weg:

    #include <iostream>
    #include <iomanip>

    using namespace std;

    int main()
    {

    float l = 0 ;
    float pi = 3.141592654;
    float laenge;
    float r = 125 ;
    float dicke;
    float stueck;
    int i = 1;

    cout << "Geben Sie einen Wert für die gewünschte Länge in Metern ein:" << endl;
    cin >> laenge;
    cout << "Geben Sie einen Wert für die gewünschte Dicke in Zehntelmillimetern ein:" << endl;
    cin >> dicke;
    cout << "" << endl;

    laenge = laenge * 1000;

    for ( i = 1; i < 5; i++)
    {
    stueck = (laenge/5)*i;

    while ( l < stueck)
    {

    r = r + dicke;
    l = l + 2 * pi * r;

    cout << "Die " << i << ". Marke liegt bei "<< r << " mm" << endl;
    }}
    return 0;
    }

    Der gibt mir auch nicht
    Die 1. Marke ...
    Die 2. Marke ...
    usw aus.
    Was passt nicht?

    Vielen Dank!



  • Hallo lucasi,

    ich denke der Ansatz passt schon nicht. Mal angenommen, der Karton wird gleichmäßig aufgewickelt; d.h. der Radius R soll überall gleichmäßig zunehmen. r sei der Radius des Kerns, x die Länge des bereits aufgewickelten Kartons und d seine Dicke - also:
    (R2r2)π=xd(R^2-r^2)\pi = xd
    und R berechnet sich dann in Abhängigkeit zu x
    R=xdπ+r2R=\sqrt{ \frac{xd}{\pi} + r^2 }
    bzw. als C++-Funktion

    const double PI = std::acos( -1.0 );
        double R = std::sqrt( x * d / PI + r * r );
    

    .. den Rest überlaß' ich Dir

    Gruß
    Werner


Anmelden zum Antworten