Baixe o app para aproveitar ainda mais
Prévia do material em texto
LISTA DE EXERCÍCIOS 03 PRÁTICOS 1) Escreva um programa em C que determine se um dado número inteiro é par ou ímpar. Você deve usar a função parOuImpar, cujo protótipo a seguir é apresentado e que escreve na tela “O número é par” ou “O número é ímpar” conforme o inteiro passado como parâmetro seja par ou ímpar, respectivamente: void parOuImpar (int); Codifique também as funções par e impar e resolva o exercício com elas: int par (int); o Retorna 1 se o inteiro passado como parâmetro for par e 0 caso contrário. int impar (int); o Retorna 1 se o inteiro passado como parâmetro for ímpar e 0 caso contrário. 2) Escreva um programa em C que determine o maior de três números inteiros. Você deve usar a função maiorDeTres, cujo protótipo a seguir é apresentado e que devolve o maior dos inteiros passados como parâmetro. int maiorDeTres (int, int, int); 3) Repita o exercício anterior usando simplesmente a função maior que retorna o maior de dois números: int maior (int, int); 4) Escreva um programa em C que determine a média de dois números inteiros. Você deve usar a função media, cujo protótipo a seguir é apresentado e que devolve a media dos inteiros passados como parâmetro. float media (int, int); 5) Escreva um programa em C que permita determinar o maior e o menor número de uma sequência de N números inteiros dados pelo utilizador. O valor de N deverá ser superior ou igual a 2. Se não for, o seu valor deverá ser pedido novamente até obter um valor válido. A inserção de números deverá terminar quando forem inseridos N números. Nessa altura a aplicação deverá mostrar o valor máximo e mínimo dentre os valores inseridos. Você deve usar as funções maximo e minimo, cujos protótipos a seguir se apresentam: float maximo (float, float); o Devolve o maior dos reais passados como parâmetros. float minimo (float, float); o Devolve o maior dos reais passados como parâmetros. 6) Escreva um programa que leia uma sequência de reais a partir do teclado, os armazene no array A, cujo tamanho é o valor especificado pela constante DIM e que, depois, escreva na tela os valores guardados em A. Deve usar as funções: void lerArray (float[DIM]); void escreverArray(float[DIM]); 7) Escreva um programa que calcule a soma dos elementos de uma sequência de inteiros cujo tamanho é o valor especificado pela constante DIM. Deve usar as funções: void lerArray (int[DIM]); int somaElementosArray(int[DIM]); 8) Escreva um programa que calcule o elemento máximo e o elemento mínimo de uma sequência de inteiros cujo tamanho é o valor especificado pela constante DIM. Deve usar as funções: void lerArray (int[DIM]); int maximo(int[DIM]); int minimo(int[DIM]); 9) Escreva um programa que calcule as posições dos elementos máximo e mínimo de uma sequência de inteiros cujo tamanho é o valor especificado pela constante DIM. Deve usar as funções: void lerArray (int[DIM]); int posicaoMaximo(int[DIM]); int posicaoMinimo(int[DIM]); 10) Escreva um programa que adicione duas sequências A e B de números reais, ou seja, que crie uma nova sequência C em que cada elemento é o resultado da soma dos elementos homólogos de A e B. O tamanho das sequências é o valor especificado pela constante DIM. Deve usar as funções: void lerArray (float[DIM]); void soma(float[DIM], float[DIM], float[DIM]); 11) Escreva um programa que copie os elementos de uma sequência de inteiros para outra sequência do mesmo tamanho. Deve usar as funções: void lerArray (int[DIM]); void copia(int[DIM], int[DIM]); 12) Escreva um programa que calcule a média aritmética dos elementos de uma sequência de reais. Deve usar as funções: void lerArray (float[DIM]); float media (float[DIM]); 13) Escreva um programa que leia uma matriz de reais com L linhas e C colunas. Escreva depois na tela os valores guardados na matriz. Deve usar as funções: void lerMatriz (float[L][C]); void escreverMatriz(float[L][C]); 14) Escreva um programa que calcule a soma dos elementos de uma matriz de reais cujo número de linhas é especificado pela constante L e o número de colunas é especificado pela constante C. Deve usar as funções: void lerMatriz (float[L][C]); float somaElementosMatriz(float[L][C]); 15) Escreva um programa que calcule o elemento máximo e o elemento mínimo de uma matriz de reais cujo número de linhas é especificado pela constante L e o número de colunas é especificado pela constante C. Deve usar as funções: void lerMatriz (float[L][C]); float maximo (float[L][C]); float minimo (float[L][C]); 16) Escreva um programa que escreva na tela a posição (linha e coluna) dos elementos máximo e mínimo de uma matriz de reais, cujo número de linhas é especificado pela constante L e o número de colunas é especificado pela constante C. Deve usar as funções: void lerMatrix(float[L][C]); void posicaoMaximo(float[L][C]); void posicaoMinimo(float[L][C]); 17) Escreva um programa que adicione duas matrizes de reais, em que o número de linhas é especificado pela constante L e o número de colunas é especificado pela constante C. Deve usar as funções: void lerMatriz(float[L][C]); void somaMatrizes(float[L][C], float[L][C], float[L][C]); 18) Um treinador de atletismo treina 5 atletas e faz 12 sessões de treino por semana. Em cada sessão, cada atleta percorre uma distância que é cronometrada. Os valores dos tempos, em segundos, são registados sob a forma de uma matriz T(5x12), onde cada linha diz respeito a um atleta e cada coluna a uma sessão de treino. Supondo já feita a leitura da matriz, escreva um programa, usando funções, para: a) calcular e escrever a média dos tempos realizados em cada sessão de treinos; b) determinar e escrever o melhor tempo realizado por cada um dos atletas nas 12 sessões. 19) Numa matriz M(35x12) de elementos inteiros, encontram-se registadas as notas dos 35 alunos de cada uma das 12 turmas da disciplina de Álgebra. Sabendo que todos os elementos de M são valores entre 0 e 20, escreva um programa, usando funções, que: a) determine e escreva o número de alunos aprovados (nota >= 10); b) determine e escreva a melhor nota em cada uma das turmas; c) identifique a turma com maior número de alunos aprovados. 20) Tendo em conta a seguinte estrutura, bem como o respectivo tipo de dados, que permite cadastrar os registos de alunos em residências universitárias: #define MAX 20 typedef struct { char nome[MAX]; char sobrenome[MAX]; char residencia[MAX]; int telefone; } ESTUDANTE; 1) Escreva a função equalEntry que toma dois registos de alunos como argumentos, devolvendo depois o valor 1 (verdade) se os dois registos são idênticos ou o valor 0 (falso) no caso contrário. 2) Escreva uma função comesFirst que toma dois registos de alunos como argumentos, devolvendo depois o valor 1 (verdade) se o primeiro registo tem precedência alfabética sobre o segundo registo ou o valor 0 (falso) no caso contrário. A comparação alfabética decorre pela comparação inicial dos nomes e só depois se compara os sobrenomes. 3) Escreva um programa que leia do teclado dois registos, que escreva na tela se são idênticos (usando a função equalEntry), e que escreva ainda na tela qual deles vem em primeiro lugar (usando a função comesFirst). 21) Tendo em conta a seguinte estrutura, bem como o respectivo tipo de dados, que permite representar o tempo no formato de horas (hh), minutos (mm) e segundos (ss.sss). Um exemplo de tempo neste formato é, por exemplo, 12:34:56.123. typedef struct { int hh; int mm; double seconds; } TIME; 1) Escreva a função convertTime que converta o tempo que lhe é passado em segundos no formato ss.sss para o tempo no formato hh:mm.ss.sss. O tempo neste formato deverá ser devolvido pela função como uma structdo tipo TIME. Escreva depois um pequeno programa para testar a conversão. O protótipo da função anterior é o seguinte: TIME convertTime(double secs); 2) Escreva a função addTime que toma dois tempos do tipo TIME como argumentos, e que depois devolve a soma dos tempos numa estrutura do tipo TIME. Escreva depois um pequeno programa para testar a conversão. O protótipo da função anterior é o seguinte: TIME addTime(TIME a, TIME b); 22) APLICAÇÃO INTERACTIVA PARA GESTÃO DE LIVROS Considere o tipo struct LIVRO e um array de structs do tipo LIVRO com tamanho 100 identificado por biblioteca: typedef struct { char titulo[40]; char autor[20]; float numeroDoCatalogo; int anoDePublicacao; int numeroDaCopia; } LIVRO; #define numeroLivros 100 LIVRO biblioteca [numeroLivros]; As tarefas principais a desenvolver nesta aplicação são as seguintes: 1. Altere a estrutura LIVRO por forma a incluir dois campos adicionais: dataEmprestimo (tipo DATE a definir) e dataRetorno (tipo DATE). 2. Escreva uma função de saída do seguinte menu: BIBLIOTECA DA IES 1 – Inserir novo livro 2 – Procurar livro por título. 3 – Procurar livro por autor. 4 – Alterar nome do livro 5 – Apagar livro 6 – Registar data de empréstimo de um livro. 7 – Registar data de retorno de um livro. 8 – Listar livros existentes na biblioteca. 9 - Sair 3. Coloque todas as opções do menu a funcionar (o programa só deverá terminar quando o utilizador selecionar a opção “Sair”). Para isso escreva funções para: • Ler um livro. • Mostrar os dados de um livro. • Inserir um livro. • Procurar um livro através do seu título. • Procurar um livro através do nome do seu autor. • Alterar o título de um livro. • Eliminar um livro dos registos da biblioteca. • Registar a data de empréstimo de um livro. • Registar a data de retorno de um livro. • Listar todos os livros existentes.
Compartilhar