Delphi-PRAXiS

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)

TechnikerHC 3. Mär 2008 16:28


Berechnung d. Gewinnschwelle in einer Tabelle mit StringGrid
 
Hi Leute!
Dieses Programm soll ich als Hausaufgabe erstellen; ich bekomme es aber irgendwie nich ganz hin. I need help!
bis jetzt sieht es ungefähr 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);

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;
until E>K
end;

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

mkinzler 3. Mär 2008 16:34

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
Welcome Master of Bugs:
Delphi-Quellcode:
form1.stringgrid1.cells[0,0]:='Anzahl';
Niemals auf eine feste Instanz der klasse verweisen!!!!
Lass form1 weg oder verwende self um die aktuelle Instanz zu referenzieren!

DeddyH 3. Mär 2008 16:50

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

Delphi-Quellcode:
St:=0;
Delphi-Quellcode:
E:=St*P;

Du rechnest immer mit 0 Stück.

[edit] Sry, habe die Zeile mit dem Hochzählen übersehen. [/edit]

Fussball-Robby 3. Mär 2008 16:56

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
Hey, erstmal: Was willst du mit dem Programm machen? Was ist das Problem?

TechnikerHC 3. Mär 2008 17:13

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
Also, das Bsp. für die Aufgabe war das wir unsere Abi- Zeitung erstellen und dabei fallen ja gewisse Kosten(fixe & variable) an usw...Und jedenfalls soll die Abi-Zeitung dann kostendecken hergestellt werden.Das heißt die Gewinnschwelle ist überschritten wenn der Erlös>Kosten ist und das ist dann das ende der prozedur aber bei mir hängt der sich dann immer auf....weiß jemand rat?

Apollonius 3. Mär 2008 17:17

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
Wie hast du denn in deinen Tests die Parameter gewählt?

TechnikerHC 3. Mär 2008 17:22

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
naja...200 fixkosten, 100 variable, und 10 Sückkosten...aber egal was ich nehme es hängt sich immer wieder auf...

Apollonius 3. Mär 2008 17:23

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
Was meinst du mit Variablen- und Stückkosten? Wie hoch ist der Preis?

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

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
Wies aussieht, hängt er in einer Endlosschleife, das heißt, der Erlös ist immer kleiner als die Kosten.
Entweder stimmt irgendwas mit dem Code nicht, oder eure Abi-Zeitung wird sich nicht lohnen :-D

TechnikerHC 3. Mär 2008 17:42

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
statt stückkosten meine ich eigentlich Preis,sorry...
und was muss ich in der rechnung ändern damit ich nich in eine endlosschleife komme?

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;

TechnikerHC 4. Mär 2008 16:03

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
weiß denn keiner wie man hier mit row in die zeile des break-even-points kommt?

TechnikerHC 4. Mär 2008 17:47

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
help... help???????

DP-Maintenance 4. Mär 2008 20:04

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Delphi-Frage

Matze 4. Mär 2008 20:07

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
Auch wenn es noch nicht im Kodex steht, ist es unerwünscht, wenn innerhalb von 24 Stunden gepusht wird. Um Ergänzungen hinzuzufügen kannst du deinen Beitrag editieren. Aber dieses Nach-Oben-Holen ist dreist, vor allem nach der kurzen Zeit.
Gib den Leuten die Chance dein Thema zu lesen und darüber nachzudenken.

Außerdem reicht ein Satzzeichen, in deinem Fall ein einziges Fragezeichen und keine 7. Das wirkt nämlich sehr aufdringlich und solche Themen beantworte ich daher erst gar nicht.

grenzgaenger 4. Mär 2008 21:34

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
was willst eigentlich darstellen? den BEP oder 'ne grafik... wie sich die kosten im verhältnis zu den erlösen verändern?

TechnikerHC 5. Mär 2008 13:55

Re: Berechnung d. Gewinnschwelle in einer Tabelle mit String
 
ne der break even point wird mir ja jetzt schon einem edit feld angezeigt(siehe quellcode)und jetzt möchte ich das nach der rechnung die stringgrid genau auf die zeile springt wo der break even point ist...und ich glaub das geht mit dem ereignis row oder so, ich weißaber nich wie man das anwendet....wenn mir das jetzt noch jemand erklären könnte das wäre super!danke schonma im voraus...
cheers

ps.
Zitat:

Matze: Auch wenn es noch nicht im Kodex steht, ist es unerwünscht, wenn innerhalb von 24 Stunden gepusht wird. Um Ergänzungen hinzuzufügen kannst du deinen Beitrag editieren. Aber dieses Nach-Oben-Holen ist dreist, vor allem nach der kurzen Zeit.
Gib den Leuten die Chance dein Thema zu lesen und darüber nachzudenken.

Außerdem reicht ein Satzzeichen, in deinem Fall ein einziges Fragezeichen und keine 7. Das wirkt nämlich sehr aufdringlich und solche Themen beantworte ich daher erst gar nicht.
matze du musst dich doch nich gleich so bescheißen, wenn hier ma einer n fragezeichen zu viel verwendet; aufdringlich oder nich, ich finds albern von dir deswegen keine hilfe anzubieten....naja egal

Fussball-Robby 5. Mär 2008 14:12

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

Zitat von TechnikerHC
Zitat:

Zitat von Matze
Auch wenn es noch nicht im Kodex steht, ist es unerwünscht, wenn innerhalb von 24 Stunden gepusht wird. Um Ergänzungen hinzuzufügen kannst du deinen Beitrag editieren. Aber dieses Nach-Oben-Holen ist dreist, vor allem nach der kurzen Zeit.
Gib den Leuten die Chance dein Thema zu lesen und darüber nachzudenken.

Außerdem reicht ein Satzzeichen, in deinem Fall ein einziges Fragezeichen und keine 7. Das wirkt nämlich sehr aufdringlich und solche Themen beantworte ich daher erst gar nicht.

matze du musst dich doch nich gleich so bescheißen, wenn hier ma einer n fragezeichen zu viel verwendet; aufdringlich oder nich, ich finds albern von dir deswegen keine hilfe anzubieten....naja egal

Erstens Nervt es wirklich, wenn man mehrere Beiträge nacheinander in kurzer Zeit postet, und außerdem wirst du zu diener Frage sicherlich was in der Delphi-Hilfe oder hier im Forum finden, insofern hat Matze da schon ganz recht


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:54 Uhr.

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