Pascal: Programm, welches die Anzahl der vorhandenen Buchstaben ausgibt?

2 Antworten

hier mal ein Quick and Dirty ansatz in C#.

nicht schön, gibt bestimtm was zu verbessern aber es funktioniert.

mach dir darüber gedanken was die anforderung sind, dann kramst du in der gedanklichen werkzeugkiste was deine sprache dir so bietet und schaue wie du das am besten umsetzten kannst, hat mich 10 minutne gekostet.

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Eingabe:");
            Dictionary<char, int> vorkommen = new Dictionary<char, int>();
            string eingabe = Console.ReadLine().ToUpper();
            foreach (char a in eingabe)
            {
                if (!vorkommen.ContainsKey(a)) vorkommen[a] = 0;
                vorkommen[a]++;
            }
            foreach (KeyValuePair<char, int> item in vorkommen.OrderByDescending(i => i.Value)) {
                Console.WriteLine("{0} = {1} vorkommen", item.Key, item.Value);
            }
            Console.ReadKey();
        }
    }

mir ist natürlich klar das C# kein Pascal ist aber jede sprache hat ähnliche funktionen die man sich evt selber bauen muss und wäre ja langweilig alles vorgekaut zu bekommen.

Dann tu doch genau das ;)


ichebins204 
Beitragsersteller
 12.03.2020, 18:58

XD krieg das ja nicht hin haha

hab jetz locker nh stunde probiert aber irgendwie wird das nichts

obwohl die syntax etc stimmt :)

also wenn mir da jemand helfen könnte wäre ich da sehr glücklich drüber ;)

0
xxxcyberxxx  12.03.2020, 19:01
@ichebins204

dann gib doch an, was dein Problem genau ist und was du schon hast ... hier wird keiner deine Hausaufgaben für dich machen

0
ichebins204 
Beitragsersteller
 12.03.2020, 19:05
@xxxcyberxxx

das ist nicht meine Hausaufgabe will die aufgabe einfach so zum üben lösen krieg aber einfach keinen lösungsansatz hin ...

0
xxxcyberxxx  12.03.2020, 19:11
@ichebins204

Klingt aber stark nach Hausaufgabe ;)

Ich hab keine Ahnung von der Pascal-Syntax, ich würde es aber so machen:

  • Ein Integer-Array der Länge n ... wie Groß n sein soll, hängt davon ab, wie viele Zeichen beachtet werden sollen. Ist es nur A bis Z, also 26? Oder sollen auch Satzzeichen, Sonderzeichen, Umlaute beachtet werden? Sollen A und a zwei unterschiedliche Werte sein oder der gleiche? usw...
  • Einmal über den String iterieren ...
  • Für jedes Zeichen aus dem String den entsprechenden Index herleiten (ASCII-Tablelle hilft hier z.B.)
  • Array-Feld mit dem hergeleiteten Index um eins erhöhen

Alternativ könnte man auch das Pascal-Äquivalent einer Map / Dictionary / assoziatives Array verwenden

1
ichebins204 
Beitragsersteller
 12.03.2020, 22:20
@ichebins204

falls es jemanden interessiert hab jetz ein fertiges funktionierendes programm :)

:

program buchstabenzaehlen;

uses crt;

var

 a: array['a'..'z'] of integer ;

 b: string;

  g: char;

 c,d: integer;

begin

  writeln('geben sie einen satz ein !');

  readln(b);

  c:= length(b);

 for g:='a' to 'z' do

  begin

   for d:=1 to c do

    begin

     if b[d] = g then

     begin

      a[g] := a[g]+1;

     end;

    end;

   writeln(g,' ',a[g]);

  end;

readln;

end.

0