Baixe o app para aproveitar ainda mais
Prévia do material em texto
Lista de Exercícios para o Curso de C. Esta lista de exercícios é indicada para quem está começando a programar em alguma linguagem de programação. O que importa aqui é a lógica em si, e não a linguagem, porém para resolver os exercícios você deverá ter conhecimentos de funções, arrays, estruturas condicionais e registros. Antes de digitar seu código procure responder à mão, usando papel e caneta. Tente personificar o computador, pois dessa forma você terá uma noção exata do que seu código irá exercer, facilitando a detecção de possíveis erros. 00 – (Aquecimento) Sem usar nenhuma função auxiliar, faça uma função que receba um número inteiro e retorne sua raiz quadrada exata. Logo depois faça outra função, baseada na primeira, que retorne a raiz cúbica. 01 – Faça uma função que receba um vetor de 5 inteiros. Sua função terá que colocar todos os números do vetor ordenados de forma crescente, ou seja, depois que a função terminar a execução x[0] possuirá o menor valor e x[4] terá o maior valor. 02 – Faça uma função que receba uma matriz de inteiros com o tamanho 3x5 e um outro inteiro X. Sua função deverá percorrer a matriz até encontrar um valor igual a X, e, caso encontre, deverá retornar a soma do valor anterior e posterior à posição em que foi encontrado X. Caso X não esteja contido na matriz a função deverá retornar 0. OBS: Se X for encontrado em matriz[0][0], considere o anterior como 0. Caso seja encontrado em matriz[2][2], considere o posterior como 0. 03 – Usando as funções das questões anteriores, ordene cada linha da matriz usando a função da 1ª questão e depois chame a função da 2ª questão para retornar a soma do elemento anterior e posterior ao elemento X. 04 – Pilhas são estruturas de dados amplamente usadas na informática. Programas feitos em linguagem C se comportam de forma semelhante às pilhas em sua execução. O conceito é bastante simples, basta imaginar uma pilha de pratos. Numa pilha de pratos você só pode inserir ou retirar o prato que está no topo, caso contrário você derrubaria todos os pratos da pilha... Baseado nisso, faça um vetor de 10 registros que contenham os dados Nome e Idade. Após criar o vetor de registros, faça funções que sejam capazes de empilhar e desempilhar outros registros de mesmo tipo. OBS: Em ambas as funções faça verificações na quantidade de elementos. Obviamente, se as 10 posições estiverem ocupadas, só será possível desempilhar, enquanto que se não tiver nenhuma posição ocupada só será possível empilhar. 05 – Faça uma função que receba uma matriz 2x3 e outra matriz 3x2, ambas de inteiros. Sua função terá que realizar a multiplicação das duas matrizes (tal como ocorre na matemática) e retornar a matriz resultante de tamanho 2x2. Uma “fórmula geral” para a multiplicação de matrizes é dada por: Sua função fará algo parecido com isso: 06 – Faça uma função que receba uma string e retorne o número exato da quantidade de anagramas que a string pode gerar. Se a string tiver mais que 10 caracteres retorne -1, indicando erro. Anagramas são palavras geradas a partir de um rearranjo das letras da palavra original. Por exemplo: XELA é um dos possíveis anagramas da palavra ALEX. Para se calcular a quantidade de anagramas basta fazer o fatorial do número de letras totais dividido pela multiplicação dos fatoriais das repetições de cada letra. Exemplo: ALEX tem 24 anagramas, pois 4!/0! = 24/1 = 24 CASA tem 12 anagramas, pois 4!/2! = 24/2 = 12 PALAVRA tem 840 anagramas, pois 7!/3! = 5040/6 = 840 ADICIONAL tem 90720 anagramas, pois 9!/(2!x2!) = 362880/(2x2) = 362880/4 = 90720 07 – Faça uma função recursiva que calcule o enésimo número da sequencia Fibonacci. Para calcular o enésimo número basta fazer a soma dos dois números anteriores. Por exemplo: Qual o quinto número da sequencia Fibonacci? O quinto número é a soma do terceiro número com o quarto número da sequência. A sequencia tem como primeiro e segundo números o número 1, ou seja, os 10 primeiros números da sequência são: 1 1 2 3 5 8 13 21 34 55... Após fazer a função, coloque os 25 primeiros números em uma pilha. Faça uma adaptação na função da questão 4 para isso. 08 – Crie um registro com os seguintes dados: Matriz de 5x5 inteiros, Vetor de 5 inteiros, String de 5 caracteres. Faça uma função que receba esse registro e que peça ao usuário digitar valores para preencher somente a matriz. Faça outra função que receba o registro, e que pegue os maiores valores de cada linha e atribua em cada posição do vetor. Faça outra função que receba o mesmo registro e que pegue os menores valores de cada linha e atribua em cada caractere da string. Logo depois faça outra função que exiba na tela os dados do registro de forma organizada na tela. 09 – Faça uma função main que use todas as funções criadas anteriormente. :) DESAFIO Você foi contratado para fazer um sistema de uma loja de carros usados. O gerente lhe mandou fazer um sistema que controlasse a entrada e saída de carros da loja. Cada carro terá que ter suas características salvas para consulta posterior. Além de gerenciar entrada e saída de carros da loja, você também terá de fazer um pequeno “caixa” para mostrar os ganhos e as perdas para cada transação realizada. Ou seja, o menu do seu software terá as seguintes opções: • Cadastrar um novo veículo Inserir as características (Cor, Ano, Modelo, Marca, Valor, Multas) • Saída de Veículo Dados da transação (Nome do cliente, Endereço do Cliente,Valor pago) • Saldo do Caixa Dados de entrada e saída de dinheiro (Qtde de Vendas, Saldo do Dia, Saldo Geral) Lembre que seu gerente é louco e pode comprar infinitos carros para deixa-los a venda, então seria prudente não haver limites na quantidade de dados que seu programa armazena. E claro, os carros não esgotam no final do dia, então você precisa criar uma pequena base de dados para que quando a loja abrir no próximo dia não ser preciso recadastrar todos os carros da loja... Para resolver este desafio você terá que estudar por conta própria os seguintes assuntos: • Ponteiros • Alocação Dinâmica • Entrada e Saída de dados em Arquivo Boa Sorte :) Autor: Alex Ferreira Email: aferreira91@gmail.com Twitter: http://www.twitter.com/AlexFRT
Compartilhar