Zum Inhalt springen

Ich und Delphi -> ein Problem :D


Luncustaf

Empfohlene Beiträge

Hy Leutz,

ich bins mal wieder mit Delphi.

zu meinem Problem:

Ich muss ein Programm schreiben das mir nachdem ich einen Text eingegeben habe die Anzahl der Wörter, Zahlen und Zeichen(. : ; ,)

ausgibt.

hier der Code den ich geschrieben habe


program Uebung9;

{$APPTYPE CONSOLE}

uses

  sysutils;


var

text:string;

Zzahl:integer;                          // Variablen

Zwort:integer;

Zzeichen:integer;

Zustand:string;

i:integer;

begin

write('Mit diesem Programm wird errechnet, nach Eingabe eines Textes, wieviele Woerter und Saetze der Text beinhaltet');

writeln;

write('Bitte geben Sie einen Text ein: ');     // Text eingeben

Readln(text);                                  // Text einlesen

Zzahl:=0;

Zzeichen:=0;

Zwort:=0;

if length(text)=0                                       //wenn kein Text eingegeben wird

then begin

write('Sie muessen einen Text eingeben');

end

else

if (text[1]>='0') and (text[1]<='9')

//if (text[1]='0') and (text[1]='1') and (text[1]='2') and (text[1]='3') and (text[1]='4') and (text[1]='5') and (text[1]='6') and (text[1]='7') and (text[1]='8') and (text[1]='9')

then

Zustand:='Zahl' else

  if (text[1]='.') or (text[1]=',') or (text[1]=';') or (text[1]=':')

  then

  Zustand:='Zeichen' else

    if (text[1]=' ')

    then

    Zustand:='kein Wort'

    else

    zustand:='Wort';

for i:= 2 to length(text)

do begin

if Zustand='Wort'

then begin

  if (text[i]>='0') and (text[i]<='9')

  then begin

  Zustand:='Zahl';

  Zwort:=Zwort +1;

  end else

    if (text[i]='.') or (text[i]=',') or (text[i]=';') or (text[i]=':')

    then begin

    Zustand:='Zeichen';

    Zwort:=Zwort +1;

    end else

      if (text[i]=' ')

      then begin

      Zustand:='Kein Wort';

      Zwort:=Zwort +1;

      end

else

end;

if Zustand='Zeichen'

then begin

  if (text[i]>='A') or (text[i]<='Z')

  then begin

  Zustand:='Wort';

  Zzeichen:=Zzeichen +1

  end else

   if (text[i]>='0') and (text[i]<='9')

   then begin

   Zustand:='Zahl';

   Zzeichen:=Zzeichen +1;

   end else

     if (text[i]=' ')

     then begin

     Zustand:='kein Wort';

     Zzeichen:=Zzeichen +1;

end else

end;

if Zustand='Zahl'

then begin

  if (text[i]>='A') and (text[i]<='Z')

  then begin

  Zustand:='Wort';

  Zzahl:=Zzahl +1

  end else

    if (text[i]='.') or (text[i]=',') or (text[i]=';') or (text[i]=':')

    then begin

    Zustand:='Zeichen';

    Zzahl:=Zzahl +1;

    end else

      if (text[i]=' ')

     then begin

     Zustand:='kein Wort';

     Zzahl:=Zzahl +1;

end else

end;

if Zustand='kein Wort'

then begin

  if (text[i]>='A') and (text[i]<='Z')

  then begin

  Zustand:='Wort';

  end else

    if (text[i]='.') or (text[i]=',') or (text[i]=';') or (text[i]=':')

    then begin

    Zustand:='Zeichen';

    end else

       if (text[i]>='0') and (text[i]<='9')

       then begin

       Zustand:='Zahl';

end

else

end;

end;

write(format('Ihr Text hat %d Woerter',[Zwort]));

writeln;

write(format('Ihr Text hat %d Zeichen',[Zzeichen]));

writeln;

write(format('Ihr Text hat %d Zahlen',[Zzahl]));

readln;

end.

