Ir ao conteúdo
  • Cadastre-se

Mazze

Membro Júnior
  • Posts

    12
  • Cadastrado em

  • Última visita

Reputação

4
  1. o meu código estava dando o mesmo problema, sugiro que você implemente com uma lista circular, com o final apontando para o inicio.
  2. Alguem consegue me ajudar a arrumar esse código? O enunciado do exercício está em anexo mas basicamente o programa é sobre o circo de josephus onde os judeus se reunem em um circulo e são eliminados de acordo com o salto. O usuario digita o número total de pessoas (M), a posição do josephus(P) e o número do salto (N) e o programa deve imprimir MORTO e o número do sobrevivente caso a posição do josephus seja atingida e VIVO caso ele sobreviva. Na plataforma que eu preciso entregar o programa está dando incompleto e não passou em nenhum caso de teste e no exemplo das entradas 2=M 1=P 1=N deveria imprimir VIVO porém esta imprimindo MORTO 2, preciso de ajuda para arrumar. #include <stdio.h> #include <stdlib.h> struct no { int num; struct no *proximo; }; void inserir(struct no **); int sobrevive(struct no **, int); int main() { struct no *ini = NULL; int sobrev, n, p; inserir(&ini); scanf("%d %d", &p, &n); sobrev = sobrevive(&ini, n); if(sobrev!=p){ printf("MORTO %d\n", sobrev); }else{ printf("VIVO\n"); } free(ini); return 0; } void inserir(struct no **ini) { struct no *aux, *fim; int m, i; scanf("%d", &m); for(i=0;i<m-1;i++) { aux = (struct no *)malloc(sizeof(struct no)); aux->num = m; aux->proximo = NULL; if (*ini == NULL) { *ini = aux; } else { fim->proximo = aux; } fim = aux; } fim->proximo = *ini; } int sobrevive(struct no **ini, int aux) { struct no *a, *b; int i; b = a = *ini; while (a->proximo != a) { for (i = 0; i < aux-1 ; i++) { b = a; a = a->proximo; } b->proximo = a->proximo; free(a); a = b->proximo; } *ini = a; return (a->num); } Massada (1).pdf
  3. @MadroxD ja tentou tirar o ++ do qtd no return?
  4. Boa noite pessoal, estou precisando de ajuda com um trabalho. Seguinte: O programa deve receber 3 variáveis de entrada m= número total de pessoas, p= posição da pessoa escolhida, n= numero de saltos. a pessoa que está na posição onde o salto cai morre, o programa deve rodar até ter apenas 1 sobrevivente. no final deve ser exibido MORTO e o número do sobrevivente caso o salto caia na posição escolhida e VIVO caso não caia. Fiz um código mas não está totalmente certo, o problema é que o programa deve continuar rodando até ter apenas um sobrevivente, e a cada rodada deve ser eliminado os numeros que 'morrem', não estou conseguindo fazer isso só com contador e vetor. Pensei em implementar com uma lista circular mas não sei como fazer, alguem pode ajudar? Caso seja necessário estou anexando o exercício e uma imagem para melhor entendimento. #include <stdio.h> #include <stdlib.h> int main (){ int m, p, n,i, morre, score,sobrevive, j=0; scanf("%d %d %d",&m , &p, &n); int vet[m]; for(i=1;i<=m;i++){ vet[i]=i; } morre=vet[n+1]; i=1; for(j=0;j<m;j++){ if(i>m){ i=i-m; morre = vet[i]; } if(morre==p){ score=1; sobrevive=vet[i--]; } i=i+n; morre = vet[i]; } if(score==1){ printf("MORTO \n"); }else{ printf("VIVO"); } } Massada (1).pdf
  5. Olá, tudo bem? funções do tipo void não podem retornar valores. Pode me mandar o código completo para eu entender melhor?
  6. Pessoal estou precisando de uma ajuda pra arrumar esse código: #include <stdio.h> #include <stdlib.h> typedef struct pilha{ int numero; struct pilha * proximo; } pilha; void inserir(pilha **top){ pilha * c; c = (pilha *)malloc(sizeof(pilha)); if(c==NULL){ printf("Sem espaço na memoria "); exit(1); }else{ scanf("%d",&c->numero); if(*top==NULL){ c->proximo = NULL; }else{ c->proximo = *top; } *top = c; } } void listar(pilha *top){ pilha *aux; if(top==NULL){ printf("FOME \n"); }else { aux=top; printf("%d ",aux->numero); aux = aux->proximo; } } void excluir(pilha **top){ pilha *aux; aux = (*top)->proximo; free(*top); *top = aux; } int main(){ pilha * topo = NULL; int Q, opc; scanf("%d", &Q); if(Q<= (10 ^7)){ do{ scanf("%d", &opc); switch(opc){ case 1: listar(topo); excluir(&topo); printf("\n"); break; case 2: inserir(&topo); break; } Q= Q-1; }while(Q > 0); } } o compilador está acusando erro de segmentação e com o gdb apontou erro em excluir() e main () (erro na imagem)
  7. é exatamente isso, o contexto completo esta nesse pdf Flordaesbornia (1).pdf
  8. @Flávio Pedroza então, eu tenho que entregar pelo run.codes e nos casos de teste da o erro: "resposta incorreta".
  9. @Flávio Pedroza Obrigada pela ajuda, mas ainda está apresentando resposta incorreta Acredito que o problema esteja na formula para encontrar o centro
  10. Boa tarde, voce conseguiu resolver? me falaram que pra descobrir as coordenadas do centro eu teria que somar a maior coordenada com a menor x e tirar a media, o mesmo pra y,no caso do exemplo seria 0,00 + 3,00 / 2 da 1.50 e 0.0 + 2,0 / 2 = 1,00 porém ainda esta dando reposta incorreta e saida mal formatada. Encontrei também um exemplo dizendo que pra encontrar o centro teria que somar todas as coordenadas de x e dividir por n, e o mesmo com y. Porém se for assim não bate com a saída do problema: por exemplo 0.0+0.0+1.0+1.0+2.0 = 4,00 / 5 = 0,8.
  11. Boa noite pessoal, Estou precisando de ajuda com um código em c. Segue a descrição do exercício: Entrada: Esse problema é composto por vários exemplos. A primeira linha é composta por um inteiro N, 1<=N<=100, e indica o número de integrantes da quadrilha. As próximas N linhas contêm o posicionamento dos integrantes da quadrilha a partir de suas coordenadas X e Y no plano cartesiano do Jardim Botânico de Merculia. As coordenadas são números reais. Seu programa deve encerrar a execução quando 0 for o valor de N dado na entrada. Saída : Para cada instância, imprima uma linha dizendo a coordenada X e a coordenada Y do centro e o raio da circunferência com precisão de duas casas decimais. Para encontrar o centro, tirar a média da maior e menor coordenada de x, e a media da maior e menor coordenada de y. Fiz esse código, alguém pode por favor me ajudar a encontrar o erro? int main (){ int N, i; float maiorx, menorx, maiory, menory, r, cx, cy; scanf("%d", &N); float x[100], y[100]; while(N!=0){ for(i = 0; i < N;i ++){ scanf("%f %f", &x[i], &y[i]); maiorx = x[i]; menorx = x[i]; maiory = y[i]; menory = y[i]; } for(i=0; i<N; i++){ if(maiorx < x[i]){ maiorx = x[i]; } if(menorx > x[i]){ menorx=x[i]; } if(maiory < y[i]){ maiory = y[i]; } if(menory > y[i]){ menory = y[i]; } } cx = (maiorx + menorx) / 2; cy = (maiory + menory) / 2; r = sqrt((maiorx - cx) * (maiorx - cx) + (maiory - cy) * (maiory - cy)); printf("%.2f %.2f %.2f\n", cx, cy, r); scanf("%d", &N); } return 0; }
  12. estou com problema no mesmo exercício, minha dúvida é a mesma citada acima, se descobrir avise por favor haha

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...