Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Berechnung d. Gewinnschwelle in einer Tabelle mit StringGrid (https://www.delphipraxis.net/109562-berechnung-d-gewinnschwelle-einer-tabelle-mit-stringgrid.html)

Fussball-Robby 3. Mär 2008 17:45

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
Ich würde erstmal dafür sorgen, dass alles nur z.B. 200mal durchlaufen wird, damit du überhaupt sehen kannst, was passiert:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
VAR
KF, KV, P, K, E, G: real;
St,i: integer;

begin
i:=0;

KF:=strtofloat(form1.edit1.text);
KV:=strtofloat(form1.edit2.text);
P:=strtofloat(form1.edit3.text);

St:=0;

repeat
  K:=KF+St*KV;          //Kosten=Festkosten+Sück*variable Kosten

  E:=St*P;             // Erlös=Stück*Preis

  G:=E-K;              // Gewinn=Erlös-Kosten
with form1.stringgrid1 Do
    begin
      cells[0,St+1]:= inttostr(St);
      cells[1,St+1]:= floattostr(K);
      cells[2,St+1]:= floattostr(E);
      cells[3,St+1]:= floattostr(G);
      St:=st+1;
      rowcount:=rowcount+1;
    end;
    inc(i)

until (E>K) or (i>=200);
end;

DeddyH 3. Mär 2008 17:50

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
Und lass das Form1 weg (außer im Funktionskopf).

TechnikerHC 3. Mär 2008 18:07

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
hey, danke!jetzt läuft es.
hab da ma noch ne kleine frage:wofür steht denn das inc(i)?das kenn ich noch nich...
cheers

hoika 3. Mär 2008 18:08

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
Hallo,

du hast einfach einen Gedankenfehler in deinen Variablen.
Solange der variable Preis pro Zeitung größer als dein Stückpreis
(also der Verkaufspreis) ist,
wirst du nie einen Gewinn erzielen.
Mit jeder Zeitung erhöhen sich die Kosten.

Nimm mal als Bsp. Stückpreis 10, variabler Preis 5.


Heiko
PS: Inc(i) ist kurz für i:= i+1;

TechnikerHC 3. Mär 2008 18:14

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
ich danke euch allen!

Fussball-Robby 3. Mär 2008 18:15

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
Zitat:

Zitat von TechnikerHC
ich danke euch allen!

Kein Problem, hab im Moment eh nichts zu tun :wink:

TechnikerHC 3. Mär 2008 18:45

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
noch ne kleine frage: is die zusätzliche variable i unbedingt notwendig, oder geht das auch ohne das i?(ohne wieder in die endlosschleife zu gelangen)
cheers

Fussball-Robby 3. Mär 2008 18:51

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
Lass dir was einfallen, du könntest zum Beispiel abbrechen, wenn Einnahmen-Gewinn < -1000 oder so etwas

hoika 3. Mär 2008 18:54

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
Hallo,

es gibt keine Endlosschleife,
wenn dein Stückpreis > den Stückkosten (var. Kosten) ist.

Prüfe das einfach vorher ab.

OK, wenn der Stückpreis 10 Eur, die Stückkosten 9,99 sind,
könnte die Schleife etwas dauern ;)


Heiko

TechnikerHC 4. Mär 2008 15:03

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
hi leute!
ich soll mit dem programm jetzt noch den break-even-point(Erlös=Kosten) ausrechnen und in einem weiteren edit feld anzeigen(das hat eigentlich ganz gut geklappt...)
und dann soll nach der rechnung die tabelle genau zum feld des break evenpoints springen...ich glaube das geht irgendwie mit dem befehl row...naja an der stelle brauche ich hilfe!
cheers your technikerhc

ps. bis jetzt sieht es so aus:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
VAR
KF, KV, P, K, E, G: real;
St: integer;



begin

KF:=strtofloat(form1.edit1.text);
KV:=strtofloat(form1.edit2.text);
P:=strtofloat(form1.Edit3.text);


If P>KV
  then begin
  St:=0;
    repeat
      K:=KF+St*KV;          //Kosten=Festkosten+Sück*variable Kosten

      E:=St*P;             // Erlös=Stück*Preis

      G:=E-K;              // Gewinn=Erlös-Kosten
    with form1.stringgrid1 Do
      begin
        cells[0,St+1]:= inttostr(St);
        cells[1,St+1]:= floattostr(K);
        cells[2,St+1]:= floattostr(E);
        cells[3,St+1]:= floattostr(G);
        St:=st+1;
        rowcount:=rowcount+1;
      end;             // end von with do begin...
    until E>K;
      form1.StringGrid1.Row:=St;
      St:=Round(KF/(P-KV));
      form1.edit4.text:=inttostr(St);
End         // end von then begin
    else
      begin
      showmessage('Die variablen Kosten sind größer als der Preis');
      end;             // end der if schleife
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
with form1.stringgrid1 Do
  begin
    cells[0,0]:='Anzahl';
    cells[1,0]:='Kosten';
    cells[2,0]:='Erlös';
    cells[3,0]:='Gewinn';
  end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:21 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz