Ir para conteúdo
Fórum Script Brasil

dani0liveira

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre dani0liveira

dani0liveira's Achievements

0

Reputação

  1. Atualizei o código agora ele funciona normalmente, tinha reutilizado seu código, mas ao testar ele não funicionou direito, porém faça testes por você mesmo comece com 1, 3, 6, 100...
  2. salut na verdade não precisam serem armazenado e sim imprimidos Transforme seu código em função como no enunciado pede: /** * Determina se um numero é perfeito * retorna 0 se for perfeito ou um numero diferente de zero */ int perfeito(int n) { int soma = 0; // valida se é perfeito for(int i = 1; i < n; ++i) { soma = soma + i; if (n == soma) return 0; // é perfeito } return -1; // não é perfeito } faça uma função que imprima os fatores ou só acrescentar em main se quiser: /** * Imprime fatores se o numero for perfeito */ // Como a função só imprime ela não retorna nada void imprimePerfeito(int n) { int soma = 0; if( n == 1) { printf("1 = 1\n"); // 1 é numero perfeito return; } // se for um numero perfeito então imprime if(perfeito(n) == 0) { printf("%i = ", n); for(int i = 1; soma != n; i++) // sai do loop quando soma for diferente ao numero perfeito { if(i == 1) // primeiro não precisa do sinal '+" printf("%i ", i); else printf("+ %i ", i); soma = soma + i; } printf("\n"); } } Então em main você fará o seguinte: ... //includes int perfeito(int n); void imprimePerfeito(int n); int main(void) { int n; //pedirá entrada ao usuário // loop até n e imprimindo numeros perfeitos for(int i = 1; i <=n; i++) imprimePerfeito(i); return 0; } ... // Declarações de funções as duas acima
×
×
  • Criar Novo...