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 1 von 2  1 2      
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#1

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
 
#2

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.666 Beiträge
 
Delphi 12 Athens
 
#3

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
hotkey

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

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.666 Beiträge
 
Delphi 12 Athens
 
#5

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
 
#6

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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#7

AW: Warteschlange realisieren

  Alt 14. Mai 2012, 11:21
Ich hatte eben noch editiert. BTW: Du solltest das {$R *.dfm} direkt hinter das implementation verschieben.
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
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Warteschlange realisieren

  Alt 14. Mai 2012, 11:22
[OT] ich kann mich noch an meine erste Warteschlange erinnern, die war 64 Stellen lang, es gab einen Anfang, ein Ende und die Anzahl der gespeicherten Bytes.
Am Ende der Schlange wurde eingefügt, am Anfang gelesen.
Beim Einfügen wurde die Anzahl und das Ende um 1 erhöht, beim Lesen Die Anzahl um 1 vermindert und der Anfang um 1 erhöht.
war die warteschlage voll wurde nicht geschrieben, war sie leer wurde nicht gelesen.
Der einzge Trick war, daß für den Datenindex i:=i and 63; verwendet wurde.

(Es könnte sein, daß auf dieses Vorgehen IBM ein Copyright hat)
[/OT]

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
hotkey

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

AW: Warteschlange realisieren

  Alt 14. Mai 2012, 11:24
So müsste es korrekt sein , oder nicht ?

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

{$R *.dfm}


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 >0;
  if Result then
    begin

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











end.
Felix
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#10

AW: Warteschlange realisieren

  Alt 14. Mai 2012, 11:53
Nach meinem Dafürhalten sollte das jetzt stimmen. Wenn nun also der erste (an Array-Position 10) durch die Kasse ist, müssen die anderen nachrücken. Dafür kannst Du dann wieder eine For-Schleife verwenden, musst aber herunterzählen (downto statt to).
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
Antwort Antwort
Seite 1 von 2  1 2      


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 01:09 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