Die Mathe-Redaktion - 19.06.2018 10:55 - Registrieren/Login
Auswahl
ListenpunktHome
ListenpunktAktuell und Interessant ai
ListenpunktArtikelübersicht/-suche
ListenpunktAlle Links / Mathe-Links
ListenpunktFach- & Sachbücher
ListenpunktMitglieder / Karte
ListenpunktRegistrieren/Login
ListenpunktArbeitsgruppen
ListenpunktSchwätz / Top 15
ListenpunktWerde Mathe-Millionär!
ListenpunktAnmeldung MPCT Juli
ListenpunktFormeleditor fedgeo
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps

Bücher
Englische Bücher
Software
Suchbegriffe:
Mathematik bei amazon
Naturwissenschaft & Technik
In Partnerschaft mit Amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden. Mitglieder können den Matheplanet-Newsletter bestellen, der etwa alle 2 Monate erscheint.

Der Newsletter Okt. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 595 Gäste und 22 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Zum letzten Themenfilter: Themenfilter:
Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » Pascal: Vokale in einer Textdatei suchen
Druckversion
Druckversion
Autor
Ausbildung J Pascal: Vokale in einer Textdatei suchen
Nortel
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 07.01.2018
Mitteilungen: 24
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2018-02-21


Hallo zusammen,

 ich habe vor einigen Tagen damit begonnen Pascal zu lernen und stehe nun vor folgender Aufgabe.
 Geschrieben werden soll ein Programm, dass die Anzahl der Vokale in einer Textdatei zählt und dies am Bildschirm ausgibt.
 Nachdem ich mich da mal ran getastet habe, scheitere ich nun allerdings schon am Öffnen der Datei :(, denn wenn ich hier den Pfad eingebe ist Schluss. Kann mir jemand sagen was ich an dieser Stelle falsch mache?

 Vielen Dank!

 Folgendes habe ich bisher:
Pascal
program vokale (Datei);
 
 
 var Datei: Text;
 Pfad: string;
 Anzahl: integer;
 a: boolean; 
 begin
 Writeln('Welche Datei soll gelesen werden: (Pfad)');
 Readln (Pfad);
 Assign (Datei, Pfad);
 Reset (Datei);
 while not EOF do
 begin
 Readln (Datei);
 if a then inc(Anzahl);
 Close (Datei);
 end;
 Writeln (Anzahl);
 End. 



  Profil  Quote  Link auf diesen Beitrag Link
gonz
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 16.02.2013
Mitteilungen: 2784
Aus: Oberharz
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2018-02-21


Hallo Nortel!

Welche Entwicklungsumgebung benutzt du denn? Ich glaube dein Programm ist so erstmal gar nicht kompilierbar, da ( wenn ich im richtigen "Dialekt" bin ) die Abfrage des EOF mitbekommen muss, welche Datei gemeint ist. Du müsstest ausserdem die Variable Anzahl auf Null initialisieren, und das Readln benötigt einen Parameter, der angibt, wohin die eingelesenen Daten gespeichert werden sollen.

Vielleicht gehst du erstmal einfacher vor, und liest nur Zeichen aus der Datei ein und gibst die auf den Bildschirm aus. Oder öffnest nur die Datein und schliesst sie wieder und gibst zwischendurch sowas wie "Datei geöffnet" oder "Datei existiert nicht" aus.

Unter TP bzw. freepascal gibt es die Möglichkeit ( und die wird es in anderen Dialekten auch geben), beim Öffnen der Datei eine Fehlerbedingung abzufragen. Das solltest du unbedingt machen, da das programm sonst zB wenn die angegebene Datei gar nicht exististiert etwas undefiniertes macht, wenn du versuchst dann aus dem "geöffneten" Dateihandle zu lesen.

Von dem groben Ablauf her ist das Programm allerdings schonmal ein schritt in die richtige Richtung, da müssen nur die diversen Macken rausgeholt werden * smile

Grüsse
gonz




-----------------
to fight! (Don Quijote de la Mancha)



  Profil  Quote  Link auf diesen Beitrag Link
Nortel
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 07.01.2018
Mitteilungen: 24
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2018-02-22


Hallo Gonz,

vielen Dank, das werde ich mir am Wochenende mal zu Gemüte führen.

SG Nortel



  Profil  Quote  Link auf diesen Beitrag Link
Nortel
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 07.01.2018
Mitteilungen: 24
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, vom Themenstarter, eingetragen 2018-02-28


Hallo Gonz,

jetzt kam ich endlich dazu mal weiter zu machen.
Also wenn ich nur die Datei öffnen und ausgeben lassen will klappt das mit folgendem schon gut:
Pascal
program vokale (Datei);
 
var Datei: text;
	Gelesen, Pfad: string;
 
 
begin
 
Writeln('Welche Datei soll gelsen werden: (Pfad)');
Readln (Pfad);
Assign (Datei, Pfad);
Reset (Datei);
 
  REPEAT
    ReadLn (Datei, Gelesen); 
	WriteLn (Gelesen);   
  UNTIL EOF (Datei); 
 
 
 Close (Datei);
end.

Anschließend habe ich versucht nach einem Vokal zu suchen bzw. diesen zählen zu lassen. Das funktioniert auch:
Pascal
program vokale (Datei);
 
var Datei: text;
	Pfad: string;
	Zeichen: char;
	Anzahl: integer;
 
 
 
begin
Anzahl  :=0;
Writeln('Welche Datei soll gelesen werden: (Pfad)');
Readln (Pfad);
Assign (Datei, Pfad);
Reset (Datei);
	begin
	REPEAT
	read (Datei, Zeichen);
	if Zeichen = 'a' then inc (Anzahl);
	UNTIL EOF (Datei); 
	end;
	writeln ('Anzahl der Vokale: ',Anzahl:3);
 Close (Datei);
end.

Was ich jetzt allerdings noch nicht lösen kann ist alle Vokale zu erfassen. Ich habe es mit einer or Verknüpfung versucht das funktionierte nicht. Eine Case Anweisung hat auch nicht funktioniert (Kompilierung fehlgeschlagen)  die hatte ich folgendermaßen aufgebaut:
Pascal
begin
	REPEAT
	read (Datei, Zeichen);
	case Zeichen of
	'a': inc (Anzahl);
	'e': inc (Anzahl);
	'i': inc (Anzahl);
	'o': inc (Anzahl);
	'u': inc (Anzahl);
	UNTIL EOF (Datei); 
	end;

Ich hatte noch die Idee das Ganze über ein Array zu lösen aber daran bin ich ebenfalls gescheitert.

Worin liegt denn mein Fehler?

Vielen Dank und schöne Grüße



  Profil  Quote  Link auf diesen Beitrag Link
gonz
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 16.02.2013
Mitteilungen: 2784
Aus: Oberharz
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, eingetragen 2018-02-28


Ich nehme erstmal einfach an, dass am Ende des CASE Konstrukts ein END fehlt? Sagt dir der Compiler nicht, was er für einen Fehler gefunden hat? Es wäre jedenfalls einfacher, wenn wir wüssten, mit welchem Compiler bzw. welchem Entwicklungssystem du arbeitest :)

