Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Schreibe morgen Klausur (https://www.delphipraxis.net/41863-schreibe-morgen-klausur.html)

Binary 9. Mär 2005 20:21


Schreibe morgen Klausur
 
Hallo zusammen!

Ich schreibe morgen Informatik Klausur, meine letzte note in der Klausur war ne 1-

Meine Halbjahres Note war ne 1

Aba ich bin abgeruscht meine ich, weil in meiner Reihenur Leute sitzen, die die fast ganze Zeit nur am spielen sind, nichts verstehen und mich dauernd um hilfe bitten, deswegen habe ich dann selbst keine Zeit mehr auf zu passen und ausserdem lenken die mich durch ihr spielen eh ab.

Was würdet ihr an meiner stelle tun?

Aber jetzt zurück zum Thema, ich muss eine unit schreiben, die ein wort spiegelt.

Der erste Buchstabe eines Wortes (gespeichert in der Variabel wort) wird mit index 1 angesprochen: Wort [1] ist der erste Buchstabe , wort[lenght(wort)] ist der letzte Buchstabe.

Ich weiss nicht genau wie ich das anstellen soll, ich versuchs gleich einfach mal.

Aber folgende Fragen habe ich?

Könnt ihr mir nochmal die Unterschiede zwischen einer Function und einer Procedur nennen? Ich meine function reserviert speicher und procedur wird erst aufgerufen wenn sie gebraucht wird.

wort[lenght(wort)] wo ist der unterschied zwischen einer eckigen klammer und einer runden? und was soll wort[lenght(wort)] heissen, also welche funktion erfühlt sie?

jfheins 9. Mär 2005 20:22

Re: Schreibe morgen Klausur
 
Wort rückwärts: Delphi-Referenz durchsuchendownto

sECuRE 9. Mär 2005 20:24

Re: Schreibe morgen Klausur
 
Hi,

eine Funktion hat ein Rückgabeergebnis, eine Prozedur hingegen nicht. Mit einer Schleife kommst du schnell auf die Lösung, schau einfach mal nach for bzw downto, wie jheins schon sagte. Einfach einen neuen String erstellen, der alle Zeichen von (Länge des Ausgangsstrings) bis zu 0 entählt.

Zu dem Problem mit den Schülern die ablenken: Mach's wie's die Lehrer gerne machen, setz' dich neben jemand, den du nicht so gerne leiden kannst, der dich aber auch nicht dauernd stört, oder such dir jemand, der auch Interesse an Informatik hat. Ein Einzelplatz ist auch nicht zu verachten ;)

Edit: Obwohl ein Blick in die Hilfe auch genügt hätte: length(word) gibt die Länge des Strings zurück, zum Beispiel 3 bei "aaa". word[length(word)] gibt dir den letzten Buchstaben zurück.

cu

Binary 9. Mär 2005 20:33

Re: Schreibe morgen Klausur
 
sry aber damit komme ich nich klar, trotzdem danke für eure Antworten!

Lol, im ersten halbjahr haben wir uns nur ampeln, taschenrechner passwort programme und sowas gelangweilt

und nu ist das so hart, das morgen unter 5 Leute die Klausur schreiben, ausserdem erwarten alle von mir das ich ne 1 schreiben, weil ich sonst auch voll der PC-Freak bin...irgendwie habe ich richtig schiess vor morgen...

gekmihesg 9. Mär 2005 20:40

Re: Schreibe morgen Klausur
 
versuchs einfach mal so:

Delphi-Quellcode:
uses ..., StrUtils;

wort := ReverseString(wort);
;)

malo 9. Mär 2005 20:43

Re: Schreibe morgen Klausur
 
Ist doch ganz einfach. Eine For-Schleife ist folgendermaßen aufgebaut:

Delphi-Quellcode:
var
  i: integer;
begin
for i := 1 to n do
  //hier was machen
Damit fürst du alles, was in den Anweisungsblock kommt, durch, bis i = n ist. Gleichzeitig wird nach jedem Schleifendurchlauf i erhöht.

Wenn du Delphi-Referenz durchsuchento durch Delphi-Referenz durchsuchendownto ersetzt, wird i nicht hochgezählt, sondern rückwärts gezählt. Dann musst du als Startwert Length(s) angeben und als Endwert 1. Und dann gehst du jedes Zeichen des Strings durch(von hinten) und schreibst es in dieser Reihenfolge in einen neuen String.

//edit: Wie kann man eigentlich so eine poplige Aufgabe in eine Klausur packen? Das dauert 5 Minuten :roll:

chkdsk 9. Mär 2005 21:08

