Re: Vokale Zählen
Ich möchte wirklich kein fertiges Projekt von Euch haben,ich will es nur richtig verstehen.ich hab von delphi echt nicht soviel ahnung und in der schule wird das auch nicht so richtig erklärt finde ich.ich setz mich mal ran und lass mir das nochmal und nochmal durch den kopf gehen.ich muss da doch drauf kommen. Danke Matze und Klaus01 für Eure hilfe
|
Re: Vokale Zählen
Ich hab mal aufgeschrieben wie ich mir das Projekt genau vorstelle und ich hab auch schon vieles versucht aber ich bekomm das nicht hin irgendwie.
ich muss ein feld haben wo ich einen satz eingeben kann und dann muss ich einen button haben und wenn ich drauf klicke muss das programm in dem eingegebenen satz alle konsonanten und vokale zählen und die muss er dann einen einzelnen felder dann reinschreiben also ein 1 feld für konsonanten und eins für vokale und ich denke man muss als variable schonmal vokale und konsonanten angeben ganz am anfang muss die variable den wert 0 erhalten und vokal auch und wenn der dann die einzelnen buchstaben vom satz durchgeht und einen vokal oder konsonant findet muss der immer 1 dazuzählen und am ende alles addieren und das ergebnis ins ausgabefeld schreiben.so sollte das ganze aussehen aber ich bekomm das einfach nicht gebacken sorry |
Re: Vokale Zählen
ich denke dir muss erstmal klar werden wie das ohne Delphi geht. Desweiteren gewöhne dich bitte an den "Edit"-Button.
Du schreibst ja das du immer 1 dazuzählen musst (bei Konstante bzw. Vokal). Am Ende schreibst du jedoch noch das du alles dann addieren musst. Wenn du ummer 1 dazu zählst ist es doch schon addiert. Wenn du etwas zählen willst solltest du einen Variablentyp nutzen der Zahlen beherbergt. Und dann ist das Prinzip folgendes. 1.) AnzahlKonsonanten = 0 2.) AnzahlVokale = 0 3.) Alle Buchstaben der Reihe nach durchgehen. Wenn Es ein Vokal ist dann wird die Anzahl der Vokale um 1 erhöht ansonsten die Anzahl der Konsonanten. Wenn du dann alle Buchstaben duchgegangen bist hast du somit schon die Anzahl der Vokale und die Anzahl der Konsonanten. Diese musst du dann noch ausgeben. Wie bereits geschrieben hab ich eher das Gefühl das du dir nicht klar bist wie die Aufgabe ohne Delphi (auf Blatt papier) gelöst werden kann. |
Re: Vokale Zählen
also du fügst in deine Form ein edit ein, 2 labels und ein button.
auf den button machst du dann:
Delphi-Quellcode:
so das war es dann schon.
procedure TForm1.Button1Click(Sender: TObject);
var konsonanten,vokale,i:integer; begin // beides 0 setzen konsonanten:=0; vokale:=0; for i:=1 to length(edit1.text) do // jedes Zeichen des satzes durchgehen begin if edit1.text[i] in ['a','e','i','o','u'] then vokale:=vokale+1; // wenn ein Vokal, dann eins Hochzählen //konsonanten zählen if edit1.Text[i] in ['b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','u','v','w','x','y','z'] then konsonanten:=konsonanten+1; // wenn kosonant, dann eins hochzählen end; label2.caption:=inttostr(konsonanten); // ausgeben label1.caption:=inttostr(vokale); // ausgeben end; |
Re: Vokale Zählen
Es soll ein Satz eingegeben werden.
Die meisten Sätze enthalten Interpunktionszeichen und Leerzeichen. Ich würde Kommata und Leerzeichen nicht gerade als Konsonanten bezeichnen. Daher würde ich es eher so machen:
Delphi-Quellcode:
BTW: Sind Umlaute eigentlich Vokale oder Konsonanten?
procedure TForm1.zaehlenClick(Sender: TObject);
begin satz:=AnsiUpperString(satz); vokal:=0; konsonant:=0; for i:=1 to length(satz) do if satz[i] in ['A', 'E', 'I', 'O', 'U'] then inc(vokal; else if satz[i] in ['A'..'Z'] then inc(konsonant); end; |
Re: Vokale Zählen
ich muss zugeben das ich damit schon etwas überfordert bin sorry.für mich ist das alles neuland und ich versuch es einfach nur zu verstehen. Ich möchte zuerst alle Vokale einzeln und alle Konsonanten einzeln ermitteln ( zahlenmässig) und dann das ganze zusammen rechnen irgendwie. Ich hab das auf Papier schon versuicht mit zeichnung und so eben aber in der realität sieht es völlig anderst aus. ich check das irgendwie nicht sorry.Ich bin für jede hilfe dankbar. Wenn ich antwort erstellen anklicke finde ich nirgens einen Edit button sorry sonst würde ich diesen benutzen
|
Re: Vokale Zählen
es ist ja wunderschön ds ihr eine komplettlösung postet, aber anscheinend habt ihr nicht daran gedacht das er dabei nicht viel lernt und das diese unvollständig sind. Ihr berücksichtigt jeweils nur groß oder kleingeschriebenes aber nicht beides.
|
Re: Vokale Zählen
Zitat:
was verstehst du an meinem Text nicht, denn ich auch schon kommentiert habe... aber eine Frage: ein bissl englisch kannst du? oder du kennst die schleifen, if anweisungen? das einfach auf deinen Button legen.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var konsonanten,vokale,i:integer; begin edit1.Text:=ansilowercase(edit1.text);// Groß- und Kleinschreibung ignorieren // beides 0 setzen konsonanten:=0; vokale:=0; for i:=1 to length(edit1.text) do // jedes Zeichen des satzes durchgehen begin if edit1.text[i] in ['a','e','i','o','u'] then vokale:=vokale+1; // wenn ein Vokal, dann eins Hochzählen //konsonanten zählen if edit1.Text[i] in ['b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z'] then konsonanten:=konsonanten+1; // wenn kosonant, dann eins hochzählen end; label2.caption:=inttostr(konsonanten); // ausgeben label1.caption:=inttostr(vokale); // ausgeben end; |
Re: Vokale Zählen
Mein Englisch geht so sag ich mal und Schleifen und if anweisungen hab ich schon gehört und in der Schule auch sogar schonmal benutzt nur eben viel zu selten wie ich sehe sorry.
|
Re: Vokale Zählen
Zitat:
ich gebe Dir recht. Aber trotzdem poste ich hier mal meine Lösung. Wichtig ist: Die Funktionalität ist von der GUI (OnClick getrennt). Leider machen diesen schweren Fehler immer noch viel zu viele. Dann habe ich versucht das ganze so offen wie nur möglich zu halten. Es geht dabei einfach darum verschiedene "Char-Arten" zu zählen. Diese "Arten" sind einfach in den Records eines Arrays definiert. Was man damit macht ist aufgabe des Entwicklers ;-)
Delphi-Quellcode:
type
TCharCountInfo = record Chars: set of Char; Counter: Cardinal; end; function CountCharTypes(const aString: string; var CharTypes: array of TCharCountInfo): Cardinal; var ndx1: Integer; ndx2: Integer; CharCount: Cardinal; CountString: string; begin CountString := aString; CharCount := 0; for ndx1 := 0 to Length(aString) do begin for ndx2 := Low(CharTypes) to High(CharTypes) do begin if (aString[ndx1] in CharTypes[ndx2].Chars) then begin Inc(CharTypes[ndx2].Counter); Inc(CharCount); end; end; end; result := CharCount; end; procedure TDemoForm.btn_testClick(Sender: TObject); var myCharTypes: array[1..6] of TCharCountInfo; s: string; count: Integer; begin myCharTypes[1].Chars := ['a'..'z'] - ['a', 'e', 'i', 'o', 'u']; myCharTypes[1].Counter := 0; myCharTypes[2].Chars := ['a', 'e', 'i', 'o', 'u']; myCharTypes[2].Counter := 0; myCharTypes[3].Chars := ['A'..'Z'] - ['A', 'E', 'I', 'O', 'U']; myCharTypes[3].Counter := 0; myCharTypes[4].Chars := ['A', 'E', 'I', 'O', 'U']; myCharTypes[4].Counter := 0; myCharTypes[5].Chars := ['ö', 'ü', 'ä', 'ß']; myCharTypes[5].Counter := 0; myCharTypes[6].Chars := ['Ö', 'Ü', 'Ä']; myCharTypes[6].Counter := 0; s := 'qwaeiouäöüßÄÖÜQWR'; count := CountCharTypes(s, myCharTypes); Label1.Caption := Format('Es wurden %d Zeichen gezählt', [count]); Label2.Caption := Format('davon waren %d Zeichen in myCharTypes[1]', [myCharTypes[1].Counter]); Label3.Caption := Format('davon waren %d Zeichen in myCharTypes[2]', [myCharTypes[2].Counter]); Label4.Caption := Format('davon waren %d Zeichen in myCharTypes[3]', [myCharTypes[3].Counter]); Label5.Caption := Format('davon waren %d Zeichen in myCharTypes[4]', [myCharTypes[4].Counter]); Label6.Caption := Format('davon waren %d Zeichen in myCharTypes[5]', [myCharTypes[5].Counter]); Label7.Caption := Format('davon waren %d Zeichen in myCharTypes[6]', [myCharTypes[6].Counter]); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz