Autor Beitrag
helmesb04
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 566
Erhaltene Danke: 10

Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Mo 14.12.09 19:09 
Juhu danke, geht doch =)
Niko S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 566
Erhaltene Danke: 10

Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: Mo 14.12.09 20:29 
Also ich würde das ganze so machen:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Mo 14.12.09 20:53 
user profile iconffgorcky hat folgendes geschrieben Zum zitierten Posting springen:
Also ich würde das ganze so machen:
ausblenden Delphi-Quelltext
1:
2:
EditAusgabe.Text:='';
for i:=0 to length(EditMitDemProBuchstabenDreifachAuszugebendenText.Text)-1 do
[...]

Verdreifachen? Es ging hier ums "Verdoppeln". :angel:

user profile iconffgorcky hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
EditAusgabe.Text:=EditAusgabe.Text+EditAusgabe.Text					

Die direkte visuelle Ausgabe ist extrem lahm...

user profile iconffgorcky hat folgendes geschrieben Zum zitierten Posting springen:
Das wären dann doch nur 2 Schleifen ineinander.

Es geht auch durchaus mit einer Schleife. ;)
Niko S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 566
Erhaltene Danke: 10

Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
BeitragVerfasst: Mo 14.12.09 20:58 
ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Mo 14.12.09 21:01 
Dann poste ich mal, was ich mir vorhin gedanklich zusammengetippt habe:
ausblenden 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^ <> #0do
  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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 566
Erhaltene Danke: 10

Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Mo 14.12.09 22:07 
user profile iconNiko S. hat folgendes geschrieben Zum zitierten Posting springen:
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.
user profile iconNiko S. hat folgendes geschrieben Zum zitierten Posting springen:
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. ;)