developers-forum.de

Normale Version: Pascal: Buchstaben im Wort umdrehen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hey

ich mal ne frage. Ich sitze seit geraumer Zeit an einer Aufgabe. Diese lautet: Lesen sie ein Wort in einer Prozedur ein. Wandeln sie dieses in einer extra Prozedur um sodass z.B. "Haus" zu "suaH". Geben sie dieses in einer extra Prozedur wieder aus. Verwenden sie dabei globale und lokale Variablen.

Könnte mir jemand dabei helfen? Das wär klasse. So mit meinem einfachen Wissen komme ich da nicht weiter.

Ps: Das Programm darf keine eindimensionalen Felder beinhalten...

MfG Calli
Hallo,

warum dürfen denn keine eindimensionalen Felder verwendet werden?
Strings sind doch auch Felder. Evtl. meinen sie aber auch nur, dass keine
zusätzlichen Felder verwendet werden dürfen.

Wie weit bist du denn schon gekommen? Einlesen und Ausgeben klappt?
Wenn du ein Feld vor dir hast, z.B.:

Code:
a b c d e

und du willst die Reihenfolge umkehren, wie würest du dann vorgehen, wenn du kein zusätzliches Feld hast. a muss an die letzte und e an die erste Stelle, usw.


N43

hey ja einlesen krieg ich hin. nur halt das probelm ist das ich mit der aufgabe nicht ganz zufrieden bin. ich habe keinen ansatz habe diese aufgabe zu lösen. ich hatte mir überlegt die buchstaben in zahlen umzuwandeln und dann die reinfolge zu verändern. nur fehlt mir da die parktische umsetzung zu. ebenso hab ich null ahnung wie es anstelle ohne eindimensionale felder keine amximalzahl an buchstaben festzulegen.
bräcuhte da bei allen entweder ein fertiges programm bzw. eine gute erläuterung das ich da mal durchblicke. ich weiß ist viel verlangt, wäre aber an sich toll wenn dies jemand machen könnte.

danke schonmalWinken

mfg calli

callahan schrieb:
ich hatte mir überlegt die buchstaben in zahlen umzuwandeln und dann die reinfolge zu verändern. nur fehlt mir da die parktische umsetzung zu. ebenso hab ich null ahnung wie es anstelle ohne eindimensionale felder keine amximalzahl an buchstaben festzulegen.

ohne maximale Beschränkung ist ansich nicht möglich. In Pascal sind Strings auf 255 Zeichen beschränkt. Prinzipiell vertauscht man den ersten mit dem letzten Buchstaben, den zweiten mit dem vorletzten, usw.

Wenn du die Länge beliebig halten willst, müsstest du die Buchstaben einzeln einlesen und z.B. über eine verkette Liste verbinden.

Mit welchem Pascal arbeitest du denn? Turbo Pascal? Mit str[i] kannst du auf das i-te Zeichen zugreifen.

Code PASCAL :
 
var str : String;
      ch : Char;
 
begin
   for I := 1 to Length(str) do
   begin
      ch := str[I]
      str[I] := str[Length(str) - I + 1];
      str[Length(str) - I + 1] := ch;
   end;


Habs nicht getestet, zeigt aber auf jeden Fall das Prinzip, wenn man mit Pascal-Strings arbeitet.


N43
quelltext:

{{{
program verkehrt;
uses crt;
var len,i:integer;
ein,aus:string;

procedure eingabe;
begin
writeln('Geben sie bitte das Wort ein,welches sie rückwärts ausgegeben haben wollen.');
writeln('Beenden sie ihre Eingabe mi einem Enter!');
writeln('Starten sie jetzt mit der Einagbe ihres Wortes: ');readln(ein);
end;
procedure ausfuehrung(var ein:string);
begin
len:=lenght(ein);
for i=len downto 1
aus:=aus+ein[i];
end;

begin
clrscr;
eingabe;
ausfuehrung(aus);
writeln(aus);
readln;

end.
}}}


so also daswär jetzt mal mein quelltext. hab ich mir ausgedruckt auch wenn ich es nicht durfte. naja egal. jedenfalls funktioniert es noch nicht und ich find den fehler nicht.
ich geb ein wort ein, und es werden zeichen irgendwo auf dem bildschirm verteilt ausgegebn. kann mir da jemand nochmal helfen und mir die fehler vllt. berichtigen??

mfg calli
Hallo,

du ließt das Wort in die Variable "ein" ein. Rufst dann aber ausfuehrung mit der Variable "aus" auf. Also einfach den Code in
Code PASCAL :
begin
clrscr;
eingabe;
ausfuehrung(ein);
writeln(aus);
readln;
 
end.
ändern.

Andere Fehler hab ich jetzt nicht gesehen.


N43
danke habs nun hinbekommenSmilie
Referenz-URLs