Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Stundenplan programmiert mit zweidimensionalen Arra's (https://www.delphipraxis.net/187598-stundenplan-programmiert-mit-zweidimensionalen-arras.html)

User1223 13. Dez 2015 21:10

Stundenplan programmiert mit zweidimensionalen Arra's
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Leute,
ich möchte mein Stundenplan mit zweidimensionalen Arra's Visualisieren und habe auch schon angefangen:
Quelltext:
begin
canvas.Font.Color:=clred;
for stunde:=0 to 8 do
canvas.TextOut(20,50+stunde*20,IntToStr(Stunde));
for tag:=Mo to Fr do
canvas.TextOut(50+ord(tag)*100,20,Wochentag[tag]);

canvas.Font.Color:=clblack;
for stunde:=0 to 8 do
for tag:=Mo to Fr do
canvas.TextOut(60+ord(tag)*100,50+stunde*20,Stunde nplan[stunde,tag]);

nun möchte ich das eine Funktion "Wochenstunden" zählt nach der Übergabe eines Fachnamens die Wochenstundenanzahl in diesem Fach
und dass nach der Übergabe eines Fachnamens Tag und Stunde ausgegeben wird, an dem ein bestimmtes Fach haben (Prozedur "Fachausgabe"). Die "Klappstunden", die Stunden, die mitten zwischen anderen Schulstunden frei sind sollen auch ausgegeben werden.

Ich habe schon Prozeduren vorgeschrieben:
function TFStundenplan.Wochenstunden(Fachname: string): integer;
var stunde:TStunde;
tag:TTage;
begin
// Hier den Quelltext ergänzen
end;

procedure TFStundenplan.BWochenstundenClick(Sender: TObject);
begin

showmessage('Sie haben '+IntToStr(Wochenstunden(EFachname.text))+
' Stunden '+EFachname.text+'!');
end;

procedure TFStundenplan.BFachausgabeClick(Sender: TObject);
var stunde:TStunde;
tag:TTage;
gefunden:boolean;
begin
// Hier den Quelltext ergänzen
end;

function TFStundenplan.Klappstunden(Stundenplan: TStundenplan): integer;
var stunde:TStunde;
tag:TTage;
anzahl:integer;
begin
// Hier den Quelltext ergänzen
end;

procedure TFStundenplan.BKlappstundenClick(Sender: TObject);
begin
showmessage('Sie haben '+IntToStr(Klappstunden(Stundenplan))+' Klappstunden!');
end;

end.




Ich lade euch die .dpr als anhang hoch wäre nice wenn ihr mir eine Antwort geben könntet:wink:!

MFG User1223 :)

Luckie 13. Dez 2015 21:35

AW: Stundenplan programmiert mit zweidimensionalen Arra's
 
Fass bitte deinen Cod ein Delphi-Tags. Das ist der Helm im Editor.

Nur mal zur Info, was du hochgeladen hast:
Delphi-Quellcode:
program Stundenplan;

uses
  Forms,
  UHaupt in 'UHaupt.pas' {FStundenplan};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TFStundenplan, FStundenplan);
  Application.Run;
end.

Phoenix 14. Dez 2015 07:31

AW: Stundenplan programmiert mit zweidimensionalen Arra's
 
Ausserdem heisst es Array und der Plural davon ist konsequenterweise Arrays.

bcvs 14. Dez 2015 07:37

AW: Stundenplan programmiert mit zweidimensionalen Arra's
 
Was sind denn Arra's

Wahrscheinlich meinst du Arrays. Entgegen einer weitverbreiteten Unsitte wird in der deutschen und auch in der englischen Sprache das Plural-s ohne ' angehängt. Sonst müsste es ja auch Window's heißen.:warn:

Daniel 14. Dez 2015 08:04

AW: Stundenplan programmiert mit zweidimensionalen Arra's
 
So - hat nach der Deutsch-Stunde jemand noch eine Idee zur Sache an sich?

Daniel 14. Dez 2015 08:07

AW: Stundenplan programmiert mit zweidimensionalen Arra's
 
Wie sieht denn Dein Array aus? Die Stunden allein als Zahlenwert reichen ja nicht, Du brauchst ja offenbar eine Zuordnung von Stunde zu Fach.
Viele Wege führen nach Rom - ich denke, dass für Dich der Weg über Records geeignet sein könnte. Ein Record, in dem Du Stunden und Fach als Tupel festhältst und Dir dann Dein Array von diesem Tupel bildest.
Das wird Dich zum Ziel bringen und Dir - bei Interesse - auch noch etwas Luft nach oben für etwas ausgefeiltere Lösungen lassen.

frankyboy1974 14. Dez 2015 08:16

AW: Stundenplan programmiert mit zweidimensionalen Arra's
 
hallo,

hab ein wenig geraten, aber vielleicht hilft es

Delphi-Quellcode:

function TFStundenplan.Wochenstunden(Fachname: string): integer;
var stunde:TStunde;
tag:TTage;
begin
// Hier den Quelltext ergänzen
  result:=0;
  for stunde:=0 to 8 do begin
    for tag:=Mo to Fr do begin
      if Stundenplan[stunde,tag] = fachname then inc(result);
    end;
  end;
end;

procedure TFStundenplan.BFachausgabeClick(Sender: TObject);
begin
// Hier den Quelltext ergänzen
  //Wie willst du jetzt auf ein konkretes Fach klicken
  //Wenn du beispielsweise ein Stringgrid zur Anzeige verwenden würdest ,
//könntest du beim Click auf ein konkretes Fach alle Stunden mit demselben Fach mit einem anderen farblichen Hintergrund ausgeben
end;

function TFStundenplan.Klappstunden(Stundenplan: TStundenplan): integer;//Warum übergibst du hier als Parameter den Stundenplan und bei den Fachstunden nicht?
var stunde, stunde1:TStunde;
tag:TTage;
  stundeVorher,StundeNachher:Boolean;
begin
// Hier den Quelltext ergänzen
  result:=0;
  for tag:=Mo to Fr do begin
    stundeVorher:=false;
    StundeNachher:=False;
    for stunde:=0 to 8 do begin
      //Freistunde(Klappstunde)='' ????
      if Stundenplan[stunde,tag] <> '' then stundeVorher:=true else begin
        if stundeVorher then begin
          for stunde1:=stunde+1 to 8 do begin
            if Stundenplan[stunde1,tag] <> '' then begin
              stundeNachher:=true;
              break;
            end;
          end;
          if stundeNachher then inc(result);
        end;
      end;
    end;
  end;
 
end;
mfg


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:58 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