myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   C Zeichenzählen (https://mygully.com/showthread.php?t=2135785)

spartan-b292 08.10.10 17:25

C Zeichenzählen
 
Hallo,
ich muss für die FH ein C Programm schreiben und brauche dafür eine Funktion die folgende Aufgabe erfüllt:
Ein Text soll zeichenweise eingelesen und nicht in einem Feld gespeichert werden. Beim Einlesen werden die
Zeichen gezählt. Die entsprechenden Werte werden im Feld haeufigkeit abgelegt. Die Funktion soll die Gesamtzahl aller eingelesenen Zeichen zurückgeben. Das Einlesen soll mit dem Zeichen 26 ^Z beendet
werden.

Meine erste Idee war folgende:

Code:

int einlesen (int anzahl)
{
char eingabe;
char haeufigkeit[128];

printf("Bitte geben sie einen Text ein: \n");

eingabe = getchar();
anzahl++;
haeufigkeit[eingabe]++;

return (anzahl);
       
}

Meine Frage ist jetzt konkret, macht mein Code das was er soll, daenn ansonsten kann ich die anderen Funktionen schlecht schreiben, wenn er nicht genau das macht, was muss ich verändern? Wäre nett wenn ihr mir ein wenig helfen könntet!

Danke.

urga 08.10.10 18:29

prinzipell richtig, nur
a) es gibt 256 acii-zeichen
b) da fehlt eine schleife. z.b. while ...

spartan-b292 08.10.10 18:49

Danke, das mit den 128 Zeichen ist okay so, weil mehr nicht gezählt werden sollen. Und die while schleife brauche ich um? Mit einem bestimmten Zeichen die Eingabe zu beenden?

urga 08.10.10 18:53

Zitat:

Danke, das mit den 128 Zeichen ist okay so
dann aber nicht wundern, wenn das program abstürzt, wenn du z.b. ein 'ö' eingibst.
Zitat:

Und die while schleife brauche ich um? Mit einem bestimmten Zeichen die Eingabe zu beenden?
bingo! ;)

Zachariass 08.10.10 19:03

Mir stellt sich bei deinem Quellcode gerade die Frage ob du ein C oder ein C++ Programm schreiben musst...

gosha16 08.10.10 19:46

musst du da nach jedem Zeichen nen enter hinterherschieben?

spartan-b292 08.10.10 22:08

Zitat:

musst du da nach jedem Zeichen nen enter hinterherschieben?
Dazu gibt es keine genaue Angabe in der Aufgabendarstellung aber das Beispielbild der Ausgabe, welches in der Aufgabe zu sehen ist, sieht eher so aus als würden die Zeichen am Stück ohne Enter eingegeben.

gosha16 09.10.10 01:29

also falls es wirklich am stück geschehen soll müsstest du Funktionen wie getch() [windows: conio.h unix: curses.h] verwenden.

germgerm 09.10.10 07:39

Zitat:

Zitat von urga (Beitrag 21368174)
dann aber nicht wundern, wenn das program abstürzt, wenn du z.b. ein 'ö' eingibst.

du musst beim prog immer vom worst case ausgehen, deswegen unbedingt eine abfrage einbauen, ob es innerhalb des arrays liegt. das gilt immer und allg.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:38 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.