Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Liste erstellen

Empfohlene Antworten

Veröffentlicht

ich soll ein liste erstellen für ein modul nur komme ich nicht weiter wo liegt der fehler ware nett wenn mir jemand helfen konnte

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

struct TStudListe

{

long matrikelnummer;

int credit_points;

struct TStudListe *next;

};

struct TStudListe *next = NULL;

struct TStudListe *anfang = NULL;

void anhaengen(long m, int c)

{

struct TStudListe *zeiger;

if(anfang == NULL) {

if((anfang =malloc(sizeof(struct TStudListe))) == NULL)

{

printf( "Kein Speicherplatz vorhanden für anfang\n");

return;

}

strcpy(anfang->matrikelnummer, m);

strcpy(anfang->credit_points, c);

anfang->next=NULL;

}

else {

zeiger=anfang;

while(zeiger->next != NULL)

zeiger=zeiger->next;

if((zeiger->next =

malloc(sizeof(struct TStudListe))) == NULL) {

printf(stderr,"Kein Speicherplatz für das letzte Element\n");

return;

}

zeiger=zeiger->next; /* zeiger auf neuen Speicherplatz */

strcpy(matrikelnummer, m);

strcpy(zeiger->credit_points, c);

zeiger->next=NULL;

}

}

/* Funktion zum Löschen einer Datei */

void loesche(long *wen) {

struct TStudListe *zeiger, *zeiger1;

if(anfang != NULL) {

if(strcmp(anfang->matrikelnummer,wen) == 0) {

zeiger=anfang->next;

free(anfang);

anfang=zeiger;

}

else {

zeiger=anfang;

while(zeiger->next != NULL) {

zeiger1=zeiger->next;

if(strcmp(zeiger1->name,wen) == 0) {

zeiger->next=zeiger1->next;

free(zeiger1);

break;

}

zeiger=zeiger1;

}

}

}

else

printf("Es sind keine Daten zum Loeschen vorhanden!!!\n");

}

/* Funktion zum Ausgeben der Dateien */

void ausgabe(void) {

struct TStudListe *zeiger = anfang;

printf("||=======================================================||\n");

printf("|%10cmatrikelnummer%10c |credit_points|");

printf("||=======================================================||\n");

while(zeiger != NULL) {

printf("|%12ld,| %02d|"\n", zeiger->matrikelnummer,zeiger->credit_points);

printf("|---------------------------------------------------------|\n");

zeiger=zeiger->next;

}

}

/* Funktion zur Eingabe der Daten */

void eingabe(void) {

int credit_points;

long matrikelnummer;

printf("matrikelnummer: ");

scanf("%ld",&matrikelnummer);

printf("credit_points");

scanf("%ld",&credit_points);

getchar();

anhaengen(n, c);

}

}

int main(void) {

int wahl;

long matrikelnummer;

do {

printf("\n1 : Eingabe\n");

printf("2 : Ausgabe\n");

printf("3 : Namen loeschen\n");

printf("9 : Ende\n");

printf("Ihre Wahl : ");

scanf("%d",&wahl);

getchar();

switch(wahl) {

case 1 : eingabe();

break;

case 2 : ausgabe();

break;

case 3 : printf("matrikelnummerzum Loeschen: ");

scanf("%ld",&matrikelnummer);

loesche(strtok(matrikelnummer, "\n"));

break;

case 9 : break;

default: printf("Falsche Eingabe!!!\n");

}

} while(wahl != 9);

return EXIT_SUCCESS;

}

  • Autor

es tut mir leidt wollte nicht unhöflich sein . ich habe Jetzt geschaft das er wenigst schon die daten speichert nun ist aber leider mein problem das er nicht den Befehl löschen anwende auf bestimmte matrikelnummer. ich hoffe ich hab es dies mal besser ein geschrankt.

#include <stdio.h>

#include <string.h>

#include <stdlib.h>


struct TStudListe

{

long matrikelnummer;

int credit_points;

struct TStudListe *next;

};


struct TStudListe *next   = NULL;

struct TStudListe *anfang = NULL;



void anhaengen(long m, int c) 

{


  struct TStudListe *zeiger;


   if(anfang == NULL) {


      if((anfang =malloc(sizeof(struct TStudListe))) == NULL) 

	  {

         fprintf(stderr, "Kein Speicherplatz vorhanden "

                         "für anfang\n");

         return;

      }

      anfang->matrikelnummer = m;

      anfang->credit_points = c;


      anfang->next=NULL;

   }


   else {

      zeiger=anfang; 

      while(zeiger->next != NULL)

         zeiger=zeiger->next;


      if((zeiger->next =

       malloc(sizeof(struct TStudListe))) == NULL) {

          fprintf(stderr,"Kein Speicherplatz für das "

                         "letzte Element\n");


          return;

      }

      zeiger=zeiger->next; 

         zeiger->matrikelnummer=m;

         zeiger->credit_points=c;




      zeiger->next=NULL;

   }

}


[COLOR="#B22222"]/* Funktion zum Löschen einer Datei */[/COLOR]

void loesche(long wen ) 

