Maximalwert in C anzeigen lassen.

Aha..... eine Einheit namens "Quadratzentimeter" beschreibt also ein Volumen..... *facepalm*

Definier doch einfach ein Variable MaxHoehe, und setz diese innerhalb der If-Klausel auf die aktuell verwendete Höhe.
 
Aha..... eine Einheit namens "Quadratzentimeter" beschreibt also ein Volumen..... *facepalm*

Definier doch einfach ein Variable MaxHoehe, und setz diese innerhalb der If-Klausel auf die aktuell verwendete Höhe.

Ja habe es geändert xD. Aber wenn ich einen if command mache und dann die maxhoehe auf die aktuell verwendete Höhe setzte bleibt es ja im Endeffekt gleich, weil die aktuell verwendete höhe ja die letzte war, die das Programm verwendet hat...
also wenn die letzte höhe zb die 25 ist, nimmt er ja die aktuell verwendete, also die 25, obwohl das maxVolumen die Höhe 13 hat oder so.
 
Aircode!
C:
//in der Schleife
{
  
    ...
      
    if(volumen >= max)
    {
        //überschreibe den max Wert, aber wie?
        max=volumen;
        maxhoehe=hoehe;
      
    } 
  
  
}
 
Man sollte hier vielleicht mal sagen, dass OP zwar das Maximalvolumen wollte, aber bezüglich der Höhe die Höhe, die zum Maximalvolumen korrespondiert. Funktional wäre das alles so schön einfach :)
 
Aircode!
C:
//in der Schleife
{
 
    ...
     
    if(volumen >= max)
    {
        //überschreibe den max Wert, aber wie?
        max=volumen;
        maxhoehe=hoehe;
     
    }
 
 
}

Ok krass das funktioniert, aber kein Plan wie...

An sich ist das Programm fertig, aber eine sache ist noch, wenn ich die Eingabe wiederhole und dann rechnen lasse, dann zeigt er den maximalen Volumenwert der letzten Rechnung an, nur wenn das Volumen größer ist, als der der Wert der letzten rechnung größer ist, überschriebt er dass. Vielleicht hängt es mit der "volumen >= max" zusammen. Das ist jetzt der gesamte Quellcode
C:
#include <stdio.h>

int main()
{
    float laenge;
    float breite;
    float hoehe;
    float volumen;
    float wiederholung;
    float laenge1;
    float hoehestop1;
    float max=0;
    float maxhoehe;

    printf("\n\tV o l u m e n b e r e c h n u n g\n");

    do
    {
        volumen='\0';                 //hier versuche ich das "zurückzusetzen", klappt aber nicht
        hoehe='\0';

        printf("\nGeben Sie die Laenge ein: ");
        scanf("%f",&laenge);
        fflush(stdin);

        printf("\nGeben Sie die Breite ein: ");
        scanf("%f",&breite);
        fflush(stdin);


        hoehe = breite / 4;

        hoehe = hoehe - hoehe;


        laenge1 = laenge / 2;

        hoehestop1 = breite / 2;

     do
        {
            volumen = (laenge - 2 * hoehe) * (breite - 2 * hoehe) * hoehe;
            hoehe = hoehe + 0.5;

            printf("\nHierbei betreagt das Volumen %.2f  und die Hoehe %.2f ...",volumen,hoehe);

            if (volumen >= max) {
                    max = volumen;
                    maxhoehe=hoehe;
            }
        }
        while (hoehe <= hoehestop1);

        printf("\nDas maximale Volumen betraegt %.2f kubikzentimeter und die Hoehe ist %.2f cm.",max,maxhoehe-0.5);
        fflush(stdin);

        printf("\nDruecken Sie 1 um das Programm zu wiederholen, 2 um es zu beenden: ");
        scanf("%f",&wiederholung);
    }
    while(wiederholung != 2);


    printf("\n");
    system("pause");
}
 
Ok krass das funktioniert, aber kein Plan wie...

An sich ist das Programm fertig, aber eine sache ist noch, wenn ich die Eingabe wiederhole und dann rechnen lasse, dann zeigt er den maximalen Volumenwert der letzten Rechnung an, nur wenn das Volumen größer ist, als der der Wert der letzten rechnung größer ist, überschriebt er dass. Vielleicht hängt es mit der "volumen >= max" zusammen. Das ist jetzt der gesamte Quellcode
Uhmmm? Alle Variablen bei Schleifen-Start mit default-Werten initialisieren (Bsp. mit -1)?
Code:
 do
    {
        volumen='\0';                 //hier versuche ich das "zurückzusetzen", klappt aber nicht
        hoehe='\0';                     
        max=-1;
        maxhoehe=-1;
 
Das ist die Formel
volumen = (laenge - 2 * hoehe) * (breite - 2 * hoehe) * hoehe;
Das heisst umformen
f(H)=(L-2*H)*(B-2*H)*H
f(H)=(L*B-2*L*H-2*B*H+4*H²)*H
f(H)=L*B*H-2*L*H²-2*B*H²+4*H³
f(H)=4H³-2H²(L+B)+LBH
f'(H)=12H²-4(L+B)H+LB
f''(H)=24H-4(L+B)

Hab ich irgendwo nen Fehler?
Für L=300 und B=50 ergibt sich dann
f(H)=4H³-700H²+17500H
f'(H)=12H²-1400H+17500
f''(H)=24H-1400
 
Zuletzt bearbeitet:
Zurück