Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Algoritmos e Estruturas de Dados I (DCC/003) – 2013/1 Aula Prática 06 – 02/Mai/2013 Instruções: o Os exercícios deverão ser feitos em aula de laboratório durante o tempo da aula; o O professor irá esclarecer dúvidas em aula; o Crie uma pasta com seu nome e vá gravando seus programas implementados. Exercício 1 Vamos calcular o quociente e o resto da divisão de dois números inteiros NUM1 e NUM2. Suponha que soma (+) e subtração (-) são as únicas operações disponíveis em C. Dados dois números inteiros positivos NUM1 e NUM2, determine o quociente e o resto da divisão de NUM1 por NUM2. O algoritmo para solucionar este problema é o seguinte: - Faça uma função quociente que receba os 2 números e retorne o valor do quociente. - Faça outra função resto que receba os 2 números e retorne o valor do resto. - Em sua função MAIN receba os valores do usuários, chame as funções e ao final imprima os valores do quociente e resto. Execute o código para testar seu programa de computador e verificar se o resultado está correto. [salve o seu código com o nome: ap06-ex1.c] Exercício 2 Para reforçar o conceito de ponteiro e passagem de parâmetros por valor e por referência, faça o seguinte: crie 2 procedimentos (void somandoValor e void somandoReferencia), que deverão somar 2 números e adicionar ao valor corrente de uma variável somaValor (somaValor = somaValor + a + b) e mesma coisa para somaReferência, que usará o conceito de ponteiro. O código MAIN será o seguinte: int main(int argc, char *argv[]) { int x = 10; int y = 5; int somaValor = 0; int somaReferencia = 0; somandoValor(x,y, somaValor); somandoReferencia(x,y, &somaReferencia); printf("MAIN - Valor de somaValor = %d\n",somaValor); printf("MAIN - Valor de somaReferencia = %d\n", somaReferencia); return 0; } Os procedimentos deverão ter as seguintes assinaturas: 1. Sejam NUM1 e NUM2 os valores dados; 2. Atribuir o valor 0 ao quociente (variável quoc); 3. Enquanto NUM2 couber em NUM1: { 4. Somar 1 ao valor de quoc; 5. Subtrair NUM2 do valor de NUM1; } 6. Atribuir o valor final de NUM1 ao resto (variável resto). void somandoValor (int a, int b, int somaValor) void somandoReferencia (int a, int b, int *somaReferencia) - Imprima o valor de somaValor dentro do procedimento e de somaReferencia também e compare com os valores impressos no MAIN. Isso comprovará o que vimos dos conceitos de passagem de parâmetrose ponteiro. Execute o código para testar seu programa de computador e verificar se o resultado está correto. [salve o seu código com o nome: ap06-ex2.c] Exercício 3 Para praticar o conceito inicial de variável indexada com vetor, ponteiro e passagem de parâmetros, construa um programa que deverá fazer o seguinte: - Pegar um vetor informado (com valores inteiros) e criar um procedimento (void operacoesVetor), que deverá calcular o seguinte: - menor valor do vetor; - maior valor do vetor; - media dos valores do vetor; - Detalhe: dentro do procedimento você deverá fazer os cálculos e armazenar na memória, para isso deverá usar ponteiros para os valores do menor (min), maior (max) e media (media). - Dica: você pode iniciar seu valor menor e também o valor maior como sendo o 1º elemento do seu vetor de números (*min = vet[0] e *max = vet[0]). O código principal (MAIN) está apresentado abaixo: int main(int argc, char *argv[]) { int vet[] = {1, 3, 5, 7, 9, 0, 2, 4, 6, 8}; int min, max; float media; int tamanhoVetor = 10; operacoesVetor(vet,tamanhoVetor,&min,&max,&media); printf("MAIN - min=%d max=%d media=%f\n", min, max, media); return 0; } Agora crie o código do seu procedimento void operacoesVetor (int vet[], int tamanhoVetor, int *min, int *max, float *media) { … Escreva seu código aqui! … } Execute o código para testar seu programa de computador e verificar se o resultado está correto. [salve o seu código com o nome: ap06-ex3.c]
Compartilhar