Tutorial 1_29

Module

______________________________________________________________________
// 1_29 Module
// Global.h

#include <stdio.h>
#include <string.h>

void Listenstart(char* Name, int Munition, int Kampfstaerke, int Lebensenergie);
void Neues_Element(char* Name, int Munition, int Kampfstaerke, int Lebensenergie);
void Ausgabe(void);
______________________________________________________________________ ______________________________________________________________________
// 1_29 Module
// Main.cpp

#include "Global.h"

extern void Liste_Loeschen(void);

void main(void)
{
    int auswahl=0;

    char Name[50];
    int Munition=0;
    int Kampfstaerke=0;
    int Lebensenergie=0;

    printf("Geben sie die Daten fuer den ersten Character ein:\n"
        "Achtung: Dieser Charcter kann nicht geloescht werden");
    printf("Geben sie Name, Munition, Kampfstaerke und Lebensenergie an\n"
        "Name:\n");
    scanf("%s", &Name);
    printf("Munition:\n");
    scanf("%d", &Munition);
    printf("Kampfstaerke:\n");
    scanf("%d", &Kampfstaerke);
    printf("Lebensenergie:\n");
    scanf("%d", &Lebensenergie);

    Listenstart(Name, Munition, Kampfstaerke, Lebensenergie);

    while(auswahl != 4)
    {
        printf("Was wollen sie tun?\n"
            "1. Einen Charakter speichern\n"
            "2. Die Liste der vorhandenen Charaktere einsehen\n"
            "3. Alle Charactere loeschen\n"
            "4. BEENDEN\n");
        scanf("%d", &auswahl);
        switch(auswahl)
        {
        case 1:
            printf("Geben sie Name, Munition, Kampfstaerke und Lebensenergie an\n"
                "Name:\n");
            scanf("%s", &Name);
            printf("Munition:\n");
                scanf("%d", &Munition);
            printf("Kampfstaerke:\n");
            scanf("%d", &Kampfstaerke);
            printf("Lebensenergie:\n");
            scanf("%d", &Lebensenergie);
            Neues_Element(Name, Munition, Kampfstaerke, Lebensenergie);
            break;
        case 2:
            Ausgabe();
            break;
        case 3:
            Liste_Loeschen();
            printf("Alle Charactere bis auf den ersten wurden geloescht\n");
        default:
            break;
        }

    } // Ende while
}
______________________________________________________________________ ______________________________________________________________________
// 1_29 Module
// Liste.cpp

#include"Global.h"

struct Listenelement
{
    char Name[50];
    int Munition;
    int Kampfstaerke;
    int Lebensenergie;

    // Zeiger auf das nächste Listenelement:
    Listenelement* Naechstes;
};

void Liste_Loeschen(void);  /*wird nicht in Global.h definiert, um zu zeigen,
                            man mit extern die Deklarationen anderer Dateien
                            dem Compiler in jeder Datei klar machen kann*/

Listenelement* Letztes(void);

Listenelement Liste;

void Listenstart(char* Name, int Munition, int Kampfstaerke, int Lebensenergie)
{
    strcpy(Liste.Name, Name);
    Liste.Munition = Munition;
    Liste.Kampfstaerke = Kampfstaerke;
    Liste.Lebensenergie = Lebensenergie;
}


void Neues_Element(char* Name, int Munition, int Kampfstaerke, int Lebensenergie)
{
    Listenelement* Element = new Listenelement;
    strcpy(Element->Name, Name);
    Element->Munition = Munition;
    Element->Kampfstaerke = Kampfstaerke;
    Element->Lebensenergie = Lebensenergie;
    Element->Naechstes = NULL;
    Listenelement* Zeiger = Letztes();
    Zeiger->Naechstes = Element;
}

Listenelement* Letztes(void)
{
    Listenelement* Zeiger = &Liste;
    while(NULL != Zeiger->Naechstes)
    {
        Zeiger = Zeiger->Naechstes;
    }
    return Zeiger;
}

void Ausgabe(void)
{
    Listenelement* Zeiger = &Liste;
    while(NULL != Zeiger)
    {
        printf("%s %d %d %d\n", Zeiger->Name, Zeiger->Munition, Zeiger->Kampfstaerke, Zeiger->Lebensenergie);
        Zeiger = Zeiger->Naechstes;
    }
}

void Liste_Loeschen(void)
{
    while(NULL != Liste.Naechstes)
    {
        Listenelement* Zeiger = & Liste;
        while(Letztes() !=  Zeiger->Naechstes)
            Zeiger = Zeiger->Naechstes;

        delete Letztes();
        Zeiger->Naechstes = NULL;
    }
}
______________________________________________________________________
Zurück