1

Ich habe eine Aufgabe bzgl. Schleifen und ich kann das gar nicht.. Kann mir jemand dabei helfen?

Aufgabe:

Entwerfen und implementieren Sie ein Programm zur wiederholten Suche im unten angegebenen Text, die ermittelt, wie oft ein vom Benutzer eingegebener Buchstabe enthalten ist. Testen Sie das Programm mit dem Buchstaben F! Zur ·Selbstkontrolle· hier der Text : FINISHED FILES ARE THE RESULT OF YEARS OF SCIENTIFIC STUDY COMBINED WITH THE EXPERIENCE OF YEARS Hinweise zum Vorgehen: l l l l l l l l l Lassen Sie zunächst den Text statt wie im Beispiel angegeben innerhalb einer Wiederholungsschleife Zeichen für Zeichen ausgeben Bestimmen Sie zur Festlegung der Schleifendurchläufe die Länge des Textes (sizeof·) definieren Sie die benötigte Variablen für die Eingabe des Buchstabens und die Zählung der Übereinstimmungen Erstellen Sie die Benutzeraufforderung und die Eingabe für den Suchbuchstaben Nutzen Sie die vorher erstellte Schleife zum zeichenweisen Durchlaufen des Textes und prüfen Sie innerhalb der Schleife, ob das aus dem Text gelesene Zeichen dem Suchzeichen entspricht Wenn ja, erhöhen Sie den Zähler für die Anzahl der Übereinstimmungen Nach Durchlaufen des Textes geben Sie den Suchbuchstaben und die Anzahl der Treffer aus Sollte der Buchstabe nicht enthalten gewesen sein, wird stattdessen ein Hinweis ausgegeben Schließen Sie den Programmquelltext in eine Wiederholungsschleife ein, die es dem Benutzer ermöglicht, am Ende durch Eingabe von ·j· eine neue Suche mit anderem Buchstaben durchzuführen !

Und das ist der bereits angegeben Quelltext:

include

include

void clean() { // Bitte zum 'entleeren' des Streams nutzen int c; do { c = getchar(); } while (c != '#' && c != '\n' && c != EOF); }

int main(void) {

// Schleife hier
if {
system("PAUSE");
return 0;
}

}

int check_letter_count(char nadel){ int count = 0; char text[] = "FINISHED FILES ARE THE\nRESULT OF YEARS OF SCIENTIFIC\n" "STUDY COMBINED WITH THE\nEXPERIENCE OF YEARS"; printf("%s\n\n", text);

// Zaehlen hier

return count;

}

Diese Frage melden
gefragt

Punkte: 15

 
Kommentar schreiben
1 Antwort
0

Ich habe es mal als Bild geschickt, weil die Code Anzeige für C leider echt nicht schön ist auf der Seite ...

enter image description here

enter image description here

Diese Antwort melden
geantwortet

Schüler, Punkte: 455

 

1

Hi Daniel, sollte man laut Aufgabe für die Schleifenlänge sizeof(text) -1 statt strlen(text) nehmen? Vielleicht interpretiere ich das auch falsch.
Gruß jobe

  ─   jobe 21.02.2021 um 17:51

Ja stimmt, müsste man dann noch etwas ändern oder würde das Programm dann trotzdem funktionieren ... ich kenne mich mit C nicht zu 100% aus, daher frage ich dich mal ...

  ─   daniel.kuenkel 21.02.2021 um 18:32

Hallo Daniel, nö. Zu beachten ist lediglich, dass sizeof() die Größe des Elements liefert. C hat bei einem String am Ende ja noch den 0 Terminator. Deshalb ist bei einem String die Stringlänge sizeof() -1. sizeof() wird zur Compilezeit berechnet und im (Maschinen) Code dann als Konstante benutzt. strlen() ist ein Unterprogramm das jedes Mal ausgeführt wird. Vorteil strlen(): man kann dynamisch ändernde Längen verarbeiten. Nachteil: braucht jedes Mal Rechenzeit. Der Nachteil fällt allerdings normalerweise nur bei (schwachen) Mikroprozessor Steuerungen ins Gewicht. Bei einem PC merkst Du davon nichts.
strlen() ist die komfortablere Lösung. In der Aufgabe sollte sizeof() verwendet werden – wahrscheinlich um zu prüfen, ob man an das -1 denkt 😊
Gruß jobe

  ─   jobe 22.02.2021 um 08:23

Hallo Jobe, danke für deine ausführliche Erklärung!

  ─   daniel.kuenkel 22.02.2021 um 16:31

Kommentar schreiben