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
Vielleicht hilft dir das ja:

C ist angesagt ;)

Ansonsten wäre das ziemlich einfach:

char c;
cin >> c;
ifstream in("faust.txt");
cout << count( istream_iterator<char>(in), istream_iterator<char>(), c);
[/code]

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?:(

Geschrieben

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?:(

init von v fehlt z.B..

Geschrieben

Puhh jetzt bin ich völlig überfordert:)

Wie mache ich das denn? jetzt mal für ganz doofe...

habe schon ein bisschen rumprobiert, aber dann kommt vom kompiler immer eine fehlermeldung:(

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...