Re: Schreibe morgen Klausur
 
Zitat:

Aba ich bin abgeruscht meine ich, weil in meiner Reihenur Leute sitzen, die die fast ganze Zeit nur am spielen sind, nichts verstehen und mich dauernd um hilfe bitten, deswegen habe ich dann selbst keine Zeit mehr auf zu passen und ausserdem lenken die mich durch ihr spielen eh ab.

Was würdet ihr an meiner stelle tun?
Geh zu Mami und wein dich aus ;)


function ZurueckZumGlueck(const Str: String): String;
var
i: Integer;
begin
for i := Length(Str) downto 1 do
Result := Result + Str[i];
end;


Aber mal im Ernst: An deiner Stelle würd ich mich nicht so aufspielen und selbst als "PC-Freak" und "Einsen-Schreiber" beschreiben, wenn du nichtmal in der Lage bist, den im Unterricht durchgenommenen Stoff zu raffen. Es zwingt dich doch niemand, bei jemand anders auf den Bildschirm zu gucken, und wenn du nicht in der Lage bist zu helfen UND aufzupassen (falls du ach-so-großes Genie das gezeigte nicht sowieso schon kennst (wir haben damals in einem Jahr Informatik, Thema Delphi, in etwa das geschafft, was ich mir in den Sommerferien zuvor angeeignet habe, und haben auch erst im 2. Semester mit eigenen Funktionen und Prozeduren angefangen)), dann musst du eben eines von beidem sein lassen.

Binary 9. Mär 2005 21:12

Re: Schreibe morgen Klausur
 
wenn du am schreiben bist und dich 8 leute die ganze zeit von dir hilfe wollen und keine ruhe geben, ob du dich da konzentrieren könntest?

Ausserdem wars am anfang so einfach das es langweilig wurde und dann habe ich nich richtig aufgepasst, aba bins wohl selbst schuld, ich passe ab sofort richtig auf, habe mir auch ein buch besorgt und helfe den anderen erst wenn ich selbst fertig bin

malo 9. Mär 2005 21:13

Re: Schreibe morgen Klausur
 
Zitat:

Zitat von Binary
wenn du am schreiben bist und dich 8 leute die ganze zeit von dir hilfe wollen und keine ruhe geben, ob du dich da konzentrieren könntest?

Dann geh zum Lehrer und lass dich wegsetzen :roll:

Btw wird das hier etwas OT. Bitte zum Thema zurückkommen :)

jfheins 9. Mär 2005 21:14

Re: Schreibe morgen Klausur
 
Um auch die letzte Möglichkeit aufzuzählen:
Delphi-Quellcode:
procedure StrRev (var Str: String);
var
  str2: String;
  i: integer;
begin
str2 := str;
for i := length (str2) downto 1 do
  str := str2[i];

Speedmaster 9. Mär 2005 21:15

Re: Schreibe morgen Klausur
 
Entweder du beschäftigst dich mit dem Programmieren was ein bischen willen vorraussetzt, oder du beschäftigst dich mit deinen Klassenkameraden, ich würde das erste bevorzugen solange die Klassenkameraden nicht Weiblich sind! :drunken:

Binary 9. Mär 2005 21:20

Re: Schreibe morgen Klausur
 
an chkdsk:

meine schwerpunkte liegen auch eigentlich im Hard und Sofware bereich, nicht im Progger Bereich, obwohl ich da jetzt umsteigen will ins Proggen, habe mir jetzt auch ein Buch besorgt, und werde das die Ferien durch nehmen

juhuuuu es klappt! DANKE !!!

Und noch ne Frage, möchte jemand eine Gmailadresse? Kann mommentan Einladungen verschicken!

atreju2oo0 10. Mär 2005 06:09

Re: Schreibe morgen Klausur
 
Zitat:

Zitat von jfheins
Um auch die letzte Möglichkeit aufzuzählen:
Delphi-Quellcode:
procedure StrRev (var Str: String);
var
  str2: String;
  i: integer;
begin
str2 := str;
for i := length (str2) downto 1 do
  str := str2[i];


Ich hätte da noch eine... ;)

Delphi-Quellcode:

function reku(wort:string;i:integer):string;
  begin
    if i<length(wort) then result:=reku(wort,i+1)+wort[i]
     else result:='';
  end;
Aufgerufen wird das dann über

reku(meinWort,1);


Is zwar nicht die beste Möglichkeit aber Lehrer mögen Rekursionen!
:)

Prym 10. Mär 2005 14:19

Re: Schreibe morgen Klausur
 
vieleicht wäre es noch schön eine funktionierende variante rein zu stellen auch für andere

