Entwickler-Ecke
Sonstiges (Delphi) - Was ist in folgender Funktionsdeklaration falsch?
delphianer5 - Mi 29.09.10 19:41
Titel: Was ist in folgender Funktionsdeklaration falsch?
Hi,
ich schreibe morgen eine Kursarbeit über Informatik. Hab mir Übungsaufgaben besorgt. Bin mir aber nicht vöölig sicher ob ich sie korrekt gelöst habe und wäre sehr dankbar wenn ihr mir helfen könntet. Ihr sollt hier nicht meine Hausaufgaben machen, ich will nur wissen ob das stimmt was ich sage und ob ich etwas verbessern kann oder etwas vergessen habe.
Danke!
Aufgabenstellung 1:
Was ist in folgender Funktionsdeklaration falsch?
Wie kann man den Fehler verbessern?
Delphi-Quelltext
1:
| function ueben (a:array[0..4] of integer):integer; |
Meine Lösung:
Bin mir nicht sicher ob es ein Fehler ist, aber mir fällt als erstes auf das der Name der Funktion klein geschrieben wurde, würde da "Ueben" daraus machen.
Der Informatiker zählt zwar bei vielen Dingen von 0 aufwärts jedoch, denke ich ist es unlogisch ein nulltes Array zu haben - sagt mir wenn ich ich mich irre- würde sagen gibt ja auch keine 0 Äpfel oder so. Oder sind die Zahlen nur Namenszuweisungen zu den einzelnen Arrays?Gehe davon aus das das die Anzahl der Arrays ist.
Hmm,Lösungsvorschläge - gute Frage- einfach umbennen und eine 1 statt 0 zu schreiben.
Aufgabenstellung 2:
a) Sei "SortZahlen" ein
array mit 50 Elementen vom Typ
real. Gib die notwendigen Delphi-Anweisungen an, um "SortZahlen" so zu sortieren, dass im ersten Feldelement die kleinste Zahl steht, im zweiten die zweit kleinste usw.
b)Schätze ab, wie viele Schritte dein Algorithmus benötigt, bis alle Zahlen sortiert sind?
Meine Lösung:
a)a) var SortZahlen: array [1..50] of real;
begin
for i:= 1 to 50 do
x:=High(SortZahlen);
B) 50 Schritte?
Wäre nett wenn da einer drüber schauen könnte. Danke!
mfg
Moderiert von
Gausi: Topic aus VCL (Visual Component Library) verschoben am Mi 29.09.2010 um 20:29
Moderiert von
Gausi: Titel geändert.
delphianer5 - Mi 29.09.10 19:49
Sry, bin wohl im falschem Topic - bitte verschieben.
Kann trotzdem mir einer dabei helfen?
bole - Mi 29.09.10 20:05
Hallo
Zu aufgabestellung a kann ich dir nicht helfen... aber zu der 2. Aufgabe.
Sortieren ist eine Wissenschaft! Als einstieg würde ich mal den einfachsten Sortalgo nehmen Bubblesort
http://de.wikipedia.org/wiki/Bubblesort
Dein Code sortiert nicht, er weisst nur die Anzahl der Arrayelemente 50 mal der Variablen x zu.
Gruss
Bole
delphianer5 - Mi 29.09.10 20:18
So schwer kann das nicht sein bin erst im 2. Jahr wo ich in der Schule delphi lerne, aber danke für deinen Link - sehr interessant.
Verbesserung:
Delphi-Quelltext
1: 2: 3: 4: 5:
| repeat for i:= 1 to 50 do x[i]:=High(SortZahlen); until x[i]<x[i-1] |
Muck - Mi 29.09.10 20:20
Hi,
einfach mal in Delphi compilieren... die Fehlermeldung wird Dir sagen, dass "of" erwartet wurde.
Richtig:
Delphi-Quelltext
1:
| function ueben (a:array of integer):integer; |
Gausi - Mi 29.09.10 20:22
Bitte nur eine Frage pro Topic.
Da hier schon mit der Sortierung begonnen wurde, würde ich darum bitten, die Frage nach der Funktionsdeklaration in einem neuen Topic zu besprechen. Danke. :)
(Die Lösung von Muck ist nämlich falsch, bzw. nur sehr bedingt richtig. ;-))
Edit, ok, dann halt doch das andere. :roll:
delphianer5 - Mi 29.09.10 20:27
@Muck:
Danke für den Tipp mit delphi. Das mit dem of stimmt nicht so wirklich.
@Gausi:
K,danke mach ich.
Tankard - Mi 29.09.10 20:28
Muck hat folgendes geschrieben : |
Hi,
einfach mal in Delphi compilieren... die Fehlermeldung wird Dir sagen, dass "of" erwartet wurde.
Richtig:
Delphi-Quelltext 1:
| function ueben (a:array of integer):integer; | |
nein. man keine keine index type specifiers mit uebergeben. richtig deklariert wuerde die funktion so lauten
Delphi-Quelltext
1: 2: 3: 4: 5:
| type t=array[0..4] of integer;
function ueben (a:t):integer; begin end; |
ob von 0 zaehlen oder von 1 sinnvoll ist, kommt auf die art der aufgabe an. bei manchen sachen macht 1 oft mehr sinn, meistens um zb zu vermeiden immer index-1 zu schreiben.
ist aber reine geschmacksache.
Gausi - Mi 29.09.10 20:29
Und den Titel des Topics könntest du auch noch anpassen, der sagt nämlich nicht so richtig was über das Thema aus. ;-)
delphianer5 - Mi 29.09.10 20:33
Threadname wurde geändert.
@Tankard: Danke!habe dir "gedankt".
Weiß jemand bei dem Sortieren Rat?
Gausi - Mi 29.09.10 20:34
Ich habe den Titel jetzt so geändert, dass er zu dem Teil passt, der jetzt hier korrekt beantwortet wurde.
Für das Sortieren bitte einen neuen Thread aufmachen. Weitere Postings, die sich hier auf das Sortieren beziehen, werden gelöscht. ;-)
Muck - Mi 29.09.10 20:44
Hi,
ja, bedingt richtig, weil
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| function ueben (a:array of integer):integer; begin if length(A)>=3 then Result:=A[2] else Result:=0; end;
procedure TForm1.FormCreate(Sender: TObject); begin Form1.Caption:=IntToStr(ueben([0,1,2,3,4])); end; |
funktioniert (jedenfalls mit Delphi 2007). Ist aber wahrscheinlich nicht in der Schulaufgabe gemeint.
Tankard - Mi 29.09.10 20:47
@muck: bedingt richtig, weil die aufgabe mit einem array von 0-4 arbeiten soll.
du hast einen dynamischen array definiert. kannst also auch von 0-100 gehen, ohne das er meckert.
Gausi - Mi 29.09.10 20:48
Die Funktion möchte ein fixes Array[0..4] bekommen. Du übergibst ihr nach deiner Änderung ein dynamisches Array. Wenn ich Lehrer wäre, würde ich das als "falsch" werten. ;-)
Der Weg über einen neu definierten Typ (den ich aber nicht unbedingt "t" nennen würde) ist der richtige.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!