Um repositório com ideias de exercicios para praticar C e lógica! 🎉
Aqui você encontrará informações de cada projeto, a visao/proposta geral desse repositorio e muito mais.
Explore, colabore e divirta-se! 😄
Esse repositorio foi criado com o objetivo de ajudar outras pessoas que queiram ingressar na área de tecnologia e desejam praticar seus conhecimentos iniciais em Lógica Para Programação, aqui terá a descrição de cada questao, e a resolução estará nesse repositorio referente ao numero da questao, todas em linguagem C.
Isso é um compilado de algumas das atividades que foram desenvolvidas na plataforma Replit, durante o meu 2 semestre da faculdade de Ciências da Computação, no Instituto Federal do Ceará, semestre 2023.2
-
Questão 1 - Maior Elemento:
Descobrir o maior valor lido e sua respectiva posição. -
Questão 2 - Matriz Elementos maior e menor:
Cria uma matriz e o preenche. Ao fim, mostra o maior e o menor valor entre os elementos, e sua respectiva posição. -
Questão 3 - Controle de estoque em vetores:
Preencha um vetor com as vendas de um determinado setor, em certos dias N. Ao fim, mostrar o dia com maior venda, menor venda, volume medio de vendas, e valor total vendido. -
Questão 4 - Vetores:
Você é um desenvolvedor trabalhando em um sistema de controle de estoque para uma loja de eletrônicos. A loja vende produtos como smartphones, laptops e tablets. O gerente sempre está interessado em saber dados sobre o volume das vendas no final do dia.
Sua tarefa neste exercício é ler o volume (em reais R$) de N dias de venda para então descobrir (a) o dia que mais vendeu, (b) o dia que menos vendeu, (c) a média de vendas no intervalo de N dias e (d) o valor total das vendas em todo o intervalo.
Obs: seu algoritmo não deve mostrar mensagens de interação com o usuário, pois os testes serão realizados automaticamente por um outro algoritmo de teste. Sendo assim, o usuário do seu algoritmo será um "robô".
Etapas: 1. Leia o número de dias; 2. Para cada dia, leia o volume das vendas; 3. Mostre para o gerente os dados solicitados. -
Questão 5 - Matrizes:
Você é um desenvolvedor trabalhando em um sistema que gerencia uma agenda de atendimentos para um consultório odontológico. O gerente precisa monitorar os horários vagos da agenda para tentar encaixar pacientes. Ao mesmo tempo, ele precisa saber a distribuição dos atendimentos especialistas em cada dia para melhor organizar o revesamento dos profissionais.
Sua missão é escrever um programa capaz de ler uma matriz de tamanho fixo para representar os atendimentos de segunda à sábado.
As marcações dos atendimentos consideram que cada atendimento demora 1 hora, limitado a 6 horas por dia.
A estrutura deve armazenar qual a especialidade agendada.
Os especialistas possíveis são:
1.Clinico geral
2. Odontopediatra
3. Ortodontista
4. Endodontista
5. Periodontista
6. stomatologista
7. Protesista
8. Cirugiao bucomaxilofacial
9. Dentistica
Restauradora O valor zero (0) representa que há um horário vago na agenda. Obs: seu algoritmo não deve mostrar mensagens de interação com o usuário, pois os testes serão realizados automaticamente por um outro algoritmo de teste. Sendo assim, o usuário do seu algoritmo será um "robô".
Etapas: Leia a agenda completa Leia um dia específico da semana Mostre a quantidade de horários vagos total na agenda
Mostre a quantidade de horários vagos na agenda para o dia lido
Mostre, para cada especialidade, o volume total na agenda
Mostre, para cada especialidade, o volume total para o dia lido
Obs: o algoritmo não precisa validar as quantidades. Os testes foram gerados com agendas ALEATÓRIAS -
Questão 6 - Modularização:
Escreva um programa que, por meio de uma função, retorne a soma dos números inteiros que existem entre n1 e n2 (inclusive), ambos informados pelo usuário. A função deve funcionar inclusive se o valor de n2 for menor que n1. Leia n1 e n2 no programa principal e passe-os como parâmetro para a função. -
Questão 7 - Matriz Transposta Modularizada:
Declare uma matriz 2x3 no bloco principal. Depois escreva funções para: Ler a matriz 2x3 (a matriz é repassada como parâmetro) Gerar e devolver sua transposta (matriz 3x2)
Exibir uma matrize recebida como parâmetro, o final, chame as funções no bloco principal de modo que o resultado seja como no exemplo demonstrado. -
Questão 8 - MDC Recursivo:
Tremblay-Bunt] Um algoritmo muito conhecido para determinar o maior divisor comum de dois números inteiros é o algoritmo de Euclides.
A função maior divisor comum é definida como segue: MDC(M,N) = MDC(N,M) se N > M M se N = 0 MDC(N, M mod N) se N > 0
Implemente um algoritmo com uma função recursiva para calcular o MDC dos valores de M e N (lidos pelo teclado). -
Questão 9 - Soma Recursiva:
Escreva uma função recursiva que calcule a soma dos dígitos de um inteiro positivo n. -
Questão 10 - Exponenciação Recursiva:
Sendo xn = x * x(n-1), faça um algoritmo que utilize uma função recursiva para calcular a potência de um número qualquer (recebido como parâmetro).
Receba como parâmetro da função os valores de x e n. -
Questão 11 - Vetor Dinâmico:
Crie um programa modularizado capaz de alocar dinamicamente um vetor de números reais de tamanho n definidos durante a execução do programa.
Nesse vetor, serão armazenados a altura de n pessoas e que deverão ser lidos pelo teclado.
Ao final, o programa deve imprimir a maior, a menor e a média das alturas. Obs: precisão de 2 casas decimais. -
Questão 12 - Inversao Dinamica:
Escreva um programa capaz de alocar dinamicamente valores inteiros positivos.
O programa deve ler um número inteiro positivo n e em seguida n números inteiros.
Imprima esses n números em ordem invertida. Não esqueça de desalocar a memória usada. -
Questão 13 - Soma Dinamica:
Crie um programa que aloca dinamicamente um vetor de inteiros de tamanho n (informado pelo usuário).
Todos os n números devem ser inseridos pelo usuário, um a um.
Ao final, o programa deve calcular e imprimir a soma de todos os valores. -
Questão 14 - Pares e Impares:
Faça um programa que aloque memória para n inteiros inseridos pelo usuário.
Em seguida, mostre quantos dos números são pares e quantos são ímpares. -
Questão 15 - Matriz Dinamica:
Construa um programa modularizado que: Aloque dinamicamente uma matriz quadrada de ordem n x n (linha por coluna) (n lido pelo teclado)
Leia os valores para preencher a matriz
Multiplique os valores da diagonal principal.
Mostre o valor da multiplicação Desaloque a memória alocada para a matriz -
Questão 16 - Matriz Identidade:
Crie um programa modularizado para: Alocar uma matriz de dimensão nxn, em que n é determinado pelo usuário.
Povoar a matriz gerada de modo que ela torne-se uma matriz identidade (matriz quadrada em que os elementos da diagonal principal são iguais a 1 e os demais elementos são iguais a 0)
Mostrar a matriz resultante Desalocar a memória utilizada -
Questão 17 - Histograma:
Faça um programa modularizado que leia e construa a seguinte tabela de histogramas:
Elemento Valor Histograma A 4 ∗∗∗∗ B 2 ∗∗ C 8 ∗∗∗∗∗∗∗∗ D 12 ∗∗∗∗∗∗∗∗∗∗∗∗ E 1 ∗ Soma 27 ***************************
A quantidade de elementos (n) deve ser lida no programa principal.
A quantidade de elementos será o parâmetro para uma alocação dinâmica do histograma.
Dica: Use um vetor de ponteiros.
Ao final, sua estrutura deve permitir o cálculo da soma dos valores para exibir o histograma da soma (veja a saída esperada no caso de teste).
Dica: faça funções para cada "mini problema".
Obs: Todas as impressões devem ser feitas em função(ões) específica(s) para impressão na tela. Jamais dentro da função que constrói ou lê dados.
A(s) função(ões) para impressão devem receber a estrutura de dados como parâmetro para então percorrer e imprimir os dados. -
Questão 18 - Struct Livro:
Defina um ponteiro para uma struct capaz de armazenar dados sobre um livro. O registro contém os seguintes dados: nome, ISBN, preco, avaliacao e editora.
Usando este registro faça: Uma função que aloque o(s) livro(s) e devolva um ponteiro para o bloco de livro(s).
Obs: a função deve receber a quantidade de livros a ser alocada. Uma função que leia do teclado os dados do livro (receba o livro como parâmetro).
Uma função que mostre os dados do livro lido.
Uma função que desaloque os dados do livro lido.
Inicialmente, a primeira leitura deve informar quantos livros serão inseridos. Em seguida, a leitura de cada livro deve seguir a mesma ordem dos campos acima descritos. -
Questão 19 - TAD Livro:
Reescreva o algoritmo construído anteriormente criando um Tipo Abstrato de Dados chamado TADLivro.
Obs: criei os arquivos das estruturas para o TAD para que você migre seu código anterior no formado do tipo abstrado. -
Questão 20 - TAD CPF:
O Cadastro Nacional de Pessoal Física (CPF) é um número que identifica de forma única um brasileiro e lhe assegura direitos enquanto cidadão. Ele é composto por 11 dígitos, sendo que os dois últimos correspondem ao dígito verificador.
Crie um T.A.D chamado CPF contendo uma estrutura capaz de manipular esse tipo abstrato. Nele, insira as seguintes funcionalidades:
Ler um CPF Exibir o CPF (respeitando a formatação xxx.xxx.xxx-xx)
Validar um CPF (para isso, calcule o dígito verificar do número gerado).
Dica como calcular o dígito verificador: https://campuscode.com.br/conteudos/o-calculo-do-digito-verificador-do-cpf-e-do-cnpj
Seu programa deve ler como comandos de entrada e seus respectivos valores (separados por espaços).
Os comandos possíveis são: -l : o programa irá ler um CPF (apenas números) -e : exibe o CPF lido usando a formatação para exibição -v : valida ou invalida o CPF lido
Em alguns exercicios citados, durante o meu semestre, foi realizado com a participação de mais algumas pessoas:
Nos exercicios 12, 13, 14, 15, 16, minha colega Claudia colaborou com o desenvolvimento.
Nos exericios 11 e 17, foi com minha colega Rosana.
Obrigada pelo apoio!!