C-Programm: Min/Max Werte auslesen

hallo

möchte gerne die grösste bzw. kleinste flaeche angezeigt bekommen. habe schwierigkeiten, die bedingung
if(Amax>A)
A=Amax;
an die richtige stelle zu setzen (bzw. für Amin).

http://codepad.org/kK5hr2PS
 
AW: C-Programm: Min/Max Werte auslesen

Hi Ramataklan,

in etwa so ? :


Code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define g 9.81
#define sigb 270

int main () 
{
int i,e,f;
float b, h, t, A,Amax=0,Amin=999999, X, W, m, F, l;
printf("Enter Mass[kg]:");
scanf("%f",&m);
printf("Enter Lenght[mm]:");
scanf("%f",&l);
W=m*g*l*0.25/sigb;
printf("\n");
for (i=300;i<=1200;i++)
{
    for (e=400;e<=1200;e++)
    {
        for (f=10;f<=25;f++)
         {
             X=(i*pow(e,3)-(i-2*f)*pow(e-2*f,3))/(6*e);
             A=i*e-(i-2*f)*(e-2*f);
             if (X>W && X<1.0001*W && i<e)
             printf("W = %.1f mm^3 A = %.1f mm^2 with b = %d mm, h = %d mm and t = %d mm\n\n", X,A,i,e,f);

             // A_Max überprüfen
             if(A>Amax) Amax=A;

             // A_Min überprüfen
             if(A<Amin) Amin=A;
         }
    }
}

printf("Amax = %.1f mm^2 \n\n", Amax,);
printf("Amin = %.1f mm^2 \n\n", Amin,);
 
	system ("PAUSE");
	return 0;
}

Gruss Uwe
 
AW: C-Programm: Min/Max Werte auslesen

hallo uwe,

danke für die aufmerksamkeit erstmal. also beim starten des programms taucht ein fehler auf und zwar bei den letzten printf-anweisungen. da ist jeweils ein komma zuviel. ansonsten wird einfach der maximale und minimale querschnitt berechnet. diese haben jedoch unterschiedliche widerstandsmomente. mein ziel war es, aus den in der schleife ermittelten werten die herauszufiltern, welche Amin und Amax aufweisen. starte einfach mal das programm und gib z.b. m=40000 und l=27000 ein. dann kommt eine ganze reihe von lösungen die grösser w und kleiner 1.0001*w ist. wenn du dazwischen noch 2 nullen setzt verkürzt sich die liste deutlich und es wird klar, was gemeint ist.
 
AW: C-Programm: Min/Max Werte auslesen

stimmt da war ein Fehler in der Ausgabe,
aber eigentlich wollte ich dir nur das Prinzip für das Min und Max verdeutlichen

wo (in welcher Schleife) und bei welcher Bedingung das
reinprogrammiert werden soll musst du wissen
(ich hab deinen Text nicht verstanden)

so vielleicht : ??

Code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define g 9.81
#define sigb 270

int main () 
{
int i,e,f;
float b, h, t, A,Amax=0,Amin=999999, X, W, m, F, l;
printf("Enter Mass[kg]:");
scanf("%f",&m);
printf("Enter Lenght[mm]:");
scanf("%f",&l);
W=m*g*l*0.25/sigb;
printf("\n");
for (i=300;i<=1200;i++)
{
    for (e=400;e<=1200;e++)
    {
        for (f=10;f<=25;f++)
         {
             X=(i*pow(e,3)-(i-2*f)*pow(e-2*f,3))/(6*e);
             A=i*e-(i-2*f)*(e-2*f);
             if (X>W && X<1.0001*W && i<e) {
               printf("W = %.1f mm^3 A = %.1f mm^2 with b = %d mm, h = %d mm and t = %d mm\n\n", X,A,i,e,f);

               // A_Max überprüfen
               if(A>Amax) Amax=A;

               // A_Min überprüfen
               if(A<Amin) Amin=A;
             }
         }
    }
}

printf("Amax = %.1f mm^2 \n\n", Amax);
printf("Amin = %.1f mm^2 \n\n", Amin);
 
	system ("PAUSE");
	return 0;
}

