-         

+ Antworten
Ergebnis 1 bis 7 von 7

Thema: zeichen zählen

  1. #1
    baldi123
    Gast

    zeichen zählen

    Anzeige

    könnt ihr mir helfen, möchte gerne wissen wei so etwas funktioniert !!!

    BITTE !!!!!!!!!!



    Schreibe ein Programm welches in einem Text die vorkommenden Buchstaben zählt und deren Häufigkeit ausgibt. Auch der analysierte Text soll ausgegeben werden.

    Beispiel für die Ausgabe:

    Uebersicht des Zustands von Europa zur Zeit des ersten Kreuzzugs
    Der europaeische Okzident, in so viele Staaten er auch zerteilt ist,
    gibt im elften Jahrhundert einen sehr einfoermigen Anblick.
    Durchgaengig von Nationen in Besitz genommen, die zur Zeit ihrer
    Niederlassung ziemlich auf einerlei Stufe gesellschaftlicher Bildung standen,
    im Ganzen denselben Stammescharakter trugen und bei Besitznehmung
    des Landes in einerlei Lage sich befanden, haette er seinen
    neuen Bewohnern ein merklich verschiedenes Lokal anbieten muessen, wenn sich
    in der Folge der Zeit wichtige Verschiedenheiten
    unter denselben haetten aeussern sollen.
    Aber die gleiche Wut der Verwuestung, womit diese Nationen ihre Eroberung
    begleiteten, machte alle noch so verschieden bewohnten,
    noch so verschieden bebauten Laender, die der Schauplatz
    derselben waren, einander gleich, indem sie alles, was sich in ihnen vorfand,
    auf gleiche Weise niedertrat und vertilgte und ihren neuen Zustand
    mit demjenigen, worin sie sich vorher befunden, fast au¯er aller Verbindung
    setzte.

    A 45 5.12% |**********
    B 21 2.39% |****
    C 26 2.96% |*****
    D 40 4.55% |*********
    E 172 19.57% |***************************************
    F 11 1.25% |**
    G 25 2.84% |*****
    H 39 4.44% |********
    I 75 8.53% |*****************
    J 2 0.23% |
    K 6 0.68% |*
    L 36 4.10% |********
    M 16 1.82% |***
    N 99 11.26% |**********************
    O 24 2.73% |*****
    P 3 0.34% |
    Q 0 0.00% |
    R 57 6.48% |************
    S 55 6.26% |************
    T 51 5.80% |***********
    U 36 4.10% |********
    V 12 1.37% |**
    W 11 1.25% |**
    X 0 0.00% |
    Y 0 0.00% |
    Z 17 1.93% |***
    Es wurden 879 Buchstaben gelesen!


    PROGRAMM-ENDE!


    Annahmen:

     Der Text enthält außer Satzzeichen (Punkt, Beistrich, ...) nur die Buchstaben 'a' bis 'z' . Umlaute, scharfes s und dergleichen kommen im Text nicht vor bzw. sollen nicht berücksichtigt werden.

     Es ist egal, ob der Buchstabe als Groß- oder Kleinbuchstabe vorkommt.


    Zur Aufnahme des Textes ist ein zweidimensionales Zeichen-Array text wie folgt zu definieren:

    char text [100][80]; // Text mit 100 Zeilen zu je 80 Zeichen

    Der zu analysierende Text kann am Programmanfang fix zugewiesen werden (max. 100 Zeilen):

    strcpy(text[0],"Uebersicht des Zustands von Europa zur Zeit des ersten Kreuzzugs");
    strcpy(text[1],"Der europaeische Okzident, in so viele Staaten er auch zerteilt ist,");
    strcpy(text[2],"gibt im elften Jahrhundert einen sehr einfoermigen Anblick.");
    strcpy(text[3],"Durchgaengig von Nationen in Besitz genommen, die zur Zeit ihrer");
    strcpy(text[4],"Niederlassung ziemlich auf einerlei Stufe gesellschaftlicher Bildung standen,");
    // u.s.w.

    Beachte: Du kannst deinen Text beliebig wählen. Er sollten aber zumindest 10 Zeilen umfassen. Die Länge einer Zeile darf 80 nicht übersteigen!

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    25.09.2004
    Beiträge
    471
    Code:
    #include <iostream>
    using namespace std;
    #include <string.h>
    #include <ctype.h>
    #include <stdlib.h>
    
     
    
    char text [100][80];    // Text mit 100 Zeilen zu je 80 Zeichen
    int wert[26];
    int i=0;
    int y=0;
    int anzahl=0;
    
    void main(void)
    {
    	int zeilen = 17;
    	strcpy(text[0],"Uebersicht des Zustands von Europa zur Zeit des ersten Kreuzzugs");
    	strcpy(text[1],"Der europaeische Okzident, in so viele Staaten er auch zerteilt ist,");
    	strcpy(text[2],"gibt im elften Jahrhundert einen sehr einfoermigen Anblick.");
    	strcpy(text[3],"Durchgaengig von Nationen in Besitz genommen, die zur Zeit ihrer");
    	strcpy(text[4],"Niederlassung ziemlich auf einerlei Stufe gesellschaftlicher Bildung standen,");
    	strcpy(text[5],"im Ganzen denselben Stammescharakter trugen und bei Besitznehmung");
    	strcpy(text[6],"des Landes in einerlei Lage sich befanden, haette er seinen");
    	strcpy(text[7],"neuen Bewohnern ein merklich verschiedenes Lokal anbieten muessen, wenn sich");
    	strcpy(text[8],"in der Folge der Zeit wichtige Verschiedenheiten");
    	strcpy(text[9],"unter denselben haetten aeussern sollen.");
    	strcpy(text[10],"Aber die gleiche Wut der Verwuestung, womit diese Nationen ihre Eroberung");
    	strcpy(text[11],"begleiteten, machte alle noch so verschieden bewohnten,");
    	strcpy(text[12],"noch so verschieden bebauten Laender, die der Schauplatz");
    	strcpy(text[13],"derselben waren, einander gleich, indem sie alles, was sich in ihnen vorfand,");
    	strcpy(text[14],"auf gleiche Weise niedertrat und vertilgte und ihren neuen Zustand");
    	strcpy(text[15],"mit demjenigen, worin sie sich vorher befunden, fast au¯er aller Verbindung");
    	strcpy(text[16],"setzte.");
    
    
    
    	for(i=0;i<26;i++)
    	{
    		wert[i]=0;
    	}
    
    	printf("Uebung 3\n\n");
    	
    	for(i=0;i<zeilen;i++)
    	{
    		printf("%s\n",text[i]);
    	}
    
    	printf("\n");
    	
    	for(i=0;i<zeilen;i++)
    	{
    		for(y=0;y<80;y++)
    		{
    			text[i][y] = tolower(text[i][y]);
    			if((text[i][y] > 96) && (text[i][y] < 123))
    			{
                    wert[text[i][y]-97]=wert[text[i][y]-97]+1;
    				anzahl++;
    			}
    		}
    	}
    
    	printf("\nes wurden %i Buchstaben gelesen.\n\n",anzahl);
    
    	for(i=0;i<26;i++)
    	{
    		printf("%c\t %i\t %3.2f\t|",i+97-32,wert[i],(float)100/anzahl*wert[i]);
    		for(y=0;y<(float)100/anzahl*wert[i];y++)
    		{
    			printf("*");
    		}
    		printf("\n");
    	}
    
    
    	printf("ENDE\n\n");
    	system("pause");
    }
    es währ vielleicht schöner wenn das Zeichenzählen in einer extra Funktion geschehen würde, aber naja.

    Das is übrigends ein C++/C Code - ich denke, dass du genau das brauchst... - ich nehme mal stark an wir gehen in die gleiche Schule - wenn nicht sogar in die gleiche Klasse

    Könnt natürlich auch sein, dass es eine Standardaufgabe ist...

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    10.03.2004
    Ort
    München
    Alter
    33
    Beiträge
    286
    Um dir nicht gleich deine Hausaufgabe bzw. Übungsaufgabe komplett
    zu lösen (wonach sich das anhört...), nur die Lösungsidee:

    Laufe einfach in zwei verschachtelten Schleifen durch das Array. In
    einer Schleife wird der erste Index erhöht, in der anderen der zweite.
    Ermittle in jedem Schritt das Zeichen und erhöhe deinen Zähler für
    das entsprechende Zeichen.

    (Um nicht 26 matches zu benötigen, könnte man geschickt mit dem
    ASCI-Wert des Zeichens arbeiten und ein int-Array zur Speicherung der Werte verwenden...).

    Gruss,
    Simon

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    10.03.2004
    Ort
    München
    Alter
    33
    Beiträge
    286
    Hm...

    Das ist so ziemlich genau die Umsetzung meiner Lösungsidee - und
    dabei wollte ich ihn doch noch ein bisschen nachdenken lassen

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    25.09.2004
    Beiträge
    471
    Ja - klar - aber er muss das Programm sowieso verstehen, ansonsten hat er beim Test/Prüfung keine Chance.

    Er hat selbst Schuld, wenn er jetzt einfach den Code abgiebt und ihn nicht versteht und nicht weiß wie man auf das kommen könnte...

  6. #6
    baldi1234
    Gast
    ich kenn mich e so halbwegs aus.
    in welche schule gehst du??
    HTL vöcklabruck ???????????

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    25.09.2004
    Beiträge
    471
    ja - hab ich mir fast gedacht... - und der Lehrer ist GRUG?

    aber das is doch eh eine einfache Aufgabe gewesen...

+ Antworten

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •