/* Autor: Felipe Zuffo Academico - Engenharia de Computacao - UCDB */ #include "stdio.h" #include "conio.h" #include "iostream.h" struct soldado { int pos; soldado *prox, *ant; }; /////////////////////////////////////////////////////////// void entranaroda (int x); void mata (soldado *x); /////////////////////////////////////////////////////////// soldado *primeiro=NULL, *dedo, *morto; void main (void) { double nsold=0, increm=0; int i=1, conta; clrscr(); while ( nsold <= 0 ) { gotoxy(1,1); cout << "Numero de soldados: "; gotoxy(21,1); cin >> nsold; } while ( increm <= 0 ) { gotoxy(1,2); cout << "Incremento: "; gotoxy(13,2); cin >> increm; } while ( i <= nsold ) { entranaroda(i); i++; } dedo=primeiro; while ( dedo != dedo->prox ) { conta=1; while ( conta != increm ) { dedo=dedo->prox; conta++; } morto=dedo; dedo=dedo->prox; mata(morto); } cout << "O soldado numero " << dedo->pos <<" sobreviveu."; getch(); } // Funcao q poem os soldados na roda um por um void entranaroda (int x) { soldado *no; no = new soldado; if( no == NULL ){printf("NĈo cabem todos os soldados na gruta."); getch();} else { if ( primeiro == NULL ) { no->pos=x; no->ant=no->prox=no; primeiro=no;} else { no->pos=x; no->prox=primeiro; no->ant=primeiro->ant; no->ant->prox=no; primeiro->ant=no; } } } // funcao q mata o soldado e tira o cadaver da roda, hehehehe void mata (soldado *x) { x->ant->prox=x->prox; x->prox->ant=x->ant; delete x; }