Autor |
Beitrag |
ololo
      
Beiträge: 41
|
Verfasst: Mi 30.05.07 16:04
hi delphi-forum
ich bräuchte für eine schulaufgabe ein wenig hilfe...:
Zitat: |
schreibe ein programm, das von einem eingegebenen text ermittelt, mit welcher häufigkeit die buchsteben des alphabets vorkommen.
|
das ich den text in ein memo-feld schreibe ist klar, aber wie kann ich dann herausfinden, wie häufig die einzelnen buchstabeb vorkommen??? es reicht wenn die anzahl als eine variable ausgegeben wird, den rest kann ich dann alleine lösen
hoffe auf viele antworten und danke im vorraus
ps. Ich hoffe ich hab im richtigen bereich gepostet, sonst einfach verschieben
pps. wir nutzen delphi 5 also nix benutzen was unser delphi nicht kann^^
Zuletzt bearbeitet von ololo am Mi 30.05.07 21:14, insgesamt 1-mal bearbeitet
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Mi 30.05.07 16:09
Wenn du die Nummer des Zeichens in eckigen Klammern (bei 1 beginnend) hinter den Namen deiner Variablen mit dem Text schreibst, kannst du auf einzelne Zeichen zugreifen.
Mit Length kommstre an die Länge des Strings.
Dann einfach in ner For-Schleife alles durchgehen und durchgucken.
Falls Groß-/Kleinschreibung egal sein soll, vorher den String mit AnsiUpperCase oder AnsiLowerCase komplett in Groß- bzw. Kleinbuchstaben umwandeln.
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
ololo 
      
Beiträge: 41
|
Verfasst: Mi 30.05.07 22:32
könntest du mir da nen kleinen beispieltext schreiben, so wie ich das mit den eckicgen klammern mache funzt das net... falls ichs denn richtig verstanden hab^^
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Button1Click(Sender: TObject); var a[1] : string; b[2] : string; c[3] : string;
begin end; |
danke im vorraus
@gausi
isses so ok mit der überschrift?
|
|
Jann1k
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Mi 30.05.07 22:38
zu den eckigen Klammern:
bei deiner variabklendeklaration schreibst du einfach
a:string;
nehmen wir nun an a würde der string "albert" zugewiesen, so kannst du dann in der prozedur mit a[1],a[2]...a[5] auf die einzelnen Buchstaben zugreifen und diese abgleichen.
So machst du das auch in deinem Programm, du schreibst eine for schleife von 1 bis zur länge des strings, holst dir jeden buchstaben (s.o.), überprüfst welcher das ist und erhöhst den zähler für den jeweiligen buchstaben
Zuletzt bearbeitet von Jann1k am Mi 30.05.07 22:55, insgesamt 1-mal bearbeitet
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Mi 30.05.07 22:51
Halt, bevor du das machst: Der erste Index ist 1, also Zugriff mit a[1], a[2] usw. Die Schleife läuft dann natürlich von 1 bis zur Länge. EDIT: so, Jann1k hat's editiert, damit ist dieser Post überflüssig und kann ohne Probleme überlesen werden 
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Zuletzt bearbeitet von Martok am Mi 30.05.07 22:57, insgesamt 1-mal bearbeitet
|
|
Jann1k
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Mi 30.05.07 22:55
stimmt hast recht werd das gleich editieren
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Do 31.05.07 08:13
auch auf die Gefahr hin, mich wieder unbeliebt zu machen:
(1) Schreibe mir mal die Aufgabe auf einen 100 €-Schein, Lösung kommt dann per Email
oder
(2) Was spricht gegen Aufpassen im Unterricht oder kommt wieder das Märchen: "Der Lehrer hat es nicht erklärt"?
oder
(3) Wenn man die Erklärung schon verpasst hat, sollte man sich eventuell mit ein paar Grundlagen vertraut machen!
mfg
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
Zuletzt bearbeitet von Kroko am Do 31.05.07 14:54, insgesamt 1-mal bearbeitet
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Do 31.05.07 09:23
Sach mal Kroko, was soll eigentlich diese ständige Motzerei? Ich lass das Posting mal stehen, auch wenn es absolut nichts mit dem Thema zu tun hat und einfach nur eine destruktive Wirkung hat. Weitere Kommentare dazu werde ich löschen - wenn Diskussionsbedarf darüber besteht: Neues Topic aufmachen. Und nein, das hat nichts mit Zensur zu tun.
Zum Thema: Wie schon gesagt, brauchst du eine Schleife, die den String durchgeht. Das könnte so aussehen:
Delphi-Quelltext 1: 2: 3: 4:
| for i:= 1 to length(Memo1.text) do begin end; |
Dabei ist i die Schleifenvaribale vom Typ Integer.
Zum Zählen braucht man ein Array, was soviele Zahlen speichern kann, wie es Buchstaben im Alphabet gibt. Also z.B. LetterCount: Array[1..26] of Integer;
Um z.B. den Buchstaben "A" zu zählen, könnte der Code in der Zählschleife so aussehen:
Delphi-Quelltext 1:
| if (Memo1.Text[i] = 'a') OR (Memo1.Text[i] = 'A') then LetterCount[1] := LetterCount[1] + 1; |
Das ganze kann man auch schöner schreiben bzw. so umformulieren, dass das ganze Programm in drei oder vier Zeilen passt, aber ich belass es jetzt mal dabei 
_________________ We are, we were and will not be.
|
|
ololo 
      
Beiträge: 41
|
Verfasst: Fr 01.06.07 15:53
jaa danke an alle, jetzt funzt es, habs noch n bissl geändert mich otionen etc aba danke, das hauptproblem wurde gelöst
danke nochma an alle die mir geholfen haben!!
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Fr 01.06.07 15:55
ololo hat folgendes geschrieben: | jaa danke an alle, jetzt funzt es, habs noch n bissl geändert mich otionen etc aba danke, das hauptproblem wurde gelöst
danke nochma an alle die mir geholfen haben!! |
D1
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|