0% acharam este documento útil (0 voto)
15 visualizações4 páginas

Exercícios de Programação em C: Collatz e Pirâmide

O documento descreve dois exercícios em linguagem C: o primeiro implementa a conjectura de Collatz, gerando uma sequência até o número 1, e o segundo cria uma pirâmide numérica com altura definida pelo usuário. Ambos os programas foram testados com diferentes entradas e ambientes, resultando em saídas positivas, apesar dos desafios enfrentados na formatação e na lógica dos loops. O aprendizado inclui a implementação de loops e a necessidade de ajustes na estrutura dos programas.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
15 visualizações4 páginas

Exercícios de Programação em C: Collatz e Pirâmide

O documento descreve dois exercícios em linguagem C: o primeiro implementa a conjectura de Collatz, gerando uma sequência até o número 1, e o segundo cria uma pirâmide numérica com altura definida pelo usuário. Ambos os programas foram testados com diferentes entradas e ambientes, resultando em saídas positivas, apesar dos desafios enfrentados na formatação e na lógica dos loops. O aprendizado inclui a implementação de loops e a necessidade de ajustes na estrutura dos programas.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

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;
}

Você também pode gostar