Ich weis nicht woran es liegt das es nich funzt.

danke im voraus für eure Antworten

euer Cruzito

Link zu diesem Kommentar
Auf anderen Seiten teilen

Option Explicit

Private Sub Command1_Click()

Uhhhhhhh....

Ein Code ist ja grauenvoll. Der besteht ja nur aus IF befehlen. Blöderweise kann ich kein Delphi aber weil Delphi und Visual Basic ähnlich sind hab ich mal dein Programm in VB geschrieben. Vieleicht hilft es dir ja weiter, wenn du den Code in Delphi schreibst.

Dim Text As String 'Variablen werden Deklariert

Dim N As Integer

Dim TextZeichen As String * 1

Dim Punkt As Integer, Komma As Integer, Zahl As Integer, Buch As Integer

Text = Text1 'der Text wird zugewiesen

For N = Len(Text) To 0 Step -1 'Die schleife fährt die Zeichenkette ab

TextZeichen = Mid$(Text, N, 1) 'Ich holle mir ein Zeichen aus der Zeichenkette

If TextZeichen = "." Then Punkt = Punkt + 1 'wenn Zeichen . ist dann Zähler +1

If TextZeichen = "," Then Komma = Komma + 1 'wenn Zeichen , ist dann Zähler +1

Select Case TextZeichen

Case 1 To 9

Zahl = Zahl + 1

Case "a" To "z"

Buch = Buch + 1

End Select

If N = 1 Then Exit For

Next

MsgBox ("Punkt: " & Punkt)

MsgBox ("Komma: " & Komma)

MsgBox ("Zahlen: " & Zahl)

MsgBox ("Buchstaben: " & Buch)

End Sub

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Ansatz von X_22 ist richtig. Mit einer

for...to Schleife sparts du dir eine Menge

Geschreibsel (In diesem Fall min. 60%, soweit ich das sehen kann) und lass diese ständigen if..then..else-Bedingungen bloß weg, wenn da nämlich ein Laufzeit-Fehler drin ist, schmiert dir das Ding komplett ab

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für euere Antworten!!

Ich habe das ganze nun durch den debuggmodus laufen lassen und dort hab ich gesehen das er wenn er den Zustand wechselt aus dm neuen zustand nicht mehr heraus geht. Keine ahnung warum.

@dirtydog

Ich arbeite mit der Delphi 5.0 Enterprise Edition. Kannst du mir vielleicht den Ansatz aufschreiben wie ich das ohne if und else mache. Eine For Schleife ist ja schon drin.

Es reicht ja für einen Zustabd den rest brauch ich ja dann nur übertragen. Ich muss noch sagen das ich and er Aufgabe schon 2 Tage dran bin und es einfach nicht auf die reihe bekomme.

Das Was x_22 hingeschrieben hat check ich überhaupt nicht da ich null ahnung von VB hab sorry.

euer Cruzito

Link zu diesem Kommentar
Auf anderen Seiten teilen

hy ich hab den code nochmal neu geschrieben hoff er ist jetzt ein wenig verständlicher.


program Uebung9a;

{$APPTYPE CONSOLE}

uses

  sysutils;

var

text       :string;

Zustand    :string;

Zwort      :integer;

Zzeichen   :integer;

Zzahl      :integer;

i          :integer;

begin

write('Bitte geben Sie einen Text ein: ');

read(text);

if length(text)=0

then begin

write('Sie haben keinen Text eingegeben, bitte starten Sie das Progeamm neu')

end

else begin

end;

  if (text[1]='.') or (text[1]=',') or (text[1]=';') or (text[1]=':')

  then begin

  Zustand:='Zeichen';

  end else

  if (text[1]='0') or (text[1]='1') or (text[1]='2') or (text[1]='3') or (text[1]='4') or (text[1]='5') or (text[1]='6') or (text[1]='7') or (text[1]='8') or (text[1]='9')

  then begin

  Zustand:='Zahl';

  end else

    if (text[1]=' ')

    then begin

    Zustand:='kein Wort';

    end

else

