Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

pessantiago

mooshak ajuda

Mensagens Recomendadas

pessantiago

boas tenho o seguite codigo compilo e funciona mas no mooshak não dame o erro invalid function

22.Suponha que se pretende eleger um líder dum grupo de  N pessoas. O método de eleição consiste em sentar as N pessoas numa mesa redonda e eliminar sucessivamente a pessoa sentada na posição M. Por exemplo, para N=8 e M=5 a ordem de eliminação será,  5,2,8,7,1,4,6 e o líder eleito será o 3

josephus.jpg

#include <stdio.h>
#include <stdlib.h>

int contapessoas(int lugs[50])
{
    int i;
    int npess=0;
    for (i=0;i<50;i++)
        npess=npess+lugs[i];

        return npess;

}
int main()
{
    int lugar[50],n,m;
    int i,lugactual;
    int psaltadas;
do{
   scanf("%d",&n);
   }while(n<=0 && n>=0);
    scanf("%d",&m);

        for(i=0;i<n;i++)
        lugar[i]=1;
        for(i=n;i<50;i++)
            lugar[i]=0;
            lugactual=0;

    while(contapessoas(lugar)>1)
    {
        psaltadas=0;
        while(psaltadas<n){
        if(lugar[lugactual]==1)
        psaltadas++;
        lugactual++;
        if (lugactual==n)
            lugactual=0;

        }
        if (lugactual == 0){
        lugactual = n-1;
        }else
        lugactual--;
        lugar[lugactual]=0;
        }

        for(i=0;i<n;i++)
        if(lugar[i]==1)
        printf("%d\n",i);



return 0;

}

[/img]

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mogers

O mooshak às vezes dá invalid function em vez de runtime error. Creio que o erro devido deve ser rte. De certeza que N é no máximo 50?


"What we do for ourselves dies with us. What we do for others and the world, remains and is immortal.", Albert Pine

Blog pessoal : contém alguns puzzles, algoritmos e problemas para se resolver com programação.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mogers

Eu não vejo motivos para o erro dado pelo mooshak, mas tens um erro no código,

while(psaltadas<n){

devia ser

while(psaltadas < m){

é preciso ter cuidado com variáveis com letras que se podem confundir (tal como L minúsculo e 1, em algumas fontes é fácil de confundir).


"What we do for ourselves dies with us. What we do for others and the world, remains and is immortal.", Albert Pine

Blog pessoal : contém alguns puzzles, algoritmos e problemas para se resolver com programação.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.