Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hey,

soll von der Schule aus diese Aufgabe programmieren:

Aufgabenstellung:

Schreiben Sie ein Programm, das den Inhalt einer Text-Datei analysiert. Dazu sei die Datei

faust.txt gegeben, die den folgenden Inhalt (aus Goethes Faust) hat:

> more faust.txt

Da steh ich nun,

ich armer Tor!

Und bin so klug

als wie zuvor;

>

Das Programm faust.c soll nun die Häufigkeit eines bestimmten Buchstabens, den der Benutzer

wählen kann, in dieser Datei ermitteln. Ein Programmlauf sollte wie folgt aussehen:

> ./faust

Ich kann Goethe-Texte fuer Sie auswerten. Welchen Buchstaben

moechten Sie zaehlen? n

Die erste Zeile lautet: "Da steh ich nun,"

Es gibt den Buchstaben n 2 Mal in dieser Zeile.

Die zweite Zeile lautet: "ich armer Tor! "

Es gibt den Buchstaben n 0 Mal in dieser Zeile.

Die dritte Zeile lautet: "Und bin so klug "

Es gibt den Buchstaben n 2 Mal in dieser Zeile.

Die vierte Zeile lautet: "als wie zuvor; "

Es gibt den Buchstaben n 0 Mal in dieser Zeile.

>

Um die Sache zu vereinfachen, können Sie davon ausgehen, dass jede Zeile in der Datei faust.txt

aus exakt 16 Zeichen besteht. (Das ist normalerweise natürlich nicht der Fall. Die Datei wurde so

modifiziert, dass sie diese Bedingung erfüllt. Wir werden später lernen, wie man mit beliebig

langen Zeilen umgeht.)

Ich hab eigl schon soweit alles gemacht, dachte ich zumindest.

Wenn ich das Programm dann ausführen, dann kommt eine Fehlermeldung und das Fenster wird geschlossen:(

#include <stdio.h>

#include <stdlib.h>

int main(int argc, char *argv[])

{

FILE *fp;

fp = fopen("C:\\Prg\\faust.txt","r");

char v;

char c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16;

int count = 0;

printf("Ich kann Goethe-Texte fuer Sie auswerten.\n Welchen Buchstaben moechten Sie zaehlen?");

scanf("%c",v);

fscanf(fp,"%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",&c1,&c2,&c3,&c4,&c5,&c6,&c7,&c8,&c9,&c10,&c11,&c12,&c13,&c14,&c15,&c16);

if (v == c1)

{

count +=1;

}

if (v == c2)

{

count +=1;

}

if (v == c3)

{

count +=1;

}

if (v == c4)

{

count +=1;

}

if (v == c5)

{

count +=1;

}

if (v == c6)

{

count +=1;

}

if (v == c7)

{

count +=1;

}

if (v == c8)

{

count +=1;

}

if (v == c9);

{

count +=1;

}

if (v == c10)

{

count +=1;

}

if (v == c11)

{

count +=1;

}

if (v == c12)

{

count +=1;

}

if (v == c13)

{

count +=1;

}

if (v == c14)

{

count +=1;

}

if (v == c15)

{

count +=1;

}

if (v == c16)

{

count +=1;

}

printf("Die erste Zeile lautet: Da steh ich nun,\nEs gibt den Buchstaben %c%i Mal in dieser Zeile.",v,count);

system("PAUSE");

return 0;

Es ist zwar tierisch lang, aber ich kann leider noch nicht mit schleifen umgehen.:confused:

Vielleicht kann mir jemand auch noch einen tipp geben wie man das verkürzen kann:rolleyes:

Ich weiß echt nicht was ich da falsch gemacht habe...

Wäre super nett wenn mir da jemand helfen könnte:)

Geschrieben

Es ist zwar tierisch lang, aber ich kann leider noch nicht mit schleifen umgehen.:confused:

Dann solltest du es lernen.

C++ Tutorial - Schleifen

Vielleicht kann mir jemand auch noch einen tipp geben wie man das verkürzen kann:rolleyes:

Vielleicht hilft dir das ja:

int strcount(const string& str, char c)

{

	int count = 0;

	for(unsigned int i = 0; i < str.length(); i++)

		if(str[i] == c)

			count++;

	return count;

}

Geschrieben
C ist angesagt ;)

hoopla. :upps

Naja, macht nichts:


int strcount(const char* str, char c, int strlen)

{

	int count = 0;

	for(int i = 0; i < strlen; i++)

		if(str[i] == c)

			count++;

	return count;

}

Geschrieben

Hey schon mal vielen Dank für die antworten... aber kann mir jemand sagen wo mein fehler liegt?

Weil eigl müsste das so ja auch funktionieren, oder nicht?

Wieso stürzt der denn ab wenn ich das Programm ausführen möchte?:(

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...