Zustand:='Wort';


Zzahl:=0;

Zzeichen:=0;

Zwort:=0;


for i:= 2 to length(text)

do begin

if Zustand='Zeichen'

then begin

  if (text[i]='0') and (text[i]='1') or (text[i]='2') or (text[i]='3') or (text[i]='4') or (text[i]='5') or (text[i]='6') or (text[i]='7') or (text[i]='8') or (text[i]='9')

  then begin

  Zustand:='Zahl';

  Zzeichen:=(Zzeichen +1);

  end;

    if (text[i]>='A') and (text[i]<='Z') and (text[i]>='a') and (text[i]<='z')

    then begin

    Zustand:='Wort';

    Zzeichen:=(Zzeichen +1);

    end;

      if (text[i]=' ')

      then begin

      Zustand:='kein Wort';

      Zzeichen:=(Zzeichen +1);

           end;

      end else


if Zustand='Wort'

then begin

   if (text[i]='0') and (text[i]='1') and (text[i]='2') and (text[i]='3') and (text[i]='4') and (text[i]='5') and (text[i]='6') and (text[i]='7') and (text[i]='8') and (text[i]='9')

   then begin

   Zustand:='Zahl';

   Zwort:=(Zwort +1);

   end;

     if (text[i]='.') or (text[i]=',') or (text[i]=';') or (text[i]=':')

     then begin

     Zustand:='Zeichen';

     Zwort:=(Zwort +1);

     end;

       if (text[i]=' ')

       then begin

       Zustand:='kein Wort';

       Zwort:=(Zwort +1);

       end;

       end else


if Zustand='Zahl'

then begin

     if (text[i]='.') or (text[i]=',') or (text[i]=';') or (text[i]=':')

     then begin

     Zustand:='Zeichen';

     Zzahl:=(Zzahl +1);

     end;

       if (text[i]>='A') and (text[i]<='Z')

       then begin

       Zustand:='Wort';

       Zzahl:=(Zzahl +1);

       end;

         if (text[i]=' ')

         then begin

         Zustand:='kein Wort';

         Zzahl:=(Zzahl +1);

         end;

         end else


if Zustand='kein Wort'

then begin

  if (text[i]='.') or (text[i]=',') or (text[i]=';') or (text[i]=':')

  then begin

  Zustand:='Zeichen';

  end;

     if (text[i]>='A') and (text[i]<='Z') and (text[i]>='a') and (text[i]<='z')

    then begin

    Zustand:='Wort';

    end;

      if (text[i]='0') and (text[i]='1') and (text[i]='2') and (text[i]='3') and (text[i]='4') and (text[i]='5') and (text[i]='6') and (text[i]='7') and (text[i]='8') and (text[i]='9')

      then begin

      Zustand:='Zahl';

      end

end;

end;



write(format('Ihr Text hat %d Woerter',[Zwort]));

writeln;

write(format('Ihr Text hat %d Zahlen',[Zzahl]));

writeln;

write(format('Ihr Text hat %d Zeichen',[Zzeichen]));

readln;

readln;

end.

euer Cruzito

[Dieser Beitrag wurde von Cruz Candalaria am 12. Januar 2001 editiert.]

Link zu diesem Kommentar
Auf anderen Seiten teilen

hallo,

so wie ich es verstanden haben sollen vier beliebige wörter eingegeben und dann sortiert werden. hier meine lösung:

program Project1;

{$APPTYPE CONSOLE}

uses sysutils, Classes;

var

i: Integer;

WortList: TStringList;

Wort: string;

begin

WortList := TStringList.Create;

for i := 0 to 3 do

begin

WriteLn('Bitte Wort ' + IntToStr(i + 1) + ' eingeben:');

ReadLn(Wort);

WortList.Add(Wort);

end;

WriteLn('Woerter sortieren? <Enter>');

WortList.Sort;

for i := 0 to 3 do

begin

Wort := WortList;

WriteLn(Wort);

end;

Read(i); //Nur damit konsole nicht gleich verschwindet.

end.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...