Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Buchstaben aus einem String verdoppeln
helmesb04 - Mo 14.12.09 17:53
Titel: Buchstaben aus einem String verdoppeln
Hallo,
ich schreibe morgen eine Informatikklausur und unser Lehrer meinte, das wir folgendes können sollten:
Wenn wir einen Namen eingeben, z.B.: Sandra, dann soll herauskommen: Ssaannddrraa
Aber mir fällt gerade überhaupt nicht ein wie das Funktionieren könnte, ich weiß nur das man was mit length() und copy() machen muss, aber wie man das einsetzt um den Buchstaben immer wieder zu verdoppeln, das weiß ich nicht.
Generell komm ich in den Klausuren, also in der ersten war es so, nicht auf den richtigen Lösungsweg, und nachdem wir die Aufgaben alle besprochen haben im Unterricht, frag ich mich, wieso ich da nicht eher drauf gekommen bin ...
Könnte mir bitte jmd helfen bei diesem Programm?
MfG Helmesb04^^
Niko S. - Mo 14.12.09 18:00
Naja du erstellst ne Stringvariable und gehst step by step alle buchstaben vom edit ab und fügst die jeweils 2 mal in deinen String rein, danach gibst du deinen String im Edit wieder aus.
Das wäre eine Lösung..
helmesb04 - Mo 14.12.09 19:09
Juhu danke, geht doch =)
Niko S. - Mo 14.12.09 19:31
Wenn dir keine Lösung einfällt, mach einfach das, was du auch "per hand" machen würdest.
In dem Fall würdest du dir auch das Wort anschauen, den ersten Buchstaben nehmen, und ihn 2 mal wieder hinschreiben...
Manchmal ist das sehr hilfreich..
ffgorcky - Mo 14.12.09 20:29
Also ich würde das ganze so machen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| EditAusgabe.Text:=''; for i:=0 to length(EditMitDemProBuchstabenDreifachAuszugebendenText.Text)-1 do begin for j:=1 to 3 do EditAusgabe.Text:=EditAusgabe.Text+EditAusgabe.Text[i] end; |
Ich hoffe zumindest, dass so klappt - ich kanns ja leider gerade wieder nicht nachprüfen.
Das wären dann doch nur 2 Schleifen ineinander.
ffgorcky - Mo 14.12.09 20:32
Wobei ich das dann schon etwas schwieriger finde, wenn nur das erste S von Sssaaannndddrrraaa groß sein soll...
Marc. - Mo 14.12.09 20:53
ffgorcky hat folgendes geschrieben : |
Also ich würde das ganze so machen:
Delphi-Quelltext 1: 2:
| EditAusgabe.Text:=''; for i:=0 to length(EditMitDemProBuchstabenDreifachAuszugebendenText.Text)-1 do | [...] |
Verdreifachen? Es ging hier ums "Verdoppeln". :angel:
ffgorcky hat folgendes geschrieben : |
Delphi-Quelltext 1:
| EditAusgabe.Text:=EditAusgabe.Text+EditAusgabe.Text | |
Die direkte visuelle Ausgabe ist extrem lahm...
ffgorcky hat folgendes geschrieben : |
Das wären dann doch nur 2 Schleifen ineinander. |
Es geht auch durchaus mit einer Schleife. ;)
Niko S. - Mo 14.12.09 20:58
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| ... var i: Integer; str: String; begin for i := 1 to length(Edit1.Text) do str := str+Edit1.Text[i]+Edit1.Text[i]; Edit1.Text := str; end; |
Das wäre meine Lösung...
Marc. - Mo 14.12.09 21:01
Dann poste ich mal, was ich mir vorhin gedanklich zusammengetippt habe:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| function DuplicateChars(const AText: String): String; var CurCharSrc: PChar; CurCharRes: PChar; begin SetLength(result, Length(AText) * 2);
CurCharSrc := PChar(AText); CurCharRes := PChar(result);
while (CurCharSrc^ <> #0) do begin CurCharRes^ := CurCharSrc^; (CurCharRes+1)^ := CurCharSrc^; Inc(CurCharSrc, 1); Inc(CurCharRes, 2); end; end; |
Da aber der Fragesteller das Problem wohl mit Copy() und Length() zu lösen hat, ist dieser Source hier völlig redundant. :P
Niko S. - Mo 14.12.09 21:35
Okay jetzt kommt von mir die eine Million Euro Frage...
Welcher Code ist "Besser"?
Deiner scheint mir völlig unnötig kompliziert?
Oder gibt es irgendein Geschwindigkeitsvorteil (Wenn man das jetzt für mehrere Tausend Zeichen machen würde..)?
Marc. - Mo 14.12.09 22:07
Niko S. hat folgendes geschrieben : |
Okay jetzt kommt von mir die eine Million Euro Frage...
Welcher Code ist "Besser"?
Deiner scheint mir völlig unnötig kompliziert? |
Kompliziert auf dem ersten Blick, da gebe ich Dir recht.
Niko S. hat folgendes geschrieben : |
Oder gibt es irgendein Geschwindigkeitsvorteil (Wenn man das jetzt für mehrere Tausend Zeichen machen würde..)? |
Wenn Du Deine Variante noch etwas optimierst (Zugriff auf Str-Variable, statt Text[i]), dann ist der Unterschied in der Tat unerheblich. (getestet) :)
Ich habe aber auch nie behauptet, dass meine Variante die "bessere" sei. Mir schwebte dieser Code vorhin einfach nur im Kopf herum und war der Meinung, dass er hier im Forum vielleicht besser aufgehoben wäre. ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!