Programação 2012/203 1º Semestre - MEEC
Programação 2012/2013 – 1º Semestre
MEEC
Laboratório 4 – Semana de 5 de Novembro de 2012
1. implemente uma funcao (int prox_primo(int n) )que recebe como argumento um inteiro
positivo e retorna o menor numero primo superior a n. Por exemplo
prox_primo(4) retorna 7,
prox_primo(8) retorn 13.
2. Implemente as funções e programa cujos fluxogramas foram definidos na aula de problemas
da semana passada:
•
Exercício 9, 10 e 11
Use a função prox_primo na resolução deste exercício.
3. Altere o programa anterior para guardar os fatores primos do numero num vector de 100
inteiros;
4. Desenvolva uma função que para cada elemento guardado num vetor imprime quantas vezes
esse valor ai ocorre ( void conta(int vet[100], n_valores) ) .Experimente esta função com o
programa anterior.
O parâmetro n_valores indica quantos valores estão armazenados no vetor.
5. Desenvolva uma função que recebe como argumento um número real e "retorna"
separadamente a sua parte inteira e decimal. O cabeçalho desta função é
void split_real(float x, int * p_inteira, float * p_decimal).
6. Use a função definida anteriormente para implementar um programa que lê um numero real
e imprime em linhas diferentes a parte inteira e a parte decimal.
7. Desenvolva um programa que converte um numero inteiro para o formato BCD. O programa
lê um inteiro positivo, armazena-o numa variável do tipo int e converte-o para o código
BCD.
Cada um dos dígitos BCD (inteiros entre 0 e 9) será armazenado numa posição de um vetor
de 8 posições.
Se o numero lido for maior que 99999999 devera ser impressa uma mensagem de erro.
Depois de convertido o numero deve ser escrito na forma de somatório de potencias de 10,
1/2
Programação 2012/203 1º Semestre - MEEC
como o seguinte exemplo:
1059 = 9*10^0+5*10^1+1*10^3.
8. Desenvolva uma função que converte uma letra minúscula em maiúscula. A função recebe
o carácter por passagem por referência e altera-o: int conv_maiuscula_2(char *c).
Se o carácter não for uma letra minúscula esta não é alterada. A função retorna 1 se a letra
tiver sido convertida e 0 caso contrário.
Esta função não lê nenhuma informação do teclado, nem escreve nada no ecrã.
9. Usando a função anterior, desenvolva um programa que lê uma linha de texto do teclado,
converte todas as letras lidas para maiúsculas e imprime-a após a conversão. Este programa
também imprime o numero de conversões.
Nas seguintes funções considere que uma data (3 inteiros) é armazenada num vetor; int data[3].
10. Desenvolva uma função que recebe como argumento uma data (vetor de três inteiros) e
escreve-a no ecrã. ( void imprime_data(int data[3] )
11. Desenvolva uma função (int compara_datas(int data_1[3], int data_2[3]) ) que recebe
como argumento duas datas e retorna o seguinte:
•
-1 se o primeiro argumento corresponder a uma data anterior `a segunda
•
0 se as datas forem iguais
•
1 se a segunda data for posterior `a primeira
12. Use a função fornecida ( void le_data(int data[3] ) para desenvolver um para testar as duas
funções anteriores
int le_data(int data[3]){
char linha[100];
printf("Introduza uma data ( dia mes ano separados por espaco):");
fgets(linha, 100, stdin);
if(sscanf(linha, "%d %d %d", & data[0], &data[1], &data[2]) != 3){
return -1;
}
if(data[0]<=0 || data[0]>31){
return -1;
}
if(data[1]<=0 || data[0]>12){
return -1;
}
if(data[1]<=0){
return -1;
}
return 0;
}
2/2
Download

Introdução ao UNIX