AGB  ·  Datenschutz  ·  Impressum  







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

If-Then oder Case-else

Ein Thema von MatthiasxD · begonnen am 17. Mär 2009 · letzter Beitrag vom 30. Mär 2009
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
MatthiasxD

Registriert seit: 17. Mär 2009
3 Beiträge
 
#1

If-Then oder Case-else

  Alt 17. Mär 2009, 14:32
Hallo ihr lieben ich hab delphi gerade im info unterricht und bin kein experte, mir wurde follgende Aufgabe gestellt:
Drei miteinander verbundene Räume weden durch eine zweistufige Heizung versorgt. Sobalt in lediglich einem Raum die Temperatur unter 15°c sinkt, schaltet sich die Stufe I ein. Liegt in mindestens zwei Rämen die Temperatur unter 15°c, so schaltet sich die Stufe II ein. Nach Eingabe der drei Temperaturen soll die Schaltstufe der Heizungausgegeben werden.
Mein Problem ist nun ich weis nicht sorichtig wie ich das nun im Qelltext schreiben soll. Ist das nun eine If-Then oder case-else oder was anderes? Und wenn ja wie genau mach ich das am besten? Also vom Qelltext her was genau schreibe ich zwischen "begin" und "end"?
  Mit Zitat antworten Zitat
b00gie

Registriert seit: 5. Aug 2008
43 Beiträge
 
#2

Re: If-Then oder Case-else

  Alt 17. Mär 2009, 14:36
paar Infos brauchen wir. Wie wird die Temperatur übergeben? Hast du 3 Edit-Felder? Oder wie sieht das Ganze aus?
Es wird immer eine Lösung geben...
...fragt sich nur wann!!!
  Mit Zitat antworten Zitat
b00gie

Registriert seit: 5. Aug 2008
43 Beiträge
 
#3

Re: If-Then oder Case-else

  Alt 17. Mär 2009, 14:41
Also eine ganz "banale Lösung", jedoch denke ich mal für den Infounterricht gut nachzuvollziehen.
Du brauchst 3 Edits für die Temperaturen, 1 Label für das Ergebnis und 1 Button zum berechnen.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  i:=0;
  if Edit1.Text<'15then i:=i+1;
  if Edit2.Text<'15then i:=i+1;
  if Edit3.Text<'15then i:=i+1;

  if i=1 then Label1.Caption := 'Stufe 1';
  if i>1 then Label1.Caption := 'Stufe 2';
end;
Es wird immer eine Lösung geben...
...fragt sich nur wann!!!
  Mit Zitat antworten Zitat
Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#4

Re: If-Then oder Case-else

  Alt 17. Mär 2009, 14:41
Den fertigen Quelltext wird dir sicher niemand geben [Edit: ok doch und auchnoch imho mies formatiert und mit ifs wo ein case hingehört], aber du musst erst überlegen wie du die Sache angehen willst, im Wesentlichen hast du ja zwei Möglichkeiten.

1. Du überprüfst beginnend mit jedem Raum einzeln beginnend (also 3x), ob die Temperatur höher ist und prüfst falls ja, ob einer der beiden anderen Räume auch noch über 15°C liegt und reagierst entsprechend.

2. Du zählst erst in wie vielen Räumen die Temperatur höher liegt und überprüfst hinterher einmal auf die Anzahl.

Version 1 führt zu ziemlichen Spaghetti-Code und ist unflexibler, falls es z.B. mehr Räume geben soll, deswegen dürfte die 2te schöner sein.
Man kann einen Barbier definieren als einen, der alle diejenigen rasiert, und nur diejenigen, die sich nicht selbst rasieren.
Rasiert sich der Barbier?
  Mit Zitat antworten Zitat
b00gie

Registriert seit: 5. Aug 2008
43 Beiträge
 
#5

Re: If-Then oder Case-else

  Alt 17. Mär 2009, 14:44
ja ich sagte ja, so wird er es wenigstens verstehen, hoffe ich zumindestens...
Es wird immer eine Lösung geben...
...fragt sich nur wann!!!
  Mit Zitat antworten Zitat
