|
#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; // ursprüngliche Länge des Recordsets
int vict = 0; // Beendete Los-ID
int bGefunden = 0;
int x = 0; // Index-Zähler fuer gekuerzte Arrays
// Originalarray reservieren
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.« );
}
// TIPP: Eventuell einmal komplett speichern in pArrArchivkapo
while (KatLen)
{
// 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
{
// Hilfsarray für gekürzte Kataloglaenge anfordern
pArrHilfskapo = new struct kapo[--KatLen];
// 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[x].nr = pArrkapo[i].nr;
strcpy ( pArrHilfskapo[x].title , pArrkapo[i].title );
strcpy ( pArrHilfskapo[x].desc , pArrkapo[i].desc );
++x;
}
}
// x sofort wieder zurücksetzen
x = 0;
// Es wurde kopiert, Originalarray kann also gelöscht und
// fuer die neue Laenge wieder angefordert werden.
delete pArrkapo;
pArrkapo = new struct kapo[KatLen];
// Aus Hilfsarray das gekuerzte Original neu aufbauen
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;
} // Ende else
// Für neue Runde wieder zurücksetzen
bGefunden = 0;
} // Ende while
} // Ende main
|