Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Verhältnis Gleichung (https://www.delphipraxis.net/115406-verhaeltnis-gleichung.html)

widowmaker2k7 11. Jun 2008 16:18


Verhältnis Gleichung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo liebe Delphipraxis-Gemeinde

Ich steh vor einem Problem, wo ich mir seit 2 Tagen ein wenig den Kopf zerbreche.

wir müssen für die schule ein Prog machen das 2 Zufallszahlen zwischen 0 und 100 ausgibt und prüft ob sie über 50 liegen oder nicht.
is ja bis dahin ganz einfach

wir sind grade dabei die verschachtelung mit der for schleife zu machen und wir müssen in der schleife ein kleines diagramm machen dass die beiden zufallszahlen graphisch darstellt.
aus chars. also ich habe | genommen neben dem Y die taste

hier der quelltext:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  close;
end;

procedure TForm1.Button1Click(Sender: TObject);
var a, b, zahl1, zahl2: integer;
    zeichen:char;
    diagramm1, diagramm2: string[100];
begin
  randomize;
  zeichen:='|';
  zahl1 := random(100)+1;
  zahl2 := random(100)+1;
  label3.Caption:=inttostr(zahl1);
  label4.caption:=inttostr(zahl2);
  if zahl1 > 50 then
    label5.caption:=('ja')
  else
    label5.caption:=('nein');
  if zahl2 > 50 then
    label6.caption:=('ja')
  else
    label6.caption:=('nein');
  for a:= 1 to zahl1 do
    diagramm1 := diagramm1+zeichen;
  label7.caption:=(diagramm1);
  for b:= 1 to zahl2 do
    diagramm2 := diagramm2+zeichen;
  label8.caption:=(diagramm2);
end;

end.
im anhang das bild dazu.

Das Problem liegt darin

wir müssen es so machen, dass der balken für die größere Zahl immer die ganze reihe füllt und die kleinere zahl immer prozentual zur ersten angezeigt wird
das heißt wenn die kleinere zahl 30 groß is, dass keine 30 zeichen kommen, sondern nur im verhältnis zur größeren.

ich könnte das mit gauge lösen und immer den maxwert ändern aber so sollen wir es nicht machen.
wie könnte ich das in das programm einbinden, kann ich sagen die eine zahl ist 100% oder sowas??

bin am verzweifeln

danke schonmal

Mfg widowmaker

new32 11. Jun 2008 16:25

Re: Verhältnis Gleichung
 
konstante Länge für die größere Zahl bestimmen (z.B. 100 * "|")

dann die länge des anderen Balken: round(100*klein/groß) //Prozentrechnung

fertig

widowmaker2k7 11. Jun 2008 16:46

Re: Verhältnis Gleichung
 
klappt, wenn die zahl 1 größer ist, in anderen fällen bringt er mir falsche werte.
und es is auch nich in ner for verschachtelung. ich hab keinen blassen wie das unser lehrer haben will.
ich wüsst auch nicht wie ich das ins programm einbinden kann. ich werd mal weitertüfteln und auf ne andere lösung warten vielen dank schonmal.

mfg

widowmaker2k7 11. Jun 2008 16:52

Re: Verhältnis Gleichung
 
geeil ich habs hinbekommen.
hab ein wenig rumgebastelt wies hinkommen könnte und es kommen sogar vernünftige werte heraus, die stimmen könnten.

für die, die es interessiert der code:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var a, b, zahl1, zahl2: integer;
    zeichen:char;
    diagramm1, diagramm2: string[100];
begin
  randomize;
  zeichen:='|';
  zahl1 := random(100)+1;
  zahl2 := random(100)+1;
  label3.Caption:=inttostr(zahl1);
  label4.caption:=inttostr(zahl2);
  if zahl1 > 50 then
    label5.caption:=('ja')
  else
    label5.caption:=('nein');
  if zahl2 > 50 then
    label6.caption:=('ja')
  else
    label6.caption:=('nein');
  if zahl1>zahl2 then
    begin
      for a:= 1 to 100 do
        diagramm1 := diagramm1+zeichen;
      label7.caption:=(diagramm1);
      zahl2:= round(100*(zahl2/zahl1));
      for b:= 1 to zahl2 do
        diagramm2 := diagramm2+zeichen;
      label8.caption:=(diagramm2);
    end
  else
    begin
      for b:= 1 to 100 do
        diagramm2 := diagramm2+zeichen;
      label8.caption:=(diagramm2);
      zahl1:= round(100*(zahl1/zahl2));
      for a:= 1 to zahl1 do
        diagramm1 := diagramm1+zeichen;
      label7.caption:=(diagramm1);
    end
end;
end.
vielen dank new32


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:29 Uhr.

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