Frankfurtoder

Registriert seit: 27. Mär 2008
112 Beiträge
 
RAD-Studio 2010 Pro
 
#6

Re: If-Then oder Case-else

  Alt 17. Mär 2009, 14:51
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, ii: Integer;
begin
  i:=0;
  for ii := 1 to 3 do
  begin
    if strtoint(TEdit(FindComponent('Edit'+ IntToStr(ii))).text) < 15 then
    i:=i+1
  end;
  if i=1 then Label1.Caption := 'Stufe 1'
  else if i>1 then Label1.Caption := 'Stufe 2';
end;
Ungetestet, aber sollte gehen.
Erik
Alles gut?
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#7

Re: If-Then oder Case-else

  Alt 17. Mär 2009, 14:56
b00gie und Frankfurtoder ihr beiden habt ihm gerade null komma nix geholfen.
Ihr habt ihn eher näher zu ner 5 bei der nächsten Arbeit gebracht.

Totalen Anfängern sollte man tunlichst keinen fertigen Code vorsetzen,
sondern sie Schritt für Schritt zum Ziel begleiten.

Ich hoffe in Zukunft macht ihr das nicht, kurzfristige Hilfe in so einem Fall
ist eher ein Langzeitgift, daß sich rächen wird.
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#8

Re: If-Then oder Case-else

  Alt 17. Mär 2009, 15:00
Hm, wenn du glänzen willst, würd könnte man es auch "etwas krank" aber interessant - so machen:

Delphi-Quellcode:

var
 temp_raum1, temp_raum2, temp_raum3:integer;
 diff_raum1, diff_raum2, diff_raum3:integer;
 referenz_temp:integer;
 summe,stufe:integer;
begin

//[zuvor noch temp_raum1 bis temp_raum3 einlesen...]

referenz_temp:=15;

diff_raum1:=int((temp_raum1-referenz_temp)/abs(temp_raum1-referenz_temp));
// =1, falls temp_raum1 > referenz_temp,sonst -1

diff_raum2:=int((temp_raum2-referenz_temp)/abs(temp_raum2-referenz_temp));
// =1, falls temp_raum2 > referenz_temp,sonst -1

diff_raum3:=int((temp_raum3-referenz_temp)/abs(temp_raum3-referenz_temp));
// =1, falls temp_raum3 > referenz_temp,sonst -1

summe:=int((diff_raum1+abs(diff_raum1)) / 2) //addiert 1, falls diff_raum1=1 und addiert sonst 0
      +int((diff_raum2+abs(diff_raum2)) / 2) //addiert 1, falls diff_raum2=1 und addiert sonst 0
      +int((diff_raum3+abs(diff_raum3)) / 2): //addiert 1, falls diff_raum3=1 und addiert sonst 0

// summe gibt an, in wievielen Räumen die Temperatur GRÖSSER als die Referenztemperatur ist.

Stufe:=(3-summe) - (3-summe) div 3;


//Mal überprüfen, obs überhaupt stimmt:
// Falls summe=0 => Stufe=2
// Falls summe=1 => Stufe=2
// Falls summe=2 => Stufe=1
// Falls summe=3 => Stufe=0

end;
Sorry, aber mir war grade danach Und ohne eine If-Abfrage zu benutzen!!!

//edit: code etwas besser kommentiert.
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
Frankfurtoder

Registriert seit: 27. Mär 2008
112 Beiträge
 
RAD-Studio 2010 Pro
 
#9

Re: If-Then oder Case-else

  Alt 17. Mär 2009, 15:00
Mich hats nur kurz in den Fingern gejuckt.

Zu b00gies Lösung: funktioniert dise überhaupt?

Edit1.Text<'15' Immerhin ist das eine mathematische Operation mit strings.
Erik
Alles gut?
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: If-Then oder Case-else

  Alt 17. Mär 2009, 15:19
Nein, da hier nicht wie in C dann der ASCII-Code verglichen wird. Aber du könntest

StrToInt(Edit1.text) < 15 testen
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     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 00:06 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