Grüsse
gonz


-----------------
to fight! (Don Quijote de la Mancha)



  Profil  Quote  Link auf diesen Beitrag Link
Nortel
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 07.01.2018
Mitteilungen: 24
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.5, vom Themenstarter, eingetragen 2018-02-28


Hi Gonz,

sorry, das hatte ich ganz vergessen. Ich arbeite mit Geany und dort habe ich folgende Fehlermeldung bekommen:

vokale.pp (25,2) Error: Illegal expression
vokale.pp (25,8) Error: Constant Expression expected
vokale.pp (25,8) Fatal: Syntax error, ":" expected but "identfier EOF" found

Zeile 25 UNTIL EOF (Datei);

Daraus wurde ich leider nicht schlau, du hast aber völlig recht ich habe das end; eingefügt und so funktioniert es jetzt wunderbar.

Vielen Dank!



  Profil  Quote  Link auf diesen Beitrag Link
gonz
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 16.02.2013
Mitteilungen: 2784
Aus: Oberharz
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.6, eingetragen 2018-02-28


Hallo Nortel

Ah ok. Prima dass es jetzt klappt :)

und ja... Rückmeldungen von compilern können konfus bis irreführend sein * smile

Dann frohes weiteres Schaffen!
Grüsse,

gonz


-----------------
to fight! (Don Quijote de la Mancha)



  Profil  Quote  Link auf diesen Beitrag Link
Nortel hat die Antworten auf ihre/seine Frage gesehen.
Nortel hat selbst das Ok-Häkchen gesetzt.
Nortel wird per Mail über neue Antworten informiert.
Neues Thema [Neues Thema]  Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2018 by Matroids Matheplanet
This web site was made with PHP-Nuke, a web portal system written in PHP. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]