elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  proyecto
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: proyecto  (Leído 428 veces)
lesaxl

Desconectado Desconectado

Mensajes: 1


Ver Perfil
proyecto
« en: 20 Marzo 2019, 01:28 am »

Un verdugo es mandado a exterminar a n prisioneros de guerra. El exterminio lo ejecuta de la
siguiente manera: los prisioneros forman un círculo alrededor del verdugo, el verdugo elige a
quien fusilar primero, una vez muerto el primero, la verdugo cuenta, a partir del lugar donde
estaba su última víctima, k prisioneros en orden de las manecillas del reloj, y luego fusila al késimo prisionero después de su última víctima (a los muertos no los cuenta), y repite este
proceso hasta que solo quede un prisionero. El último prisionero podrá ser liberado. El verdugo
tiene un amigo entre los n prisioneros, escribe un programa que, dado, n, k y la ubicación de su
amigo, le diga a quien fusilar primero, para asegurar que su amigo sea el que quede libre

este es el codigo pero el error es que a medida que se esta corriendo llega un momento que se queda pegado y me manda a cerrar , depurar o eliminar el programa .

ya lo revise pero no encuentro donde esta el problema

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
 
typedef struct _nodo
{
    int dato;
    struct _nodo *siguiente;
} tiponodo;
 
typedef tiponodo *pnodo;
typedef tiponodo *Lista;
 
void agregarPrisionero(Lista *l, int v);
void mostrarPrisioneros(Lista lista);
void fusilarPrisioneros(Lista *lista, int k, int n);
int getAmigo(int n, int k);
 
int main()
{
    int n, k,i;
    printf("Total de Prisioneros? :");
    scanf("%d",&n);
    printf( "Cada cuantos Prisioneros fusila? :");
    scanf("%d",&k);
    Lista lista = NULL;
    printf("Su amigo es el numero %d",getAmigo(n,k));
    for(i=0;i<n;i++)
       agregarPrisionero(lista, i);
    printf("Mostar Prisioneros: ");
    mostrarPrisioneros(lista);
    fusilarPrisioneros(lista, k, n);
    printf ("Mostar Sobreviviente: ");
    mostrarPrisioneros(lista);
    return 0;
}
 
int getAmigo(int n, int k)
{
    int v = -1, tam = n, y = 1,x;
    int amigo[n];
    amigo[0] = 0;
    for(x = (n-1); x > 0; x--)
    {
        amigo
  • = y;
       y++;
    }
 
    while(tam > 1)
    {
        for(y = 0; y < k; y++)
        {
            v++;
            while(v == n || amigo[v] == n)
            {
                if(v == n)
                    v = 0;
                else
                    v++;
            }
        }
        amigo[v] = n;
        tam--;
    }
 
    for(x = 0; x < n; x++)
        if(amigo
  • != n)
           return amigo
  • ;

    return 0;
}
 
void agregarPrisionero(Lista *lista, int v)
{
    pnodo nodo;
    nodo = (pnodo)malloc(sizeof(tiponodo));
    nodo->dato = v;
    if(*lista == NULL)
        *lista = nodo;
    else
        nodo->siguiente = (*lista)->siguiente;
    (*lista)->siguiente = nodo;
}
 
void fusilarPrisioneros(Lista *lista, int k, int n)
{
    pnodo nodo;
    nodo = *lista;
    int x;
 
    for(x = 0; x < (k-2); x++)
    {
        *lista = (*lista)->siguiente;
    }
    if(*lista == (*lista)->siguiente)
    {
        free(*lista);
        *lista = NULL;
    }else{
        nodo = (*lista)->siguiente;
        (*lista)->siguiente = nodo->siguiente;
        free(nodo);
    }
    if(n > 2)
    {
        *lista = (*lista)->siguiente;
        fusilarPrisioneros(lista, k, n-1);
    }
}
 
void mostrarPrisioneros(Lista lista)
{
    pnodo nodo = lista;
   do{
      nodo->dato;
      nodo = nodo->siguiente;
   } while(nodo != lista);
}




« Última modificación: 20 Marzo 2019, 04:07 am por lesaxl » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
PROYECTO
Diseño Gráfico
kåhjî£ 1 1,663 Último mensaje 30 Julio 2004, 08:00 am
por Morris
Proyecto php « 1 2 ... 11 12 »
Sugerencias y dudas sobre el Foro
programatrix 111 16,310 Último mensaje 18 Septiembre 2005, 12:27 pm
por programatrix
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines