Strings einfach manipulieren

rookie_one

Grünschnabel
Hallo nochmals,

ich hatte letztens schon bzgl. einer Praktikumsaufgabe euch, um hilfe gebeten. Danke für die Info

Thema : Manipulation von Strings

-Einlesen von 2 Worten in einen Parameter vorgegebenes Char-Array durch verwendung der Funktion int getchar( )
(Max 20 Zeichen möglich und zusätzlich notwendiger Speicherplatz für die Stringendemakierung)

-Funktion die die Länge der eingegebenen Worte ermittelt. Der Aufruf soll vom Hauptprogramm für beide eingegeben Worte erfolgen. Ferner soll die Funktion die Länge ausgeben.

-Erstellung einer Funktion "void verteilung (char wort[ ], int tabelle[ ] ), welches für ein beliebiges Wort die Häufigkeitsverteilung der Buchstaben ermittelt und diese in dem übergebenen int-Array ablegt.(Das int-Array sollte min. 37 Speicherplätze haben, 26 für Buchstabenhäufigkeiten, 10 für Zahlenhäufgikeiten und einen weiteren für die Häufigkeit übriger Zeichen.)
-->aufruf der Funktion soll ebenfalls im Hauptprogramm erfolgen

- Funktion int maxHauf(int tabelle [ ]) , die die Indexposition auf dem Array ermittelt, für das Zeichen mit der grössten Häufigkeit bezeichnet.

-Funktion int max2Hauf(int tabelle [ ]), die die Indexposition auf dem Array für die mit zweitgrösster Häufigkeit bezeichnet.

Und zum schluss soll die Funktion " void umkehr (char wort [ ]) ", die eingegebene Zeichenkette auf dem selben Speicherplatz umkehrt. (SpiegelWort)
--->für das zweite eingegebene Wort

Soweit habe ich auch alles geschrieben ....aber jetzt kommt es ... (bitte nicht totlachen!)

Ich habe nur ein Wort einlesen lassen und das mit "scanf" und nicht z.B. über (c=getchar())!=' \n '), die unter "void einlesen(char buchstabe[])" stehen sollte.

Daher habe ich anfangen alles umzustellen und bin immer noch am tun und machen ....

Wäre euch dankbar, wenn ihr mal drüber schauen könntet.
Hänge mal die Datei an, die ich bis jetzt fertig habe an.

Gruss&Danke
 
stringfunctions.c
Code:
#include"stringFunctions.h"


      void einlesen(char wort[])
      {
        printf("bitte geben Sie ein wort ein :\n");
        scanf("%s",wort);    
      }

      int stringLaenge(char wort[])
     {
         int i = 0;
         while (wort[i++]!='\0');

          return (i-1);
    }

  void verteilung(char *wort,int *tabelle){

  int i=0,k=0,laenge=0,p=0,tabL=0;

  while(wort[laenge++] !='\0');
  laenge--;





    while(laenge-->0){
          k=0;
          for(i=16; i <=90; i++,k++){
             if(i==26)
                i=65;
            if(wort[laenge]==i||wort[laenge]==(i+32)){
                  tabelle[k] +=1;
                   p=1;
             }
          }
      if(p==0)
      tabelle[36] += 1;
      p=0;
    }
    }

    int maxHauf(int tabelle[]){
    int max = tabelle[0];
    int i =0;
    int max_index=0;
    for(i=0;i<37;i++){
          if (max<tabelle[i])
          {
                     max=tabelle[i];
                     max_index=i;
            }
    }
    return max_index;

    }

     int max2Hauf(int tabelle[]){
    int max = tabelle[0];
    int max2 = 0;
    int i =0,j=0;
    int max_index=0,max2_index=-1;
    for(i=0;i<37;i++){

           if(max<tabelle[i])
          {
                     max=tabelle[i];
                     max_index=i;
            }
    }


    for(j=0;j<37;j++)
    {


             if (max2<tabelle[j])
             {
                  if(max!=tabelle[j])
                  {
                             max2=tabelle[j];
                             max2_index=j;
                     }
               }


    }

    return max2_index;

    }





  void umkehr(char *word) {
               int laenge =0,grenze=0,start=0,temp=0;
           while(word[laenge++]!='\0');
            laenge -= 2;

      grenze = laenge/2;


      while (laenge>grenze ){

       temp=word[laenge];
       word[laenge]=word[start];
       word[start]=temp;

       laenge--;
       start++;

      }


  }
:eek:
 
stringMain.c
Code:
#include <stdio.h>
#include "stringFunctions.h"

const int tabelleLaenge = 37;

int main() {
	int tabelle[37],i=0,k=1,max=48;
	const int laenge =0;
	char meinwort[37] ;
	char wort[20];

	einlesen(wort);
	for(;i<tabelleLaenge; i++)
	tabelle[i]=0;


        umkehr(wort);
        printf("\nNach dem Tauschen: %s",wort);

     	printf("\nDas Wort %s hat die Laenge %i.",meinwort,stringLaenge(wort));
       	printf("\n%s",tabelle[0]);

        verteilung(wort,tabelle);
        printf("\n\n\tZeichen  | Häufigkeit  tabelle[ stelle ]\n");
        printf("\t----------------------------------------\n");

        for(i=0;i<tabelleLaenge-1; i++){
        	if(i==10) {
  			max=55;
  		}
  		if(tabelle[i]!=0){
  			printf("\t %c       |   %i   \t stelle = %i\n\n",i+max,tabelle[i],i);
  		}
    	}

  	printf("\tAnzahl sonstiger Zeichen %i  \n",tabelle[tabelleLaenge-1]);

	if(maxHauf(tabelle)!=-1) {
        	printf("Das Zeichen das am haeufigsten vorkommt steht an der Stelle %i",maxHauf(tabelle));
        }
        else {
        	printf("\nNix gibbet");
        }

        if(max2Hauf(tabelle)!=-1){
       		printf("\nDas Zeichen das am zweithaeufigsten vorkommt steht an der Stelle %i",max2Hauf(tabelle));

     	}
     	else {
     		printf("\nNix gibbet");
     	}

     	return 0;
}
 
Zurück