Autor |
Beitrag |
helmesb04
      
Beiträge: 29
|
Verfasst: Mo 14.12.09 17:53
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.
      
Beiträge: 566
Erhaltene Danke: 10
Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
|
Verfasst: 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 
      
Beiträge: 29
|
Verfasst: Mo 14.12.09 19:09
|
|
Niko S.
      
Beiträge: 566
Erhaltene Danke: 10
Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
|
Verfasst: 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
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: 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
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: 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.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Mo 14.12.09 20:53
|
|
Niko S.
      
Beiträge: 566
Erhaltene Danke: 10
Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
|
Verfasst: 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.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: 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. 
|
|
Niko S.
      
Beiträge: 566
Erhaltene Danke: 10
Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
|
Verfasst: 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.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Mo 14.12.09 22:07
|
|