|
#include <iostream.h>
#include <string.h>
struct kapo {
int nr;
char title[50];
char desc[500];
};
struct kapo* pArrkapo;
struct kapo* pArrHilfskapo;
void main (void)
{
int KatLen = 10; // KatLen; zu Beginn Länge des Recordsets
int vict = 0;
int bGefunden = 0;
pArrkapo = new struct kapo[KatLen];
// Einmal fuellen, wuerde eigentlich aus Recordset kommen
for (int i = 0; i<KatLen; ++i)
{
pArrkapo[i].nr = i*10;
strcpy(pArrkapo[i].title, »Sinnloser Titel«);
strcpy(pArrkapo[i].desc, »Dies ist eine laengere Beschreibung.«);
}
while (1)
{
// Zu Beginn der Schleife aktuellen Stand ausgeben
for (i = 0; i<KatLen; ++i)
{
cout << »Nummer: « << pArrkapo[i].nr << endl;
// cout << »Titel: « << pArrkapo[i].title<< endl;
// cout << »Beschreibung: « << pArrkapo[i].desc << endl;
}
cout << »Welche Katalogposition soll gekuerzt werden? «;
cin >> vict;
// Nach zu loeschender ID suchen
for (i = 0; i<KatLen; ++i)
{
// Zu loeschende Katalogposition markieren
if (pArrkapo[i].nr == vict)
{
pArrkapo[i].nr = -1;
bGefunden = 1;
break;
}
}
if (bGefunden == 0)
{
cout << »Katalog-ID « << vict << » wurde nicht gefunden« << endl;
}
else
{
pArrHilfskapo = new struct kapo[--KatLen];
cout << »Hilfsarray ist reserviert ... « << endl;
cout << »KatLen ist jetzt « << KatLen << endl;
// Brauche ich als Index-Zähler fuer den gekuerzten Array
int j = 0;
// KatLen ist gekürzt, ich muss aber aus dem ungekuerzten Array kopieren
for (i = 0; i<(KatLen + 1); ++i)
{
// Alles außer markierter Katalogposition wird kopiert
if (pArrkapo[i].nr != -1)
{
pArrHilfskapo[j].nr = pArrkapo[i].nr;
strcpy(pArrHilfskapo[j].title, pArrkapo[i].title);
strcpy(pArrHilfskapo[j].desc, pArrkapo[i].desc);
++j;
}
}
// j sofort wieder zurücksetzen
j = 0;
// Es wurde kopiert, Originalarray kann also gelöscht ...
delete pArrkapo;
// ... und fuer die neue Laenge wieder angefordert werden.
pArrkapo = new struct kapo[KatLen];
// Aus dem Hilfsarray in das gekuerzte Original kopieren
for (i = 0; i<KatLen; ++i)
{
pArrkapo[i].nr = pArrHilfskapo[i].nr;
strcpy(pArrkapo[i].title, pArrHilfskapo[i].title);
strcpy(pArrkapo[i].desc, pArrHilfskapo[i].desc);
}
// Jetzt kann Hilfsarray geloescht werden
delete pArrHilfskapo;
// Neuen Originalarray ausgeben
for (i = 0; i<KatLen; ++i)
{
cout << »Nummer: « << pArrkapo[i].nr << endl;
// cout << »Titel: « << pArrkapo[i].title << endl;
// cout << »Beschreibung: « << pArrkapo[i].desc << endl;
}
} // Ende else
bGefunden = 0;
} // Ende while(1)
} // Ende main
|