edu_hardcore Postado Setembro 5, 2004 Denunciar Share Postado Setembro 5, 2004 ALGUÉM PODERIA ME AJUDAR????"Considere o classico problema de fatorial:Fatorial 0 = 1Fatorial 5 = 120Fatorial 12 = 479001600Fatorial -1 = não EXISTENão se pode calcular fatoriais de números negativos.Considere tambem o calculo do somatorio:Somatorio de 0 = 0Somatorio de 3 = 6Somatorio de 3 = -6Somatorio de 1230 = 757065Considere este conjunto de entradas digitadosna entrada padrão. O que tem depois da seta nãofaz parte da entrada, é comentario4 <- numero de inteiros que serao digitados-1 <- primeiro inteiro0 <- segundo inteiro6 <- terceiro inteiro69 <- quarto inteiro0 <- numero de inteiros do proximo teste. Se zero, encerraPara o conjunto de entradas acima, o seu programadeve gerar as seguintes saidas:-1 -1 -10 1 06 720 2169 -1 2415-1 0 6 69Cada linha da saida, exceto a ultima, possui:INTEIRO_DIGITADO FATORIAL SOMATORIOSe o fatorial for impossivel, a saida sera -1.Se o somatorio for impossivel, a saida sera -1tambem. Deve ser possivel calcular fatoriaisde 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 7000Consideracoes: - O calculo do fatorial NECESSARIAMENTE deve estarem uma funcao. Mas ela não imprime, apenas calcula eretorna o valor. - O mesmo para somatorio - ordenar os elementos pode ser feito por funcaoou não. Sugere-se o metodo buble sort por ser maissimples de implementar. - Neste exercicio é necessario armazenar em umvetor 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 de9 = 362880. - Teste de o valor do inteiro serve antes de passa-lo a funcao que calcula fatorial;" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Setembro 5, 2004 Denunciar Share Postado Setembro 5, 2004 No que, exatamente, você tem dúvida?Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wicker Man Postado Setembro 5, 2004 Denunciar Share Postado Setembro 5, 2004 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
edu_hardcore
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
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.