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.

Página concebida e mantida por Eng. Manuel Menezes de Sequeira (última actualização 2006/07/07)
Copyright © 1996-2001 ISCTE