Schleife



  • morgen, ich hab ein problem ^^

    Ich soll mit einer Kopfgesteurten Schleife die Temperatur bis zu 10 min ausgeben.

    Nur hab ich 0 Plan wie ich das in einer Schleife machen könnte hat vielleicht wer n tipp ?

    #include <iostream>
    using namespace std;
    main()
    {
    
    long double um,sup,erg,erg2;
    
    cout<<"Wassertemperatur: ";
    cin>>sup;
    
    cout<<"Umgebungstemperatur: ";
    cin>>um;
    
    erg = sup - um - 10 ;
    
    erg2 = erg - 10;
    
    cout<<"1 min: "<<erg<<"\n";
    cout<<"2 min: "<<erg2<<"\n";
    
        system("PAUSE");
    }
    


  • Ich verstehe gar nicht so recht, was das Programm machen soll. Erklär das bitte mal genauer. Hast du denn überhaupt schonmal eine Schleife programmiert?

    Kopfgesteuerte Schleife:

    do {
      //mache irgendwas
    }while(true);  //Abbruchbedingung
    


  • 10 min? heißt das nun 10 minuten oder bis minimal zur Temperatur 10 ab der Eingabe des Users?



  • Das Wasser kühlt pro min 10% seiner Differenz aus Wassertemperatur und Umgebungstemperatur ab.

    Nach jeder Minute soll die Temperatur des Wassers angegeben werden.

    Anfangstemperatur vom Wasser 90 C° Umgebungstemperatur 21 C°.

    Ja eine Schleife habe ich schon öfters Programmiert.



  • _matze schrieb:

    Ich verstehe gar nicht so recht, was das Programm machen soll. Erklär das bitte mal genauer. Hast du denn überhaupt schonmal eine Schleife programmiert?

    Kopfgesteuerte Schleife:

    do {
      //mache irgendwas
    }while(true);  //Abbruchbedingung
    

    Das ist keine kopfgesteuerte Schleife.



  • @hihi, sie dich mal nach clock() um, damit sollte es möglich sein, nach jeder minute eine berechnung, bzw eine ausgabe zu machen.Fals ich falsch liege, bitte korrigieren.



  • Firefighter schrieb:

    damit sollte es möglich sein, nach jeder minute eine berechnung, bzw eine ausgabe zu machen.

    Ich glaube nicht, dass das Programm in Echtzeit laufen muss 😉



  • ohh 😃 Gut, naja es wäre aber eine Lösung 🙂 Dann soll er uns sagen wie er die 10min darstellen will.



  • Ne nicht nach Echtzeit^^



  • Dafür soll eine Fußgesteuerte Schleife verwendet werden.

    Die Verarbeitungsphase der Daten soll in ein Unterprogramm ausgelagert werden.



  • ja wie dann? ^^ soll das Programm einfach nur die Rechnung beginnend von 90° bis 21° ausführen und anzeigen oder was?



  • Vermutlich soll das so aussehen:

    0 min: 90°
    1 min: 83.1°
    2 min: 76.89°
    usw.



  • hier mal ein bisschen pseudocode

    mache
    {
       weise temperatur den wert der alten temperatur abzüglich der 10% zu
    }solange die temperatur nicht kleiner als 21.00° ist
    

    😃 ich hoffe das kann man so machen 🙂



  • Dann solltest du aber die Formel ändern und an Stelle von erg und erg2 ein Array nehmen (falls du die werte überhaupt zwischenspeichern willst).
    also so erstmal...

    #include <iostream>
    using namespace std;
    
    int main( int, char** )
    {
    	enum { MIN = 10 };
    
    	double um, sup;
    	double erg[MIN];
    
    	cout<<"Wassertemperatur: ";
    	cin>>sup;
    
    	cout<<"Umgebungstemperatur: ";
    	cin>>um;
    
    	int i;
    	for( i = 0; i != MIN; ++i )
    	{
    		sup -= ( sup - um ) * 0.1;
    		erg[i] = sup;
    	}
    
    	for( i = 0; i != MIN; ++i )
    	{
    		cout << endl << (i + 1) <<" min:\t" << erg[i] << " C;";
    	}
    	cout << endl;
    
    	system("PAUSE");
    	return 0;
    }
    

    // EDIT:

    Ich soll mit einer Kopfgesteurten Schleife die Temperatur bis zu 10 min ausgeben.
    (...)
    Dafür soll eine Fußgesteuerte Schleife verwendet werden.

    ...?



  • ich habe es so gelöst:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        float anfangstemp = 90.00;
        float endtemp = 21.00;
        int i = 0;
    
        do
        {
            cout<<"Temp nach "<<i<<" min: "<<anfangstemp<<endl;
            anfangstemp = anfangstemp -(anfangstemp *0.1);
    
            i = i+1;
        }while(anfangstemp >endtemp);
    }
    


  • @Firefighter warum wird das bei deinem Code bis zu 13 min berechnet ?



  • Weil bei der nächsten Berechnung die Temperatur sonst unter 21° fallen würde, und das wolltest du ja nicht, zumindest habe ich das so verstanden. Von 90° bis 21°



  • @Firefighter: Formel falsch, setzen, 6. 😉 Außerdem ist 21°C die Umgebungstemperatur, nicht die Endtemperatur.

    Äh, also eigentlich sollte das hier eher den Anforderungen entsprechen (Kopfgesteuert, 10 Min. Betrachtungszeitraum, Berechnung jede Minute):

    double dWasserTemp, dUmgebTemp;
    int iMinuten, iMinutenMax;
    
    iMinuten = 10;
    iMinutenMax = iMinuten;
    dWasserTemp = 90.0;
    dUmgebTemp = 21.0;
    while (iMinuten >= 0)
    {
    	cout<<"Temp nach "<<iMinuten<<" Min.: "<<DWasserTemp<<endl;
    	dWasserTemp -= (dWasserTemp - dUmgebTemp) / 10;
    	--iMinuten;
    }
    

    Was ist denn nun die Aufgabenstellung? Die ist nicht klar ersichtlich, respektive teilweise widersprüchlich....



  • Ein Topf Wasser kühlt pro minute um 10% seiner differenz aus Wassertemperatur und Umgebungstemperatur ab. Es soll die Temperatur des Wassers nach jeder Minute angegeben werden, wenn man als Anfangstemperatur 90 °C annimmt. Die Umgebungstemperatur liegt in der Regel bei 21 °C.



  • Über welchen Zeitraum? 10 Minuten? Respektive, was ist die Abbruchbedingung?
    War da nicht noch was mit Kopf- oder Fußgesteuerter Schleife?
    Sollte nicht die Berechnung in eine Funktion ausgelagert werden?


Anmelden zum Antworten