Pascal: Programm, welches die Anzahl der vorhandenen Buchstaben ausgibt?
Ich soll ein Programm schreiben, welches aus einem Satz den man eingibt, herausliest, wie oft ein a, b, c usw. drin ist. Das sollte mit Arrays und in Pascal umgesetzt werden.
Danke schon mal vorher.
2 Antworten
![](https://images.gutefrage.net/media/user/Kiboman/1707085588070_nmmslarge__0_0_1080_1080_6145e06401a4d56d7dfd2a6b5c0e7ff5.jpg?v=1707085588000)
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.
![](https://images.gutefrage.net/media/user/xxxcyberxxx/1691185806883_nmmslarge__0_0_1230_1230_4dfa4fbf5df5051b1dd22ccc1781adca.png?v=1691185807000)
Dann tu doch genau das ;)
![](https://images.gutefrage.net/media/user/xxxcyberxxx/1691185806883_nmmslarge__0_0_1230_1230_4dfa4fbf5df5051b1dd22ccc1781adca.png?v=1691185807000)
dann gib doch an, was dein Problem genau ist und was du schon hast ... hier wird keiner deine Hausaufgaben für dich machen
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
das ist nicht meine Hausaufgabe will die aufgabe einfach so zum üben lösen krieg aber einfach keinen lösungsansatz hin ...
![](https://images.gutefrage.net/media/user/xxxcyberxxx/1691185806883_nmmslarge__0_0_1230_1230_4dfa4fbf5df5051b1dd22ccc1781adca.png?v=1691185807000)
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
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
dankeschön das hilft mir sehr weiter :))
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
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.
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 ;)