Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

File-Statistik (Zeichenketten)

Schreiben Sie ein Programm, das von einer Datei (Textdatei oder Programm-Quellcode) die Anzahl Zeilen, die Anzahl Wörter und die Anzahl Buchstaben (ohne Leerschläge und Sonderzeichen) ausgibt.

Informieren Sie sich zunächst, wie eine Datei geöffnet wird und wie daraus die Zeilen gelesen werden können. Schreiben Sie eine Boole'sche Funktion istBuchstabe() oder verwenden Sie die gegebene Funktion Ihrer Programmiersprache.

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

4 Lösung(en)

import java.io.*;

import java.util.*;



/**

 * @author philipp.gressly

 * @version 0.1 (06.05.2005)

 * Projekt: Counter

 */

public class Count {



    int numLines = 0;

    int numWords = 0;

    int numChars = 0;

    

    public Count(String fileName) throws IOException {

       FileReader fr = new FileReader(fileName);

       BufferedReader bure = new BufferedReader(fr);

       

       countLines(bure);

       ausgabe();

       bure.close();  

    }

    

    private void countLines(BufferedReader br) throws IOException{

      String actLine = br.readLine();

      while(null != actLine ) {

        numLines ++;

        countWordsChars(actLine);

        actLine = br.readLine();

      }   

    }

    

    public void countWordsChars(String line) {

      StringTokenizer st = new StringTokenizer(line);

        while(st.hasMoreTokens()) {

           String word = st.nextToken();

           numWords ++;

           numChars = numChars +  word.length();

        } 

    }

    

    public void ausgabe() {

        System.out.println("Anzahl Zeilen : " + numLines);

        System.out.println("Anzahl Woerter: " + numWords);

        System.out.println("Anzahl Zeichen: " + numChars);

    }

    

    public static void main(String arg[]) {

      if(arg.length < 1) {

          System.out.println("Filename beim Start angeben!!");

          return;

      }

      try {

         new Count(arg[0]);

      } catch (IOException iox) {

          System.out.println("Fehler in der Verarbeitung: " + iox);

      }

    }

}
                
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
File Statistik
https://www.programmieraufgaben.ch/aufgabe/file-statistik/gcx87ud7
"""

# Programmieraufgabe:
#
#     Schreiben Sie ein Programm, das von einer Datei (Textdatei oder Programm-
#     Quellcode) die Anzahl Zeilen, die Anzahl Wörter und die Anzahl Buchstaben
#     (ohne Leerschläge und Sonderzeichen) ausgibt.
#
# Diskussion der Aufgabenstellung:
#     - Welcher Zeichensatz (ASCII,Unicode,EBCDIC) wird in der Datei verwendet?
#       Lösung: Standardmethode von Python verwenden und alle Sonderfälle
#       ignorieren.
#     - Mit welchem Zeichen wird eine Zeile abgeschlossen? (CR, CR+LF, LF)
#       Lösung: Standardmethode von Python verwenden und alle Sonderfälle
#       ignorieren.
#     - Was ist ein Buchstabe (ä ist Buchstabe oder ein Sonderzeichen)?
#       Lösung: isalpha Methode von Python verwenden.
#     - Was ist ein Wort?
#       Lösung: Eine Gruppe von Zeichen, die mit einem Leerzeichen oder dem
#       Zeilenende getrennt sind und mindestens einn Buchstaben enthalten.
#       Beispiele: Kein Wort: "12" oder "12."
#       Ein Wort: "Test" oder "Test,Frage" oder "12-Ender"
#     - Was ist ein Leerzeichen?
#       Lösung: isspace Methode von Python verwenden.
#     - Zeilenfortsetzungen behandeln?
#       Lösung: Ignorieren.
#     - Worttrennungen behandeln?
#       Lösung: Das "-" als Trennzeichen behandeln, wie in der Test-Datei zur
#       Aufgabe.
#
# Autor, Erstellung:
#     Ulrich Berntien, 2018-08-03
#
# Sprache:
#     Python 3.6.6


import fileinput
import sys

if len(sys.argv) != 2:
    print("Das Skript muss mit einen Dateinamen als Parameter aufgerufen werden.")
else:
    # Zähler für die Eingabe
    count_lines = 0
    count_words = 0
    count_alpha = 0
    count_printable = 0
    # Zähler nur innerhalb eines Worts
    count_alpha_inword = 0
    # fileinput erlaubt auch mehr als eine Datei.
    for line in fileinput.input():
        # Am Ende von line ist immer ein isspace, das CR o.ä. Zeichen
        assert line[-1].isspace()
        count_lines += 1
        for index, char in enumerate(line):
            if char.isalpha():
                count_alpha += 1
                count_alpha_inword += 1
            if char.isspace():
                if count_alpha_inword > 0:
                    # Nicht ein Teilwort mit "-" am Ende der Zeile zählen
                    if not (line[index - 1:index] == "-" and line[index:].isspace()):
                        count_words += 1
                        count_alpha_inword = 0
            if char.isprintable():
                count_printable += 1
    print("Anzahl Zeilen:", count_lines)
    print("Anzahl Wörter:", count_words)
    print("Anzahl Buchstaben:", count_alpha)
    print("Anzahl Zeichen:", count_printable)
                

Lösung von: Ulrich Berntien ()

// NET 6.x | C# 10.x | VS-2022

var path = @"C:\...\pseudo.txt";
if (!File.Exists(path)) return;
var txt = File.ReadAllText(path);

new List<(string obj, string pat)> {
    ("rows:",        @"\b[^.!?]+[.!?]+"),
    ("words:",       @"\W+"),
    ("digits:",      @"\d"),
    ("numbers:",     @"\d+"),
    ("blanks:",      @"[ ]"),
    ("marks:",       @"[.\,!?:;]"),
    ("letters:",     @"[a-zA-zäöüÄÖÜß]"),
    ("characters:",  @".")
}.ForEach(x => Console.WriteLine($"{x.obj,-12}{new System.Text.RegularExpressions.Regex(x.pat).Matches(txt).Count,5}"));
                

Lösung von: Jens Kelm (@JKooP)

document.write(`
    <p>
      <textarea id="txt" onkeyup="getStats()"></textarea>
    </p>
    <p id="info"></p>
`);

function getStats() {
  let txt = document.getElementById('txt'),
      info = document.getElementById('info'),
      chars = txt.value.length,
      words = txt.value.trim().split(/\s+/).length,
      lines = txt.value.split(/\r\n|\r|\n/).length;
  info.innerHTML = (`
    ${lines} Zeilen, ${words} Wörter, ${chars} Zeichen.
  `);
}
                

Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)

Verifikation/Checksumme:

Dieser Text enthält zehn Zei-
len,
achtzehn Wörter,
zwei Zahlen,
dreizehn Leerschläge,
sechs Satzzeichen,
118 Buchstaben und total 153 Zeichen.


Heureka

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 1
Schwierigkeit: k.A.
Webcode: gcx8-7ud7
Autor: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

Zu Aufgabenblatt hinzufügen