Curso
de Bacharelado em Informática
Linguagem
de Programação para Aplicações Científicas
Professor:
Eduardo Argollo
Questão 1: Construa uma estrutura capaz de armazenar um número complexo na forma Z = a + bi. Crie funções para:
a) Ler um número complexo a partir do teclado
b) Mostrar um número complexo
c) Retornar a soma de dois complexos
d) Retornar a multiplicação de dois complexos
e) Retornar o conjugado de um complexo
f) Usando as funções anteriores, retornar a divisão entre dois complexos
Crie também um programa principal que funcione como uma calculadora de complexos, onde, a partir das operações solicitadas pelo usuário execute as operações nos números indicados.
Questão 2: Sabe-se que um aluno possui nome (100 caracteres), telefone (20 caracteres) e 3 avaliações (números reais). A partir destas informações:
a) Crie uma estrutura para armazenar alunos
b) Crie uma função para ler um aluno do teclado (esta função não deverá receber argumentos)
c) Crie um programa que tenha um vetor de 10 alunos, obtenha eles do usuário e mostre na tela todos os alunos com suas médias.
d) Crie uma função para ordenar o vetor de alunos a partir de seus nomes
e) Adapte o programa para que este solicite a quantidade de alunos antes de obter seus dados (Obs.: Use alocação dinâmica de memória)
Questão 3: Cada carta possui um naipe, uma cor e um valor (considere o valete 11, a dama 12 e o rei 13). Cada cor de baralho possui 52 cartas. Considere que um jogador pode possuir até 13 cartas, que temos 4 jogadores e que as cartas que não estão com qualquer jogador estão embaralhadas num maço de cartas. Com base nestas informações:
a) Crie uma estrutura para conter uma carta
b) Crie uma variável que contenha os dois baralhos
c) Crie uma função que inicialize as cartas dos baralhos
d) Crie uma estrutura para representar um jogador e responda: Como fazer para que a carta esteja ao mesmo tempo no baralho e na mão do jogador? Qual a solução dada por você? Que outras soluções você poderia encontrar para este problema? Quais os impactos que você pode prever delas no programa?
Questão 4: Crie um programa C obtenha como argumento o nome de um arquivo texto e que mostre na tela o conteúdo deste arquivo:
a) Lendo este caractere a caractere
b) Lendo este linha a linha (considere que uma linha possui, no máximo, 80 caracteres)
Questão 5: Adapte o programa da questão anterior (letra a) para que:
a) Quando o segundo argumento for o caractere ‘n’, este mostre no início de cada linha o seu número.
b) Quando o segundo argumento for o caractere ‘m’, este mostre ao final a média de caracteres por linha.
Questão 6: Crie uma função em C que obtenha um caractere e retorne este caractere criptografado através do uso de um operador xor. Faça um programa C que receba dois nomes de arquivo como argumento – o primeiro o nome do arquivo origem e o segundo o nome do arquivo destino. Este programa deverá criar o arquivo destino e colocar nele o arquivo origem criptografado.
Questão 7: Crie um programa C que leia um arquivo texto, cujo nome deverá ser passado como argumento, que contenha um número inteiro em cada linha e que mostre o resultado da soma e da média destes números.
Questão 8: Crie um programa C que leia dez números inteiros do teclado e grave-os em um arquivo binário. Crie um outro programa C que leia estes números do arquivo e grave um arquivo texto com um número por linha.
Questão 9: Crie um programa C que adicione em um arquivo números reais até que o valor 0 seja digitado. Crie um outro programa C que leia números reais de um arquivo binário e que mostre na tela a quantidade de números lidos, sua soma e média.
Questão 10: Crie uma estrutura para armazenar uma pessoa numa agenda telefônica. Considere que uma pessoa possui nome (até 80 caracteres), telefone (inteiro longo) e endereço (até 140 caracteres). Crie:
a) Uma função que obtenha uma pessoa. (Esta função não deve retornar qualquer valor)
b) Uma função que adicione uma pessoa numa stream binária
c) Uma função que adicione uma pessoa numa stream de texto (considere que cada campo é separado por vírgula e que cada registro fica em uma linha)
d) Um programa que leia pessoas do teclado e adicione-as em um arquivo binário até que o usuário solicite seu término
e) Um programa que leia o arquivo binário e mostre um relatório com os dados de todas as pessoas gravadas na agenda
f) Um programa que solicite uma letra do usuário e mostre todas as pessoas na agenda cujo nome inicia por esta letra.