Ir para conteúdo
Fórum Script Brasil
  • 0

Urgente!


edu_hardcore

Pergunta

ALGUÉM PODERIA ME AJUDAR????

"Considere o classico problema de fatorial:

Fatorial 0 = 1

Fatorial 5 = 120

Fatorial 12 = 479001600

Fatorial -1 = não EXISTE

Não se pode calcular fatoriais de números negativos.

Considere tambem o calculo do somatorio:

Somatorio de 0 = 0

Somatorio de 3 = 6

Somatorio de 3 = -6

Somatorio de 1230 = 757065

Considere este conjunto de entradas digitados

na entrada padrão. O que tem depois da seta não

faz parte da entrada, é comentario

4 <- numero de inteiros que serao digitados

-1 <- primeiro inteiro

0 <- segundo inteiro

6 <- terceiro inteiro

69 <- quarto inteiro

0 <- numero de inteiros do proximo teste. Se zero, encerra

Para o conjunto de entradas acima, o seu programa

deve gerar as seguintes saidas:

-1 -1 -1

0 1 0

6 720 21

69 -1 2415

-1 0 6 69

Cada linha da saida, exceto a ultima, possui:

INTEIRO_DIGITADO FATORIAL SOMATORIO

Se o fatorial for impossivel, a saida sera -1.

Se o somatorio for impossivel, a saida sera -1

tambem. Deve ser possivel calcular fatoriais

de 0 a 12 e somatorios de -1000 a 1000.

A ultima linha corresponde aos inteiros digitados,

porem agora ordenados.

Limites:

- O conjunto de entradas é composto de varias linhas,

sem limite. Se for zero, encerra.

- O maximo de inteiros de uma linha de entrada e 300

- Deve calcular para cada linha em separado.

- O valor de cada inteiro esta no limite de -7000 a 7000

Consideracoes:

- O calculo do fatorial NECESSARIAMENTE deve estar

em uma funcao. Mas ela não imprime, apenas calcula e

retorna o valor.

- O mesmo para somatorio

- ordenar os elementos pode ser feito por funcao

ou não. Sugere-se o metodo buble sort por ser mais

simples de implementar.

- Neste exercicio é necessario armazenar em um

vetor os inteiros (senao não tem como ordena-los)

Dicas:

- No dos, um inteiro vai de -32768 a 32767 COM SINAL.

ISto esta aquem dos limites pois um simples fatorial de

9 = 362880.

- Teste de o valor do inteiro serve antes de passa-lo a

funcao que calcula fatorial;"

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Olha, fiz um código meio que imperfeito. Não coloquei alguns filtros de valores inválidos e não testei, então você é responsável por aperfeiçoá-lo.

/* #include <stdio.h> */

int fat( int );
int sum( int );
void ordena( int[], int );
void imprime( int[], int );

int main()
{
   int n, i = 0;
   int *X;

   scanf( "%d", &n );
   X = ( int * ) malloc ( n * sizeof( int ) );

   if ( n != 0 ) {
      do {
         for ( i = 0; i < n; i++ ) {
            scanf( "%d", &X[ i ] );
            i++;
         }

         scanf( "%d", &n );
      } while( n != 0 );
   } else
      return 0;

   for ( i = 0; i < n; i++ )
      printf( "%d %d %d\n", X[ i ], fat( X[ i ] ), sum( X[ i ] ) );

   ordena( X, n );

   return 0;
}

int fat( int x )
{
   if ( x < 0 )
      return -1;
   else if ( x == 0 )
      return 1;
   else
      return fat( x ) * fat( x - 1 );
}

int sum( int x )
{
   if ( x < 0 )
      return -1;
   else if ( x == 0 )
      return 0;
   else
      return x + sum( x - 1 );
}

void ordena( int v[], int y )
{
   int pro, i, j;

   for ( j = 0; j < y - 1; j++ )
      for ( i = 0; i < y - 1; i++ )
         if ( v[ i + 1 ] >= v[ i ] ) {
     pro = v[ i + 1 ];
     v[ i + 1 ] = v[ i ];
     v[ i ] = pro;
  }

   imprime( v, y );
}

void imprime( int v[], int y )
{
   int i;

   for ( i = 0; i < y; i++ )
      printf( "%d ", v[ i ] );

   printf( "\n" );
}

Repetindo: eu não o testei. Quaisquer dúvidas sobre ele, poste aí.

Até mais!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...