gekmihesg 10. Mär 2005 14:23

Re: Schreibe morgen Klausur
 
Delphi-Quellcode:
function Reverse(str: string): string;
var
  i : integer;
begin
  setLength(result, Length(str));
  for i := 1 to Length(str) do
    result[Length(result) - i + 1] := str[i];
end
verbessert

Binärbaum 10. Mär 2005 14:27

Re: Schreibe morgen Klausur
 
Zitat:

Zitat von jfheins
Um auch die letzte Möglichkeit aufzuzählen:
Delphi-Quellcode:
procedure StrRev (var Str: String);
var
  str2: String;
  i: integer;
begin
str2 := str;
for i := length (str2) downto 1 do
  str := str2[i];

Die dürfte wohl nicht ganz funktionsfähig sein. Das kann man aber schnell ändern, wenn man etwas nachbessert:
Delphi-Quellcode:
procedure StrRev2(var aStr: String);
var
  str2: String;
  i: integer;
begin
  str2 := astr;
  for i := length (str2) downto 1 do
    astr[length(str2)-i+1] := str2[i];
end;
MfG
Binärbaum

[Edit]
@gekmihesg:
Die Zeichen eines Strings beginnen immer beim Index 1, nicht bei null.
[/Edit]

opfer.der.genauigkeit 10. Mär 2005 15:08

Re: Schreibe morgen Klausur
 
Zum Thema "String umdrehen"

String umdrehen

Da gibt es einen Algo von "Ralph Friedmann (TeamB)", der sollte deinen Lehrer beeindrucken können. :twisted:

Mamphil 10. Mär 2005 15:40

Re: Schreibe morgen Klausur
 
Hi!
Zitat:

Zitat von atreju2oo0
Ich hätte da noch eine... ;)

Delphi-Quellcode:

function reku(wort:string;i:integer):string;
  begin
    if i<length(wort) then result:=reku(wort,i+1)+wort[i]
     else result:='';
  end;
Aufgerufen wird das dann über

reku(meinWort,1);


Is zwar nicht die beste Möglichkeit aber Lehrer mögen Rekursionen!
:)

Wieso so "kompliziert"?

Schreib doch:
Delphi-Quellcode:

function reku(wort: string; i: integer = 1):string;
  begin
    if i < length(wort) then
      result:=reku(wort,i+1)+wort[i]
    else
      result:='';
  end;
Aufgerufen wird das dann über

reku(meinWort);

Wenn der zweite Parameter fehlt, i automatisch = 1 gesetzt... (verwirrt evtl. den Lehrer ;) )

Mamphil

Binärbaum 10. Mär 2005 17:26

Re: Schreibe morgen Klausur
 
Zitat:

Zitat von Mamphil
Hi!
Zitat:

Zitat von atreju2oo0
Ich hätte da noch eine... ;)
Delphi-Quellcode:
function reku(wort:string;i:integer):string;
  begin
    if i<length(wort) then result:=reku(wort,i+1)+wort[i]
     else result:='';
  end;
Aufgerufen wird das dann über

reku(meinWort,1);


Is zwar nicht die beste Möglichkeit aber Lehrer mögen Rekursionen!
:)

Wieso so "kompliziert"?

Schreib doch:
Delphi-Quellcode:
function reku(wort: string; i: integer = 1):string;
  begin
    if i < length(wort) then
      result:=reku(wort,i+1)+wort[i]
    else
      result:='';
  end;
Aufgerufen wird das dann über

reku(meinWort);

Wenn der zweite Parameter fehlt, i automatisch = 1 gesetzt... (verwirrt evtl. den Lehrer ;) )

Mamphil

Außer dem Aufruf der Funktion ist es auch nicht anders als die Funktion von atreju2oo0.
IMHO sind iterative Lösungen der rekursiven vorzuziehen, da die Rekursion durch die mehrfachen Aufrufe den Speicher zumüllt (und somit auch langsamer sein dürfte).

MfG
Binärbaum

Mamphil 11. Mär 2005 13:29

Re: Schreibe morgen Klausur
 
Zitat:

Zitat von Binärbaum
Außer dem Aufruf der Funktion ist es auch nicht anders als die Funktion von atreju2oo0.
IMHO sind iterative Lösungen der rekursiven vorzuziehen, da die Rekursion durch die mehrfachen Aufrufe den Speicher zumüllt (und somit auch langsamer sein dürfte).

Da hast du ja völlig Recht! Es ging mir auch nur darum, den dem Aufruf ziemlich sinnlosen zweiten Parameter zu "verstecken".

Mamphil


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