12. Dezember 200915 j Habe mein Programm sowei fertig! Jetzt bin ich grade an den Umlauten am tüfteln! Hab mich entschieden es mithilfe von z.B. \x81 für ü zu lösen! Nur mein Problem ist, dass wenn ich nun als Beispiel "über" schreiben will er mir das nicht als ü schreibt weil vermutlich \x81e ein anderes Zeichen ist. Wie kann ich das lösen ohne das ich ein Leerzeichen üm Wort machen muss?
12. Dezember 200915 j Habs gelöst! Hab einfach die folgenden Buchstaben auch mit ASCII Zeichen dargestellt! Ist zwar nicht sooo elegant aber ich denke es reicht aus! über sieht z.B. jetzt so aus: \x81\x62\x65r
12. Dezember 200915 j Für alle die mir geholfen haben: Vielen Dank! Ich poste hier auch nochmal den fertigen funktionierenden Code // Aufgabe 3b: // Realisieren Sie einen Stack als Liste unter Verwendung zweier Queues in C. // Beachten Sie, dass nur die für Queues erlaubten Funktionen verwendet werden. #include <stdio.h> #include <stdlib.h> typedef struct node *Zeiger; typedef struct node //Alias der Liste = NODE { Zeiger next; int zahl; } NODE; Zeiger p, q, First, Last; //Q1 - First=Anker, Last=Zeiger auf das Ende der Liste, q=Zeiger auf ein neues Element, p=Entnahmezeiger Zeiger x, y, Erstes, Letztes; //Q2 - Erstes=Anker, Letztes=Zeiger auf das Ende der Liste, y=Zeiger auf ein neues Element, x=Entnahmezeiger int main () //Hauptprogramm { int N, i; //N=Länge der Liste, i= Laufindex First = NULL; printf("\n Dieses Programm erstellt eine Queue mit der von Ihnen angegebenen \n"); printf(" Listenl\x84nge und f\x81llt diese mit den Zahlen 1-2-3-4.... Diese Zahlen\n"); printf(" werden dann mit Hilfe von Umschichtprozessen \x81\x62\x65r ein zweites Queue \n"); printf(" in der Reihenfolge eines Stacks ausgegeben\n Bitte geben sie die L\x84nge ein: "); // Abfragen scanf("%d",&N); // und Einlesen wie lang die Liste wird printf(" \n Der Stack sieht folgenderma\xE1\x65n aus: \n\n"); //Füllen von Queue1 First=(Zeiger) malloc(sizeof(NODE)); First->zahl=1; //Neuer Speicher Anfordern Last=First; Last->next = NULL; //Last Zeiger auf erstes Element, Next-Zeiger aus Element wo Last drauf zeigt=NULL for (i=2; i<=N; i++) { q = (Zeiger)malloc(sizeof(NODE)); q->zahl=i; //Zahl in das Element von q schreiben q->next = NULL; //Next-Zeiger von Element von q=NULL Last->next =q; //Next-Zeiger von Element wo Last drauf zeigt auf q Last = q; //Last Zeiger auf Element von q schieben } while (N>=2) //Solange die Länge der Liste größer oder gleich 2 ist tue das: { //Umschichten von 1 in 2 //Anlegen der zweiten queue mit dem ersten Element von q1 Erstes=(Zeiger) malloc(sizeof(NODE));//Neuer Speicher Anfordern Erstes->zahl=First->zahl; //Zahl aus dem Element wo "First" drauf zeigt in Element wo "Erstes" drauf zeigt schreiben Letztes=Erstes; Letztes->next = NULL;//"Letztes" Zeiger auf erstes Element, Next-Zeiger aus Element wo "Letztes" drauf zeigt=NULL //Löschen des ersten Elements von q1 p = First; //Element wo First drauf zeigt mit p markieren, First = First->next; //First auf nächstes Element (Wo Next-Zeiger von mit First markiertem Elemen drauf gezeigt hat) schieben p->next = NULL; free(p); //Next-Zeiger von Element wo p drauf zeigt=NULL; Speicher freigeben for (i=1; i<=N-2; i++) { //Einlesen der Zahl aus dem ersten Element von q1 y = (Zeiger)malloc(sizeof(NODE)); //Neuer Speicher Anfordern y->zahl=First->zahl; //Die zahl aus dem Element wo "First" drauf zeigt in das Element wo y drauf zeigt schreiben y->next = NULL; //Next-Zeiger von Element wo y drauf zeigt=NULL Letztes ->next =y; //Next-Zeiger von Element wo "Letztes" drauf zeigt auf y Letztes = y; //"Letztes" Zeiger auf Element von y schieben //Löschen des ersten Elements von q1 p = First; //Element wo First drauf zeigt mit p markieren, First = First->next; //First auf nächstes Element (Wo Next-Zeiger von mit First markiertem Elemen drauf gezeigt hat) schieben p->next = NULL; //Next-Zeiger von Element wo p drauf zeigt=NULL; free(p); //Speicher freigeben } //Ausgeben & Löschen des letzten Elements p = First; //Element wo First drauf zeigt mit p markieren, printf(" \xBA %i \xBA\n",p->zahl); //Ausgeben von Zahl aus Element wo p drauf steht First = First->next; //First auf nächstes Element (Wo Next-Zeiger von mit First markiertem Elemen drauf gezeigt hat) schieben p->next = NULL; //Next-Zeiger von Element wo p drauf zeigt=NULL; free(p); //Speicher freigeben N--; //Listenlänge um 1 verringern //Umschichten von 2 in 1 if (Erstes->next!=NULL) //Wenn Next Zeiger von Element wo "Erstes" drauf zeigt ungleich NULL ist tue das: { //Anlegen der ersten queue mit dem ersten Element von q2 First = (Zeiger) malloc(sizeof(NODE)); First->zahl=Erstes->zahl;//Neuer Speicher Anfordern Last=First; Last->next = NULL; //Last Zeiger auf erstes Element, Next-Zeiger aus Element wo Last drauf zeigt=NULL //Löschen des ersten Elements von q2 x = Erstes; //Element wo "Erstes" drauf zeigt mit x markieren Erstes = Erstes->next; //"Erstes" auf nächstes Element (Wo Next-Zeiger von mit "Erstes" markiertem Element drauf gezeigt hat) schieben x->next = NULL; free(x); //Next-Zeiger von Element wo x drauf zeigt=NULL; Speicher freigeben for (i=1; i<=N-2; i++) { //Einlesen der Zahl aus dem ersten Element von q2 q = (Zeiger)malloc(sizeof(NODE)); //Neuer Speicher Anfordern q->zahl=Erstes->zahl; //Die zahl aus dem Element wo "Erstes" drauf zeigt in das Element wo q drauf zeigt schreiben q->next = NULL; //Next-Zeiger von Element wo q drauf zeigt=NULL Last ->next =q; //Next-Zeiger von Element wo Last drauf zeigt auf q Last = q; //Last Zeiger auf Element von q schieben //Löschen des ersten Elements von q2 x = Erstes; //Element wo "Erstes" drauf zeigt mit x markieren, Erstes = Erstes->next; //"Erstes" auf nächstes Element (Wo Next-Zeiger von mit "Erstes" markiertem Element drauf gezeigt hat) schieben x->next = NULL; free(x); //Next-Zeiger von Element wo x drauf zeigt=NULL; Speicher freigeben } //Ausgeben & Löschen des letzten Elements x = Erstes; //Element wo "Erstes" drauf zeigt mit x markieren printf(" \xBA %i \xBA\n",x->zahl); //Ausgeben der Zahl aus dem Element wo x drauf zeigt Erstes = Erstes->next; //"Erstes" auf nächstes Element (Wo Next-Zeiger von mit "Erstes" markiertem Element drauf gezeigt hat) schieben x->next = NULL; free(x); //Next-Zeiger von Element wo x drauf zeigt=NULL; Speicher freigeben N--; //Listenlänge um 1 verringern } } //Ausgeben des letzten Elements: if (Erstes!=NULL) //Wenn "Erstes" nicht NULL ist tue das: { printf(" \xBA %i \xBA\n",Erstes->zahl);//Ausgeben der Zahl aus dem Element wo "Erstes" drauf zeigt //Löschen des letzten Elements x = Erstes; //Element wo "Erstes" drauf zeigt mit x markieren Erstes = Erstes->next; //"Erstes" auf nächstes Element (Wo Next-Zeiger von mit "Erstes" markiertem Element drauf gezeigt hat) schieben x->next = NULL; //Next-Zeiger von Element wo x drauf zeigt=NULL free(x); //Speicher freigeben } if (First!=NULL) //Wenn First nicht NULL ist tue das: { printf(" \xBA %i \xBA\n",First->zahl);//Ausgeben der Zahl aus dem Element wo "First" drauf zeigt //Löschen des letzten Elements p = First; //Element wo First drauf zeigt mit p markieren First = First->next; //First auf nächstes Element (Wo Next-Zeiger von mit First markiertem Element drauf gezeigt hat) schieben p->next = NULL; //Next-Zeiger von Element wo p drauf zeigt=NULL free(p); //Speicher freigeben } printf(" \xC8\xCD\xCD\xCD\xBC\n\n"); system("Pause"); return 0; }
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.