AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Warteschlange realisieren

Ein Thema von hotkey · begonnen am 13. Mai 2012 · letzter Beitrag vom 14. Mai 2012
Antwort Antwort
Seite 4 von 8   « Erste     234 56     Letzte »    
hotkey

Registriert seit: 20. Aug 2011
Ort: Berlin
113 Beiträge
 
Delphi 6 Personal
 
#31

AW: Warteschlange realisieren

  Alt 14. Mai 2012, 10:49
Haha , daran habe ich garnicht gedacht irgendwie xD.

Hab viel zu kompliziert gedacht , also so sieht es dann jetzt , nach deinem Tipp , danke nochmals , aus :

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  person = record
    Name:string;
    id:integer;
  end;


  Tschlange = class
  private
    next,max:integer;
    schlange : array [1..10] of person;
  public
    function einfuegen(x:person):boolean;
    constructor create;
  end;


var
  Form1: TForm1;

implementation


constructor tschlange.create;
 begin
  next :=1;
  max := 10;
 end;

function tschlange.einfuegen(x:person):boolean;
  var i:integer;
    begin
      schlange[10].Name := form1.edit1.text;
      schlange[9].Name:= form1.edit2.text;
      schlange[8].name:=form1.edit3.text;

   // for i:=1 to 9 do
     //schlange[next] := schlange[next+1];


     end;

{$R *.dfm}


begin


end.
Und jetzt möchte ich , dass mit einer Showmessage-Prozedur mir angezeigt wird , wer zm Beispiel als 3. an der Kasse steht.
Geht das so hier :

[delphi procedure anzeigen;
begin
showmessage(high(schlange[8]))
[/dephi]
Felix
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#32

AW: Warteschlange realisieren

  Alt 14. Mai 2012, 10:55
So brauchst Du Next aber auch nicht mehr. Irgendwie ergibt das alles keinen rechten Sinn in meinen Augen. Denken wir doch einmal logisch und sagen: der erste wird an Position 1 im Array geschrieben, der zweite an Position 2 usw. Dann sähe Einfügen ja so aus:
Delphi-Quellcode:
function tschlange.einfuegen(x: person): boolean;
begin
  //hinter dem Array kann man nichts mehr einfügen
  Result := Next <= max;
  if Result then
    begin
      //Daten an aktuelle Array-Position schreiben
      schlange[Next].Name := x.Name;
      schlange[Next].Id := x.Id;
      //Position erhöhen
      inc(Next);
    end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hotkey

Registriert seit: 20. Aug 2011
Ort: Berlin
113 Beiträge
 
Delphi 6 Personal
 
#33

AW: Warteschlange realisieren

  Alt 14. Mai 2012, 11:01
Ja , danke für den großen Denkanstoß.

Irgendwie habe ich es bisschen durcheiander gebracht , sorry.


Aber jetzt ist es doch keine Warteschlange mehr , oder ?

Denn im ersten Array-Feld befindet sich ja eine Person , und später dann auch im zweiten Array-Feld.

Dann ist das zweite Array-Feld ja aber vor dem ersten Array-Feld , ist ja sowas wie Drängeln , oder nicht ?
Felix
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#34

AW: Warteschlange realisieren

  Alt 14. Mai 2012, 11:04
Wie kann das 2. vor dem 1. sein?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hotkey

Registriert seit: 20. Aug 2011
Ort: Berlin
113 Beiträge
 
Delphi 6 Personal
 
#35

AW: Warteschlange realisieren

  Alt 14. Mai 2012, 11:07
Na , es geht doch so oder nciht :


Array :

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10

Otto| Peter| <----- ? ----> | Kasse

So wird das ja eingefügt , nach deiner Function , erst kommt Otto rein , danach Peter.

Peter ist dann aber vor Otto , obwohl Otto als erster da war , verstehst du , was ich meine ?
Felix
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#36

AW: Warteschlange realisieren

  Alt 14. Mai 2012, 11:10
Ich habe 2 mal gefragt, wo die Kasse ist. Wenn die also an Position 10 steht statt an der 1, muss ja alles umgedreht werden.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#37

AW: Warteschlange realisieren

  Alt 14. Mai 2012, 11:12
Warteschlange (FiFo) heißt doch:

Warteschlange leer:
Person1 bekommt den ersten Platz in der Warteschlange
Eine weiter Person kommt hinzu
Person2 bekommt den zweiten Plaz in der Warteschlange

Person1 wird zuerst an der Kasse bedient.
Ist Person1 fertig wird sie aus der Warteschlange entfernt (mit Gewalt)
und Person zwei rückt an Position 1 und wird dann bedient.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
hotkey

Registriert seit: 20. Aug 2011
Ort: Berlin
113 Beiträge
 
Delphi 6 Personal
 
#38

AW: Warteschlange realisieren

  Alt 14. Mai 2012, 11:15
Oh , tut mir Leid, habs wohl übersehen.

Also Kasse ist "nach" Array-Feld Nummer 10.

Das heißt , next muss doch 10 sein , oder nciht ?

Und dann statt inc (next , muss dec(next) stehen , oder ?

Also:

Delphi-Quellcode:
function tschlange.einfuegen(x: person):boolean;
begin
  //hinter dem Array kann man nichts mehr einfügen
  Result := Next <= max; //next ist 10
  if Result then
    begin
      //Daten an aktuelle Array-Position schreiben
      schlange[Next].Name := x.Name;
      schlange[Next].Id := x.id;
      //Position erhöhen ->> // POSITION abziehen
      dec(Next);
    end;
end;
Felix
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#39

AW: Warteschlange realisieren

  Alt 14. Mai 2012, 11:16
Genau. Ich persönlich hätte die Kasse ja an Position 1 stehen lassen, aber wenn es absichtlich kompliziert sein soll, bitteschön.

[edit] Moment, Next muss dann aber mit 10 initialisiert werden, und bei der Prüfung größer als 0 sein. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hotkey

Registriert seit: 20. Aug 2011
Ort: Berlin
113 Beiträge
 
Delphi 6 Personal
 
#40

AW: Warteschlange realisieren

  Alt 14. Mai 2012, 11:19
Also , jetzt sieht es so aus :

Delphi-Quellcode:
 unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;

  private
    { Private declarations }
  public
    { Public declarations }
  end;

  person = record
    Name:string;
    id:integer;
  end;


  Tschlange = class
  private
    next,max:integer;
    schlange : array [1..10] of person;
  public
    function einfuegen(x:person):boolean;
    constructor create;
  end;


var
  Form1: TForm1;
  myschlange:Tschlange;

implementation


constructor tschlange.create;
 begin
  next :=10;
  max := 10;
 end;

function tschlange.einfuegen(x: person):boolean;
begin
  //hinter dem Array kann man nichts mehr einfügen
  Result := Next <= max; // MUSS ICH HIER WAS ÄNDERN ?
  if Result then
    begin

      //Daten an aktuelle Array-Position schreiben
      schlange[Next].Name := x.Name;
      schlange[Next].Id := x.id;
      //Position erhöhen
      dec(Next);
    end;
end;






{$R *.dfm}





end.
Felix
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 8   « Erste     234 56     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:04 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