ISCTE - IGE - Exame de Programação I - 2ª
Época
Lisboa, 18 de Julho de 1997
Duração: 3 horas Exame sem consulta
Este exame é composto por duas partes, Parte I e Parte II.
Resolver cada Parte em folhas separadas.
A cotação está no fim do enunciado.
PARTE I (12 valores)
1. Escrever a função:
int procura(int matriz[], int n, int o_que)
A função devolve verdadeiro caso o_que
exista na matriz e falso no caso contrário, considerando que a
matriz tem tamanho n.
2. Escrever um programa que copie a entrada (stdin)
para a saída (stdout) convertendo todas as letras
iniciais das palavras em maiúsculas.
Definição: Palavra é qualquer sequência
contígua de letras e dígitos limitada por qualquer outro tipo
de caractere.
3. Escrever a função:
unsigned long converteBinarioDecimal(char binario[])
Esta função converte uma cadeia de caracteres
contendo apenas dígitos binários ('0' ou '1'),
no respectivo valor numérico. Exemplos:
"10" = 2UL
"1001" = 9UL
PARTE II (8 valores)
4. Escrever um programa que copie um ficheiro
de entrada para um ficheiro de saída substituindo todas as
sequências de caracteres que comecem por /* e terminem
no próximo */ por um único espaço.
5. Escrever a função:
void somaBinario(char r[], char a[], char b[])
A função calcula a soma de duas cadeias
binárias a e b e coloca o resultado, na mesma
forma, na matriz r, que se admite ter tamanho
suficiente. Exemplo:
a = "10111" b = "101" a + b = r = "11100"
Nota: Caso sinta necessidade, pode usar a
função do Problema 3., mesmo que não o tenha resolvido.
Cotação: todas as questões têm a mesma
cotação de 4 valores.
Descrições abreviadas de
algumas funções de que pode precisar
- FILE *fopen(const
char nome[], const char modo[])
- Estabelece um canal de comunicação com o
ficheiro cujo nome está guardado na cadeia nome.
O canal é estabelecido para leitura ou escrita de acordo
com modo. Devolve o descritor do canal.
- int fclose(FILE
*dcanal)
- Fecha o canal descrito por canal.
- int printf(const
char formato[], ...)
- Escreve no ecrã o conteúdo da cadeia formato,
substituindo as ocorrências de %d, %s,
%c, etc. pelos valores dos argumentos
respectivos.
- int fprintf(FILE
*dcanal, const char formato[], ...)
- Como printf(), mas a escrita
faz-se no canal descrito por dcanal.
- int sprintf(char
cadeia[], const char formato[], ...)
- Como printf(), mas a escrita
faz-se na matriz cadeia, sendo terminada por '\0'.
- int scanf(const char
formato[], ...)
- Lê do teclado o conteúdo da cadeia formato,
guardando nos argumentos os valores convertidos de acordo
com as corrências de %d, %s, %c,
etc. na cadeia. Devolve EOF caso se tenha
atingido o fim do ficheiro.
- int fscanf(FILE
*dcanal, const char formato[], ...)
- Como scanf(), mas a leitura
faz-se do canal descrito por dcanal. Devolve EOF
caso se tenha atingido o fim do ficheiro.
- int sscanff(const
char cadeia[], const char formato[], ...)
- Como scanf(), mas a leitura
faz-se da cadeia cadeia.
- int putchar(int c)
- Escreve no ecrã o caractere de código c.
- int fputc(int c,
FILE *dcanal)
- Escreve no canal descrito por dcanal
o caractere de código c.
- int getchar()
- Lê um caractere do teclado e devolve o
seu código (ou EOF se atingiu o fim do
ficheiro).
- int fgetc(FILE
*dcanal)
- Lê um caractere do canal descrito por dcanal
e devolve o seu código (ou EOF caso se tenha
atingido o fim do ficheiro).
- int fputs(const char
cadeia[], FILE *dcanal)
- Escreve no canal descrito por dcanal
o conteúdo da cadeia cadeia.
- char *fgets(char
cadeia[], int tamanho, FILE *dcanal)
- Lê uma linha do canal descrito por dcanal
e guarda-a na matriz cadeia terminada por '\0''.
Lê no maximo tamanho-1 caracteres. Guarda
também o fim-de-linha (se couber). Devolve NULL
caso se tenha atingido o fim do ficheiro.
- char *strcpy(char
para[], const char de[])
- Copia o conteúdo da cadeia de
para a matriz para (põe o terminador '\0').
- int strcmp(const
char cad1[], const char cad2[])
- Compara as cadeias cad1 e cad2.
Devolve 0 se forem iguais, > 0 se cad1
for maior que cad2 e < 0 se cad1
for menor que cad2 (usa ordenação
lexicográfica).
- int strlen(const
char cadeia[])
- Devolve o comprimento da cadeia cadeia.
- int isdigit(int c),
int isalpha(int c), int islower(int c), int isupper(int
c) e int isspace(int c)
- Devolvem um valor lógico verdadeiro ou
falso consoante o caractere correspondente ao código
guardado em c seja: um dígito, uma letra, uma
letra minúscula, uma letra maiúscula, e um espaço
branco (espaço, tabulador, fim-de-linha, etc.).
- int toupper(int c)
- Devolve o código correspondente à
versão maiúscula do caractere guardado em c.