Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Datenpaare (Datensequenz) (Datenstrukturen)

Schreiben Sie ein Programm, das von 100 Personen die Familiennamen und Vornamen aufnehmen kann. Laden Sie die Namensliste herunter. Dabei sollen alle Angaben in einem einzigen Array (data) wie folgt abgelegt werden:

data[0] "Hans"    // erster  Vorname
data[1] "Meier"   //  -"-    Familienname
data[2] "Vreni"   // zweiter Vorname
data[3] "Sutter"  //  -"-    Familienname
data[4] "Johanna" // dritter Vorname
data[5] "Keller"  //  -"-    Familienname
data[6] "Peter"   // vierter Vorname
data[7] … usw.

Schreiben Sie danach die folgenden Subroutinen:

speicherePerson (data   : string[], nummer      : integer,
                 vorname: string  , familienname: string)

leseFamilienname(data : string[], nummer : integer): string leseVorname (data : string[], nummer : integer): string

In den Subroutinen bezeichnet der Parameter nummer nicht den Index, sondern die Personennummer: 1 = "Hans Meier", 2 = "Vreni Sutter", 3 = "Johanna Keller".

Dateien:

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

3 Lösung(en)

import os

def speicherePerson(data,nummer,vorname,familienname):
   data[(nummer-1)*2]=vorname
   data[(nummer-1)*2+1]=familienname  

def leseFamilienname(data,nummer):
   return data[(nummer-1)*2+1]

def leseVorname (data, nummer):
   return data[(nummer-1)*2]

# Leeres Array erzeugen:
data = ['']*200

f = open('namensliste.txt', 'r')
nummer = 1

while(True):
   vorname = f.readline().rstrip('\n')
   familienname = f.readline().rstrip('\n')
   if (vorname != '' and familienname!= ''):
      speicherePerson(data,nummer,vorname,familienname)
   else:
      break
   nummer = nummer + 1

for i in range(1,len(data)/2+1):
   print leseVorname(data,i).decode('utf-8')
   print leseFamilienname(data,i).decode('utf-8')
   

                
/*****************************************************\
| Die personenliste wurde zuvor bearbeitet, über ein  |
| tag im html-head geladen und liegt nun als string   |
| $liste aller namen, getrennt durch leerzeichen vor, |
| um sich hier aufs wesentliche konzentrieren zu      |
| können.                                             |
\*****************************************************/

// namensliste als array
list = list.split(' ');

let persons = [],
    id = 1;

function Person(from) {
  from = (from - 1) * 2    // index vs. nummer
  this.id = id++;
  this.readFirstName = function() { return list[from]; }
  this.readLastName = function() { return list[from+1]; }
  this.firstName = this.readFirstName();
  this.lastName = this.readLastName();
};

function savePerson(from) {
  let p = new Person(from);
  persons.push(p);
}

for (let i = 1; i <= 5; i++) savePerson(i);
console.table(persons);                                      // lissalanda@gmx.at

                

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

// NET 6.x | C# 10.x | VS-2022
try {
    var db = new Database(@"C:\...\namensliste.txt");
    db.AddPerson("Mustermann", "Max");              // füge hinzu Person (ID autom.)
    db.RemovePerson(7);                             // lösche Person mit ID 7
    Console.WriteLine(db.GetLastname());            // alle Nachnamen (sortiert)
    Console.WriteLine(db.GetFirstname());           // alle Vornamen (sortiert)
    Console.WriteLine(db.GetPerson());              // alle Personen (sortiert ID)
    Console.WriteLine(db.GetLastname(6));           // Nachname mit ID 6
    Console.WriteLine(db.GetFirstname(101));        // Vorname mit ID 101
    Console.WriteLine(db.GetPerson(66));            // Person mit ID 66
}
catch (Exception ex) {
    Console.WriteLine(ex.Message);
}

class Database {
    private readonly List<Person> _persons = new();
    private int maxId = 0;

    public Database(string path) {
        Path = path;
        if (!File.Exists(Path)) throw new Exception($"Path not found: {Path}");
        ReadPersons();
    }

    private string Path { get; set; }

    private void ReadPersons() {
        var lst = File.ReadAllLines(Path).ToList();
        for (int i = 0, k = 1; i < lst.Count - 1; i += 2, k += i % 2 == 0 ? 1 : 0, maxId = k - 1)
            _persons.Add(new Person(k, lst[i + 1], lst[i]));
    }
    public void RemovePerson(int id) => _persons.RemoveAll(x => x.Id == id);

    public void AddPerson(string lastName, string firstName) =>
        _persons.Add(new Person(++maxId, lastName, firstName));

    public string GetPerson(int id) => _persons?.Where(x => x.Id == id).ToList().FirstOrDefault().ToString() ?? "";

    public string GetPerson() => string.Join("\n", _persons);

    public string GetLastname(int id) => _persons?.Where(x => x.Id == id).Select(x => x.Lastname).ToList().FirstOrDefault() ?? "";

    public string GetLastname() => string.Join("\n", _persons.Select(x => x.Lastname).OrderBy(x => x).ToList());

    public string GetFirstname(int id) => _persons?.Where(x => x.Id == id).Select(x => x.Firstname).FirstOrDefault() ?? "";

    public string GetFirstname() => string.Join("\n", _persons.Select(x => x.Firstname).OrderBy(x => x).ToList());
}
record struct Person(int Id, string Lastname, string Firstname);
                

Lösung von: Jens Kelm (@JKooP)

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 2
Schwierigkeit: k.A.
Webcode: wc4q-st5h
Autor: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

Zu Aufgabenblatt hinzufügen