C-Uebung

Iteratoren

elektronische Abgabe | | elektronische Abgabe

a) Stellen Sie für die vorhergehende Aufgabe einen Iterator zur Verfügung. D.h. die Klasse “PersonList” soll einen Iterator besitzen, der ausserhalb der Klasse eine Aufzählung aller Personen erlaubt.

Hinweis: Dafür muss Ihre Klasse die Iterator-Methoden begin() und end() besitzen, welche einen entsprechenden Iterator zurückgeben.

b) Durchsuchen Sie mit Hilfe eines Iterators alle Personen der Geburtstagsdatensammlung celebrity.txt. D.h. suchen Sie alle diejenigen Personen, welche am selben Tag Geburtstag haben wie Sie selber.

Verwenden Sie folgende Routine, um die Daten einzulesen:

#include <stdio.h>
#include <assert.h>

void PersonList::read_celebrities()
{
   FILE *file = fopen("celebrity.txt", "rb");
   assert(file);

   struct Person p;

   while (fscanf(file, "%s %d/%d/%d", p.name, &p.birthday.month, &p.birthday.day, &p.birthday.year) == 4)
   {
      int len=strlen(p.name);
      for (int i=0; i<len; i++)
         if (p.name[i]==';')
         {
            p.name[i]='\0';
            strcpy(p.surname, &p.name[i+1]);
         }

      person_add(p);
   }

   fclose(file);
}


elektronische Abgabe | | elektronische Abgabe

Options: