A idéia desse algoritmo é a seguinte:
ler um valor inteiro positivo, e calcular a seguinte seqüência: Se o número for par achar a metade dele; se é ímpar, multiplique por 3 e acrescentar 1. Repita este processo até que o valor seja 1,
imprima cada valor. Finalmente, imprima quantos passos foram necessários pra se sejar ao numero 1,
deve ser feita a verificação pra ver se o numero é maior que 1,
eis minha solução pra esse algoritmo
#include<stdio.h>
/*
Autor: MRSantos mrsantos4@ucs.com */
int main()
{
int i, v, passos = 0;
puts("Entre com um valor inteiro: ");
scanf("%d", &v);
if(v < 1)
{
puts("O valor deve ser maior que 1
");
return -1;
}
while(v != 1)
{
passos += 1;
if( v % 2 == 0)
{
v /= 2;
printf("valor de X: %d\n", v);
}
else
{
v = v * 3 + 1;
printf("valor de X: %d\n", v);
}
}
printf("Passos necessarios: %d\n", passos);
return 0;
}
saida do programa:
mrsantos@Cerrito C>>$ ./passos
Entre com um valor inteiro:
9
valor de V: 28
valor de V: 14
valor de V: 7
valor de V: 22
valor de V: 11
valor de V: 34
valor de V: 17
valor de V: 52
valor de V: 26
valor de V: 13
valor de V: 40
valor de V: 20
valor de V: 10
valor de V: 5
valor de V: 16
valor de V: 8
valor de V: 4
valor de V: 2
valor de V: 1
Passos necessários: 19