Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Suche » Suchergebnis » Hallo Gast [Anmelden|Registrieren]
Zeige Beiträge 1 bis 1 von 1 Treffern
Autor Beitrag
Thema: arrays und strings
Colakabra

Antworten: 1
Hits: 3.152
arrays und strings 17.01.2016 21:15 Forum: Sonstige Fragen


Meine Frage:
Ich sollte ein Programm schreiben, in dem er einen String einliest und dann die einzelnen Buchstaben zählt und als diagramm ausgibt. das war teilaufgabe a. jetzt soll ich b machen.

Erweitern Sie Ihr C-Programm aus Teilaufgabe a). Definieren Sie im Hauptprogramm einen String
char muster[128] = "und"

Die Erweiterung Ihres Programms soll nun die Position (den Index) im String text ermitteln, an der das muster ?und? auftaucht. Vergleichen Sie dazu an jeder Position in text die nachfolgenden 3 Zeichen mit dem muster Das Wort ?und? soll im Stringtext durch Großbuchstaben hervorgehoben werden, binden Sie die header-Datei ctype.h ein und verwenden Sie die dort bereitgestellte Funktion
toupper( char c )
welche für den in c gespeicherten Kleinbuchstaben den zugehörigen Großbuchstaben zurückgibt. Geben Sie die Position des ersten Treffers (erstes Vorkommen von muster in text ) sowie den modifizierten String text aus.



Meine Ideen:
Hier mein Programm, weiß jemand wo der Fehler ist?

#include <stdio.h>
#include <ctype.h>


int n = 1023;
void balkendiagramm( int *a ){
char p;
for ( int j = 0; j <= 25; j++ ){ //Aüßere for-Schleife zum Durchlaufen der Zählindezes des int-Feldes.
p = 'a' + j; //Bei jedem Durchlauf soll der momentane Buchstabe geändert werden zu jedem, der gerade betrachtet wird.
printf("%c: ", p); //Schreibe den im Durchlauf betrachteten Buchstaben vor die Anzahl.
for (int k = 0; k < a[j]; k++) { //Innere for-Schleife zum Ausgeben wieviele Zeichen von den jeweiligen Kleinbuchstaben im Text vorkommen
printf("*"); //Pro vorkommen gebe ein * aus.
}
printf("\n"); //Pro Durchlauf(Kleinbuchstabe) ein Absatz.
}
}

void rueckwaerts_ausgeben(char *text){
if((n>=0 && text[n] <= 'z' && text[n] >= 'a') || (n>=0 && text[n] == ' ')){
printf("%c", text[n]);
n=n-1;
rueckwaerts_ausgeben(text);
} else if ( n >= 0) {
n=n-1;
rueckwaerts_ausgeben(text);
}

}

int main(void){
int a[26]; //Array zum Zählen der Kleinbuchstaben.
char muster[128] = "und";
char text[1024]; //Array welches als Inhalt die einzelnen Zeichen der Zeichenkette enthalten soll.
for (int q = 0; q <= 1024; q++){
text[q]='A'; //Zunächst müssen alle Einträge im Feld ungleich einem Kleinbuchstaben sein, damit hinterher nicht Kleinbuchstaben gezählt werden die garnicht zur Eingebe gehören.
}
for (int j = 0; j <=26 ; j++){ //Setze zunächst alle Zählindexe gleich dem Wert 0, damit hinterher korrekt gezählt werden kann-
a[j]=0;

}
fgets(text, 1024, stdin);
for (int i = 0; i <= 1024; i++){
switch (text[i]){ //switch-case Anweisung zur Ermittlung an welcher Stelle des int-Feldes 1 hinzuaddiert werden soll, um hinterher die Kleinbuchstaben korrekt zu zählen.
case 'a':
a[0]++;
break;
case 'b':
a[1]++;
break;
case 'c':
a[2]++;
break;
case 'd':
a[3]++;
break;
case 'e':
a[4]++;
break;
case 'f':
a[5]++;
break;
case 'g':
a[6]++;
break;
case 'h':
a[7]++;
break;
case 'i':
a[8]++;
break;
case 'j':
a[9]++;
break;
case 'k':
a[10]++;
break;
case 'l':
a[11]++;
break;
case 'm':
a[12]++;
break;
case 'n':
a[13]++;
break;
case 'o':
a[14]++;
break;
case 'p':
a[15]++;
break;
case 'q':
a[16]++;
break;
case 'r':
a[17]++;
break;
case 's':
a[18]++;
break;
case 't':
a[19]++;
break;
case 'u':
a[20]++;
break;
case 'v':
a[21]++;
break;
case 'w':
a[22]++;
break;
case 'x':
a[23]++;
break;
case 'y':
a[24]++;
break;
case 'z':
a[25]++;
break;
}
}
balkendiagramm(a); //Aufruf der Funktion Balkendiagramm.
for (int h = 0; h <= 1024; h++){
if(text[h] == muster[0] && text[h+1]== muster[1] && text[h+2] == muster[2]){
printf("Position des ersten Treffers: %i\n", h+1);
text[h] = toupper(text[h]);
text[h+1] = toupper(text[h+1]);
text[h+2] = toupper(text[h+2]);
break;
}
}
printf("%s\n", text);
rueckwaerts_ausgeben(text);
}
Zeige Beiträge 1 bis 1 von 1 Treffern