Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi erstellen einer funktion getinteger (https://www.delphipraxis.net/12383-erstellen-einer-funktion-getinteger.html)

PomBär 26. Nov 2003 12:10


erstellen einer funktion getinteger
 
hi leutz
ich hab ne aufgabe und weis nicht so genau was ich da machen soll habt ihr ne idee und einen lösungsvorschlag??

Wenn die Deklaration var s:string; z,c:integer; gegeben ist, bewirkt der Aufruf val(s,z,c) folgendes: s wird in eine Zahl zu wandeln versuch und in z abgelegt. Ist c=0; war es erfolgreich; sonst enthält c die Fehlerposition.
Aufgabe: eine Funktion GetInteger(p:string), welche den Parameter p per writeln ausgibt. per readln einen string einliest, dies solange tut , bis ein gültiger integer eingegeben wurde und den als result zurückliefert. Im Fehlerfall wird dem User die Fehlerposition mitgelteilt und erneut zur Eingabe aufgefordert.
:idea:

sakura 26. Nov 2003 12:14

Re: erstellen einer funktion getinteger
 
Zeige uns doch mal, wie weit Du mit Deinem Code bist. Das ganze hört sich für mich nach einer Schulaufgabe an, die wir hier nicht komplett lösen wollen. Also, zeige uns, wie weit Du kommst und dann zeigen wir Dir, wie es weiter geht ;-)

...:cat:...

PomBär 1. Dez 2003 19:07

Re: erstellen einer funktion getinteger
 
Delphi-Quellcode:
program GetInteger;

{$APPTYPE CONSOLE}

uses
  SysUtils;
function GetName:string;
var p:string;
begin
repeat
write('einen Parameter bitte');
readln(p);
until
p<>'';
result:=p;

end;

end.
kann das stimmen?
ich weis nicht ich glaube da ist was falsch.

himitsu 1. Dez 2003 19:14

Re: erstellen einer funktion getinteger
 
Ein Hallöle von http://www.FrankNStein.de/Smiley-Wolke.gif,

ich geb' mal 'nen kleine Tip.

Fang' erst mal mit diesem Teil an:
Zitat:

Zitat von Dein Lehrer / Deine Lehrerin
Wenn die Deklaration var s:string; z,c:integer; gegeben ist, bewirkt der Aufruf val(s,z,c) folgendes: s wird in eine Zahl zu wandeln versuch und in z abgelegt. Ist c=0; war es erfolgreich; sonst enthält c die Fehlerposition.

Code:
[b]Procedure[/b] Val(S: [b]String[/b]; [b]Var[/b] Z, C: Integer);
  [b]Begin[/b]
    [color=red][b]...[/b][/color] [color=darkred]{ hier soll dein Vorschlag rein }[/color]
  [b]End[/b];
Und jetzt zeig mal was du in diese Prozedur schreiben würdest, damit das angegebene erfüllt wird !
Wenn du keine entsprechenden Befehle findest, sag es wenigstens in Sätzen. (und nicht die OH vergessen - die ist ganz hilfreich)



[ADD]
PS:
Zitat:

Zitat von PomBär
kann das stimmen?
ich weis nicht ich glaube da ist was falsch.

Also für den letzten Teil der Aufgabe ist das schon mal ein Anfang.

http://www.delphipraxis.net/images/common/divider.jpg
http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif

PomBär 1. Dez 2003 19:24

Re: erstellen einer funktion getinteger
 
aber ich soll doch keine procedure sondern eine function machen.?????????????????

himitsu 1. Dez 2003 19:33

Re: erstellen einer funktion getinteger
 
Keine Sorge, am Ende kommt schon eine Funktion raus - das ist doch erst der 1. Teil der Aufgabe.

Zitat:

Zitat von Dein Lehrer / Deine Lehrerin
Wenn die Deklaration var s:string; z,c:integer; gegeben ist, bewirkt der Aufruf val(s,z,c) folgendes: s wird in eine Zahl zu wandeln versuch und in z abgelegt. Ist c=0; war es erfolgreich; sonst enthält c die Fehlerposition.