wenn du dazwischen noch 2 nullen setzt verkürzt sich die liste deutlich und es wird klar, was gemeint ist.
sorry, mir wird ohne Aufgabestellung so nichts klarer

Gruss Uwe
 
Zuletzt bearbeitet:
AW: C-Programm: Min/Max Werte auslesen

wenn du den ursprünglichen code startest, gibst du die masse und laenge an. diese stehen für die traglast und die balkenlaenge. w ist das widerstandsmoment des balkens mit einem hohlrechteck-querschnitt. b steht für breite und h für höhe. t ist die profildicke normalerweise gaebe es t1 und t2, aber hab das vereinfacht zunaechst.
 
AW: C-Programm: Min/Max Werte auslesen

das ist alles nebensächlich...

die Frage lautet :

du hast 3 Schleifen (ineinander verschachtelt)

an welcher stelle (bzw. bei welchem Kriterium) von dem Programm
soll AMax berechnet (und ausgegeben) werden ?

Gruss Uwe
 
AW: C-Programm: Min/Max Werte auslesen

es werden schon die richtigen werte für Amin und Amax angezeigt. sie werden in der schleife berechnet, am ende sollen sie nur hervorgehoben werden.

hier ist es besser zu sehen, wenn man es mal testet mit den eingaben:
http://codepad.org/4KiTfSLK

wie könnte ich denn nun die entsprechenden werte W,b,h, und t ebenfalls anzeigen lassen, die zu Amin bzw. Amax gehören? wenn da nur 5 zeielen auftauchen, kann man es auch so ablesen, aber wenn es 50 oder mehr werden, siehts schon anders aus.
 
AW: C-Programm: Min/Max Werte auslesen

oh mann,

wieso gibts denn da eine Fläche die negativ ist ?!?

hier ein neuer Versuch :

Code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define g 9.81
#define sigb 270

int main ()
{
int i,e,f;
float b, h, t, A,Amax=-999999,Amin=999999, X, W, m, F, l;
float X0,X1;
int i0,e0,f0,i1,e1,f1;
printf("Enter Mass[kg]:");
scanf("%f",&m);
printf("Enter Lenght[mm]:");
scanf("%f",&l);
W=m*g*l*0.25/sigb;
printf("\n");
for (i=300;i<=1200;i++)
{
  for (e=400;e<=1200;e++)
  {
	for (f=10;f<=25;f++)
	 {
         X=(i*pow(e,3)-(i-2*f)*pow(e-2*f,3))/(6*e);
	 A=i*e-(i-2*f)*(e-2*f);
	 if (X>W && X<1.000001*W && i<e) {
		 printf("W = %.1f mm^3 A = %.1f mm^2 with b = %d mm, h = %d mm and t = %d mm\n\n", X,A,i,e,f);
		 // A_Max überprüfen
		 if(A>Amax) {
			 Amax=A;
			 X1=X;
			 i1=i;
			 e1=e;
			 f1=f;
		 }
		 // A_Min überprüfen
		 if(A<Amin) {
			 Amin=A;
        		 X0=X;
			 i0=i;
			 e0=e;
			 f0=f;
		 }
	 }
 }
}
}

printf("MAX : W = %.1f mm^3 A = %.1f mm^2 with b = %d mm, h = %d mm and t = %d mm\n\n", X1,Amax,i1,e1,f1);

printf("MIN : W = %.1f mm^3 A = %.1f mm^2 with b = %d mm, h = %d mm and t = %d mm\n\n", X0,Amin,i0,e0,f0);

	system ("PAUSE");
	return 0;
}
Gruss Uwe
 
AW: C-Programm: Min/Max Werte auslesen

AHHH !! was ist den das für eine Schrott Formatierung ?!? ...ich geb's auf.

musst eventuell die TABs selbst entfernen 8)
 
Top