Descrição do problema
● O exercício número 5 pede que usamos a conjectura de Collatz que sugere
que, independentemente do número inicial, o processo sempre chega a 1
após um número finito de passos. O desafio é escrever um programa que,
dado um número inicial, imprima a sequência de Collatz até que o número se
torne 1.
● O exercício de número 6 deve gerar uma pirâmide numérica com uma altura
fornecida pelo usuário. Cada linha da pirâmide contém uma sequência
crescente de números, seguida pela mesma sequência de números em
ordem decrescente.
Descrição da solução:
● Exercício 5: O programa começa pedindo ao usuário que digite um número natural.
A sequência de Collatz é gerada com base no número fornecido, see o número for
par, ele é dividido por 2, se for ímpar, ele é multiplicado por 3 e somado 1. O loop
continua até que o número se torne 1, imprimindo cada número da sequência à
medida que é gerado.
● Exercício 6: O programa solicita ao usuário a altura da pirâmide, para cada linha, ele
adiciona os espaços necessários no início para alinhar a pirâmide. Em seguida,
imprime os números crescentes até o número correspondente à linha atual, depois,
imprime os números decrescentes. Cada linha termina com uma nova linha.
Tecnologias utilizadas:
● Linguagem C;
● Ambiente de desenvolvimento: Coding C++;
● Compilador: GCC.
Gestão de riscos:
● Possíveis erros na estrutura do código, que será necessário vários testes para
conseguir ter um bom resultado.
Plano de testes:
● Foi planejado fazer os testes das programas com vários valores de entrada
diferente e em diferentes ambientes de trabalho de desenvolvimento (termux
e Coding C++).
Tipos de testes:
● Valores de entrada diferentes;
● Ambientes de desenvolvimento diferentes.
Resultado dos testes:
● Os programas teve um resultado positivos depois dos testes e correções.
Desafios enfrentados:
● No exercício 6 o desafio foi em conseguir alinhar os resultados em forma de
triângulo.
● No exercício 5 o desafio foi em fazer o loop para chegar ao resultado.
Lições aprendidas:
● A implementação de loops em códigos
Feedback e melhorias:
● Ajustar a estrutura dos programas e a forma de como buscar a solução para os
problemas.
Considerações finais:
● Os exercícios ajudaram na compreensão de novas formas de programas.
Códigos fontes:
Exercício 5) A conjectura de Collatz é uma conjectura matemática que recebeu este nome
em referência ao
matemático alemão Lothar Collatz, que foi o primeiro a propô-lo, em 1937. Além desse
nome, este
problema também é conhecido como Problema 3x + 1.
Esta conjectura aplica-se a qualquer número natural, e diz-nos para, se este número for par,
dividi-lo
por 2, e se for ímpar, multiplicá-lo por 3 e adicionar 1 (3x+1). Repetir esse processo até que
o número
se torne 1. Desta forma, por exemplo, se a sequência iniciar com o número 5 ter-se-á: 5; 16;
8; 4; 2; 1.
A conjectura apresenta uma regra dizendo que, qualquer número natural, quando aplicado a
esta
regra, eventualmente sempre chegará a 4, que se converte em 2 e termina em 1.
Escreva um programa, em linguagem C, que leia do dispositivo padrão de entrada (stdin)
um número
natural n e escreva no dispositivo padrão de saída (stdout) a sequência de Collatz.
Considere a seguinte
operação em um número arbitrário n (inteiro positivo):
▪ Se o número n for par, divida-o por 2;
▪ Se o número n for ímpar, multiplique-o por 3 e some 1 (3x+1).
Exemplo:
n?6
sequencia: 6 3 10 5 16 8 4 2 1
#include <stdio.h>
int main() {
int n;
// leitura do número natural inserido
printf("Digite um número natural: ");
scanf("%d", &n);
// Verificação se o número inserido é positivo
if (n <= 0) {
printf("Por favor, insira um número natural positivo.\n");
return 1;
}
// Imprimi a sequência de Collatz
printf("Sequência de Collatz: ");
while (n != 1) {
printf("%d ", n);
//Se o valor inserido for par é dividido por 2
if (n % 2 == 0) {
n = n / 2;
}
//Se o valor inserido for ímpar multiplica por 3 e soma 1
else {
n = 3 * n + 1;
}
}
printf("%d\n", n);
return 0;
}
Exercício 6)Escreva um programa, em linguagem C, que construa uma pirâmide de
números conforme ilustrado
na figura abaixo. O programa deve ler do usuário a informação da altura da pirâmide h. Por
exemplo,
para uma altura h=6 a pirâmide deve ser construída como na figura abaixo (automatize o
algoritmo):
1
121
12321
1234321
123454321
12345654321
#include <stdio.h>
int main() {
int h;
//Leitura da altura da pirâmide de acordo com o valor inserido
printf("Digite a altura da pirâmide: ");
scanf("%d", &h);
//Contrução da pirâmide a partir do valor inserido
for (int a = 1; a <= h; a++) {
//Imprimir espaços a esquerda para que a pirâmide fique alinhada
for (int b = 1; b <= h - a; b++) {
printf(" ");
}
//Imprimir a primeira parte da pirâmide com os números em ordem crescente
for (int b = 1; b <= a; b++) {
printf("%d ", b);
}
//Imprimir a segunda parte da pirâmide com os números em ordem decrescente
for (int b = a - 1; b >= 1; b--) {
printf("%d ", b);
}
//Move a linha para a seguinte
printf("\n");
}
return 0;
}