http://www.delphipraxis.net/images/common/divider.jpg
http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif

Luckie 1. Dez 2003 19:34

Re: erstellen einer funktion getinteger
 
@himitsu: Die Prozedur val gibt es schon. Und ich denke mal, er soll sie verwenden für seine GetInteger Funktion.
Delphi-Quellcode:
function GetInteger(s: String): Boolean;
var
  Code: Integer;
  i: Integer;
begin
  val(s, i, Code);
  result := Code = 0;  
end;
Das wäre mein Ansatz aber das:
Zitat:

bis ein gültiger integer eingegeben wurde und den als result zurückliefert. Im Fehlerfall wird dem User die Fehlerposition mitgelteilt und erneut zur Eingabe aufgefordert.
Soll das innerhalb der Funktion passieren oder in der while-Schleife?

PomBär 1. Dez 2003 20:20

Re: erstellen einer funktion getinteger
 
das weis ich auch nicht genau. der lehrer gibt immer solche aufgaben wo man nicht durchsieht. aber ich glaube es soll in der funktion passieren. aber wenn du einen lösungsvorschlag für die while schleife hast wäre ich auch dafür dankbar.

himitsu 1. Dez 2003 20:25

Re: erstellen einer funktion getinteger
 
Oh, Das (val) kannte ich noch nicht, daher dachte ich es gehört mit zu Aufgabe. :oops:
(man lernt halt immer mal was neues dazu)

Dafür bin ich mal, zumindestens bei dieser Aufgabe, nett. :angle2:

1:
Zitat:

Zitat von Dein Lehrer / Deine Lehrerin
Aufgabe: eine Funktion GetInteger(p:string), ...

Code:
[color=red][b]Function[/b] GetInteger(P: [b]String[/b])[/color]: Integer;
2:
Zitat:

Zitat von Dein Lehrer / Deine Lehrerin
... welche den Parameter p per writeln ausgibt. ...

Code:
[color=red]WriteLn(P);[/color]
3:
Zitat:

Zitat von Dein Lehrer / Deine Lehrerin
... per readln einen string einliest, ...

Code:
[color=red]ReadLn(S)[/color];
4:
Zitat:

Zitat von Dein Lehrer / Deine Lehrerin
... dies solange tut , bis ein gültiger integer eingegeben wurde ...

Code:
[color=red][b]Repeat[/b][/color]
  ...
[color=red][b]Until[/b] C = 0[/color];
5:
Zitat:

Zitat von Dein Lehrer / Deine Lehrerin
... und den als result zurückliefert. ...

Code:
[color=red][b]Function[/b][/color] GetInteger(P: [b]String[/b])[color=red]: Integer[/color];
Code:
[color=red]Result := I;[/color]
6:
Zitat:

Zitat von Dein Lehrer / Deine Lehrerin
... Im Fehlerfall wird dem User die Fehlerposition mitgelteilt ...

Code:
[b]If[/b] [color=red]C <> 0[/color] [b]Then[/b] [color=red]WriteLn('Fehler auf Position ' + IntToStr(C));[/color]
7:
Zitat:

Zitat von Dein Lehrer / Deine Lehrerin
... und erneut zur Eingabe aufgefordert.

Code:
[color=darkred][b]Repeat[/b][/color]
  [color=red]WriteLn(P);[/color]
  [color=red]ReadLn(S);[/color]
  ...
[color=darkred][b]Until[/b] C = 0;[/color]
Ergebnis:
Delphi-Quellcode:
Function GetInteger(P: String): Integer;
  Var S: String;
    C, I: Integer;

  Begin
    Repeat
      WriteLn(P);
      ReadLn(S);
      Val(S, I, C);
      If C <> 0 Then WriteLn('Fehler auf Position ' + IntToStr(C));
    Until C = 0;
    Result := I;
  End;
http://www.delphipraxis.net/images/common/divider.jpg
http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif

PomBär 1. Dez 2003 20:39

Re: erstellen einer funktion getinteger
 
danke ohne euch wäre ich echt aufgeschmissen gewesen. :love:


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