Delphi-PRAXiS
Seite 2 von 7     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Vokale Zählen (https://www.delphipraxis.net/71603-vokale-zaehlen.html)

userF 18. Jun 2006 10:18

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

userF 18. Jun 2006 10:46

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

SirThornberry 18. Jun 2006 10:55

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.

Noobinator 18. Jun 2006 11:00

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:
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;
so das war es dann schon.

3_of_8 18. Jun 2006 11:04

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:
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;
BTW: Sind Umlaute eigentlich Vokale oder Konsonanten?

userF 18. Jun 2006 11:06

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

SirThornberry 18. Jun 2006 11:09

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.

Noobinator 18. Jun 2006 11:09

Re: Vokale Zählen
 
Zitat:

Zitat von userF
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

Ich habe das doch schon einzeln gepostet.
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;

userF 18. Jun 2006 11:14

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.

Sharky 18. Jun 2006 11:37

Re: Vokale Zählen
 
Zitat:

Zitat von SirThornberry
es ist ja wunderschön ds ihr eine komplettlösung postet, aber anscheinend habt ihr nicht daran gedacht das er dabei nicht viel lernt ...

Hai Sir,

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.
Seite 2 von 7     12 34     Letzte »    

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