Studentin2009
Grünschnabel
Hallo!
Ich möchte/soll ein Programm schreiben, welches eigenhende Patienten speichert und sie nach der Reihe aufruft. (FirstIn/FirstOut)
Mein Programm müsste zum allergrößten Teil so auch richtig sein, nur leider bricht es sofort ab, sobald ich einen Patienten eingetragen habe.
Es zeigt mir dann an, dass ein Problem bei der Funktion "patient_put" sien soll (unten bei den pointern)
Ich habe schon alles ausprobiert, aber es will einfach nicht funktionieren.
Kann mir jemand von Euch helfen?
Danke schonmal!
Grüße Linda
Ich möchte/soll ein Programm schreiben, welches eigenhende Patienten speichert und sie nach der Reihe aufruft. (FirstIn/FirstOut)
Mein Programm müsste zum allergrößten Teil so auch richtig sein, nur leider bricht es sofort ab, sobald ich einen Patienten eingetragen habe.
Es zeigt mir dann an, dass ein Problem bei der Funktion "patient_put" sien soll (unten bei den pointern)
Ich habe schon alles ausprobiert, aber es will einfach nicht funktionieren.
Kann mir jemand von Euch helfen?
Danke schonmal!

Grüße Linda
Code:
#include "stdafx.h"
#include "stdlib.h"
#include "string.h"
char eingabe;
struct Patient_typ
{
char Geschlecht[5];
char Nachname[20];
struct Patient_typ*pNext;
};
struct Queue_typ
{
struct Patient_typ*pAnker;
struct Patient_typ*pEnde;
};
struct Queue_typ*pListe;
Queue_typ * konstruktor() //Neuer Speicherplatz für Patient reservieren
{
struct Queue_typ*pNew;
pNew= (Queue_typ*)malloc(sizeof(Queue_typ));
pNew->pAnker=(Patient_typ*)calloc(1,sizeof(Patient_typ));
pNew->pEnde=pNew->pAnker;
//return pNew;
}
void patient_put()
{
struct Patient_typ*pNeuesGlied;
pNeuesGlied=(Patient_typ*)malloc(sizeof(Patient_typ));
printf("\nAnkommenden Patienten eintragen:\n");
printf("\nHerr/Frau + Nachname: ");
scanf("%s %s",&pNeuesGlied->Geschlecht,pNeuesGlied->Nachname);
pListe->pEnde->pNext=pNeuesGlied;
pListe->pEnde=pNeuesGlied;
}
void patient_get()
{
if(pListe->pAnker->pNext==NULL)
printf("Kein Patient mehr da!");
else
{
printf("\nNaechster Patient ist:\n");
printf("\n%s %s",pListe->pAnker->pNext->Geschlecht,pListe->pAnker->pNext->Nachname);
struct Patient_typ*pfree;
pfree=pListe->pAnker->pNext;
pListe->pAnker->pNext=pListe->pAnker->pNext->pNext;
free(pfree);
}
}
char menue()
{
printf("Wartezimerorganisation");
printf("\n----------------------");
printf("\nPatient anmelden (a)");
printf("\nPatient aufrufen (r)");
printf("\nProgramm beenden (q)\n");
scanf("%c",&eingabe);
return eingabe;
}
int _tmain(int argc, _TCHAR* argv[])
{
Queue_typ * konstruktor();
while (1)
{
eingabe=menue();
switch(eingabe)
{
case 'a':
patient_put();
break;
case 'r':
patient_get();
break;
case 'q':
//exit();
break;
}
}
return 0;
}