{

   struct TStudListe *zeiger, *zeiger1;

                                                         [COLOR="#B22222"]    Hier ist das Problem das er es irgend wie nicht ausführt[/COLOR]


   if(anfang != NULL) {


      if(anfang->matrikelnummer,wen == 0) {

         zeiger=anfang->next;

         free(anfang);

         anfang=zeiger;

      }

      else {


         zeiger=anfang;

         while(zeiger->next != NULL) {

            zeiger1=zeiger->next;


            if(zeiger1->matrikelnummer,wen  == 0) {


               zeiger->next=zeiger1->next;

               free(zeiger1);

               break;

            }

            zeiger=zeiger1;

         } 

      }    

   }       

   else

      printf("Es sind keine Daten zum Loeschen vorhanden!!!\n");

}


[COLOR="#B22222"]/* Funktion zum Ausgeben der Dateien */[/COLOR]

void ausgabe(void) {

   struct TStudListe *zeiger = anfang;





   while(zeiger != NULL) {

      printf("  matrikelnummer %ld,|credit_points:%d|\n", zeiger->matrikelnummer,zeiger->credit_points);



         printf("|---------------------------------------------------------|\n");


         zeiger=zeiger->next;

   }

}


[COLOR="#B22222"]/* Funktion zur Eingabe der Daten */[/COLOR]

void eingabe(void) {


   int credit;

   long matrikelnummer;


   printf("matrikelnummer: ");

   scanf("%ld",&matrikelnummer);


   printf("credit_points:");

   scanf("%d",&credit);


   getchar();

   anhaengen(matrikelnummer, credit);

}




int main(void) {

   int wahl;

   long matrikeln;


   do {

      printf("\n1 : Eingabe\n");

      printf("2 : Ausgabe\n");

      printf("3 : matrikelnummer	  loeschen\n");

      printf("9 : Ende\n");

      printf("Ihre Wahl : ");

      scanf("%d",&wahl);

      getchar();

      switch(wahl) {

         case 1 : eingabe();

                  break;

         case 2 : ausgabe();

                  break;

         case 3 : printf("matrikelnummer zum Loeschen: ");    [COLOR="#B22222"]Oder hier muss das Problem liegen[/COLOR]

                   scanf("%ld",&matrikeln);

                  loesche(matrikeln);

                  break;

         case 9 : break;

         default: printf("Falsche Eingabe!!!\n");

      }

   } while(wahl != 9);

   return EXIT_SUCCESS;

}

Bearbeitet von Klotzkopp

  • Autor

eine Frage hab ich noch ich soll mit Bubble sort noch die Matrikelnummer sorten . nur weis ich nicht genau wie ich das einbinden soll hab den grund quell-code schon gefunden nur bringt der mich nicht weiter.

void swap(int* a, int* ;

void bubble(int a[], int len)

{

int i, bound;

for (bound = len; bound > 0; bound--) {

for (i=1; i < bound; i++) {

if (a[i-1] > a[i])

swap(&a[i-1], &a[i]);

} } }


void swap(int* a, int* 

{ int tmp = *a;

*a = *b;

*b = tmp; }[/code]

ware nett wenn mir wer weiter helft

  • Autor

ich hab jetzt mal probieret das problem mehr deutlich zu machen

[COLOR="#B22222"]/* Fkt. - Anzahl der Listenelemente */

int number_elems(void)[/COLOR]

	{	int i=0;

		struct TStudListe *zeiger= anfang;

		while (zeiger != NULL)

		{

		i++;

		zeiger=zeiger->next;

		}

	printf("\n\n %d Listenelemente sind vorhanden \n\n", i);

	return i ;

	}

[COLOR="#B22222"]/* Fkt. - sortierung */[/COLOR]

 void bubblesort(struct TStudListe*zeiger, int length)

 {

     int i, j;

     for (i = 0; i < length -1; ++i) 

     {

        for (j = 0; j < length - i - 1; ++j) 

        {

            if (array[j] > array[j + 1]) 

            {

                int tmp = array[j];

                array[j] = array[j + 1];

                array[j + 1] = tmp;

            }

        }

     }

 }




int main(void) {

   int wahl;

   long matrikeln;

   int anzahl;



   do {

      printf("\n1 : Eingabe\n");

      printf("2 : Ausgabe\n");

      printf("3 : matrikelnummer zu loeschen\n");

	  printf("4 : Sortieren\n");

      printf("9 : Ende\n");

      printf("Ihre Wahl : ");

      scanf("%d",&wahl);

      getchar();

      switch(wahl) {

         case 1 : eingabe();

                  break;

         case 2 : ausgabe();

                  break;

         case 3 : printf("matrikelnummer zum Loeschen: ");

                   scanf("%ld",&matrikeln);

                  loesche(matrikeln);                                 

                  break;

	     case 4:   anzahl=number_elems();

		void bubblesort(struct TStudListe*zeiger,int anzahl);     i[COLOR="#B22222"]ch wirde gern meine struct sortieren nach der matermatrikelnummer[/COLOR]				  break;

         case 9 : break;

         default: printf("Falsche Eingabe!!!\n");

      }

   } while(wahl != 9);

   return EXIT_SUCCESS;

}

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.