Lieber Besucher, herzlich willkommen bei: Ubuntu-Forum & Kubuntu-Forum | www.Ubuntu-Forum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
struct card* mix (struct card* stack) { struct card * help[3]; int h[2], i, j; srand(time(NULL)); h[1]=rand()%10+5; h[2]=rand()%10+25; help[1]=stack; for(i=1; i<h[1]; i++) help[1]=help[1]->next; help[2]=help[1]->next; help[3]=help[1]->next; printf("h[2]=%d\n", h[2]); //---------------------------------------------------------------- hier läuft das Programm noch(wird noch ausgegeben) printf("."); //---------------------------------------------------------------- vor dieser zeile hängt es sich in eine endlosschleife (wird nicht mehr ausgegeben) for(i=1; i<h[2]; i++) help[2]=help[2]->next; help[1]->next=help[2]->next; help[2]->next=NULL; printf("."); for(j=1;j<11;j++) { h[1]=rand()%3+5; /*start of mix*/ printf("."); while((h[2]-h[1])>=0) { help[1]=help[3]; for(i=1;i<h[1];i++) help[1]=help[1]->next; help[2]=help[1]->next; help[1]->next=stack; stack=help[3]; help[3]=help[2]; help[2]=help[2]; h[1]=rand()%3+5; } while (help[2]->next!=NULL) help[2]=help[2]->next; help[2]->next=stack; stack=help[3]; } printf("stack output: %i\n", stack->next->next->next->next->next->next->next->next->next->next->next->next->next->next->value); return stack; } |
Wenn ich mich richtig erinnere, wird printf gerne für die Umwandlung einer Zahl in einen String verwendet. Die Funktion print f (print formatted) wird in C vor allem dazu verwendet, formatierte Ausgaben zu erzeugen. Mir ist also auch unklar, in wie fern hier eine Endlosschleife entstehen kann...Zitat
wie kann ein printf("."); eine endlosschleife auslösen? geht das überhaupt?
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Dunkelangst« (27.04.2008, 15:43)
Benutzerinformationen überspringen
User
Registrierungsdatum: 14.09.2005
Derivat: Xubuntu
Architektur: 64-Bit PC
Desktop: XFCE
was soll das, du gehst einfach mal zufällig ein paar Schritte im Stack weiter??? Weiss nicht aber wenn du so zufällig ein bisschen im Speicher herumirrst kann es wohl passieren, dass es Endlosschleifen gibt....Zitat
for(i=1; i<h[1]; i++) help[1]=help[1]->next;
Benutzerinformationen überspringen
User
Registrierungsdatum: 14.09.2005
Derivat: Xubuntu
Architektur: 64-Bit PC
Desktop: XFCE
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#define MISCHVORGAENGE 999 #define KARTEN 52 struct card stapel[KARTEN]; void swap(int a, int b){ struct card aux; memcpy(aux, &stapel[a], sizeof(struct card)); memcpy(&stapel[a], &stabel[b], sizeof(struct card)); memcpy(&stapel[b], aux, sizeof(struct card)); } void shuffle(){ int i, a, b; for (i = 0; i < MISCHVORGAENGE; i++){ a = rand() % KARTEN; b = rand() % KARTEN; swap(a, b); } } |
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »hannenz« (28.04.2008, 11:48)
Sponsorenwerbung: |
Hardware, Computer, PCs, Notebooks & Laptops mit Linux |
Forensoftware: Burning Board®, entwickelt von WoltLab® GmbH
Individuelle Notebooks Laptops - Individuelle Computer PCs - Linux Notebooks & Computers
Lastminute - Ubuntu Linux - Abmahnung - Geek und Nerd Shirt Shop
T-Shirts - sanierung wien