Вы находитесь на странице: 1из 7

UNIVERSIDADE FEDERAL DOS VALES DO JEQUITINHONHA E MUCURI SISTEMAS DE INFORMAO ALGORITMOS E ESTRUTURAS DE DADOS II PROF: ALEXANDRE RAMOS FONSECA

DOCUMENTAO
PROGRAMA 1: MATRIZES

Discentes:

LUCAS IZUMI DE OLIVEIRA MAIARA CRISTINA DE SOUZA ALBERES DO ESPRITO SANTO

Diamantina 2011

Introduo
Este programa tem por objetivo carregar matrizes j existentes em arquivos de texto e permitir que o usurio efetua diversas operaes com elas. Os arquivos devem seguir um determinado padro para que as matrizes possam ser lidas. Na primeira linha, dividido por espaos, devem estar o nmero de linhas e colunas da matriz. Nas linhas consequentes devem estar, tambm divididos por espaos, os elementos da matriz. Por exemplo, uma matriz 2x2 estaria disposta da seguinte forma: 22 12 34 Ao ser executado o programa carrega imediatamente dois arquivos: "A.txt" e "B.txt". As matrizes internas do programa so ento inicializadas e alocadas dinamicamente, sendo preenchidas pelas matrizes existentes nos arquivos. Se estas operaes forem bem-sucedidas, o programa retorna ao usurio um menu interativo onde este pode escolher que tipo de operao deseja realizar com as matrizes. Caso contrrio, uma mensagem de erro exibida e o programa finalizado. No menu o usurio possui seis (6) opes de escolhas: multiplicar a matriz por uma escalar (disponvel apenas para a matriz obtida do arquivo "A.txt"), somar duas matrizes, subtrair duas matrizes, obter a transposta da matriz (disponvel apenas para a matriz obtida do arquivo "A.txt"), multiplicar duas matrizes e encerrar o programa. Cada opo possui na sua frente um nmero indicativo, o qual o usurio deve digitar para selecionar a opo referente. Para a opo de multiplicar a raiz por um escalar, ser requisitado ao usurio que este digite um nmero real para que a multiplicao possa ser realizada. Para as opes de somar, subtrair e multiplicar duas matrizes, so realizadas verificaes que indicam se as operaes podem ser feitas. Para a soma e subtrao, as matrizes devem ter o mesmo tamanho. Para multiplicao, o nmero de colunas da primeira matriz deve ser igual ao nmero de linhas da segunda. Caso tais opes sejam escolhidas e a verificao retorne falso, uma mensagem de erro exibida e o programa encerrado. Operaes que envolvem mais de uma matriz e a transposta tem seus resultados salvos em um arquivo de texto de nome "C.txt". As demais so salvas no mesmo arquivo, "A.txt".

Implementao
Este programa foi implementado com linguagem de programao C++. Foi necessrio o uso de doze (12) funes, excluindo a int main(), para melhor funcionamento do programa. Tais funes foram implementadas em separado no arquivo "matriz.cpp", sendo usados no cdigo principal atravs da biblioteca criada "matriz.h". A funo "carrega_matriz()" a principal responsvel pelo funcionamento do programa. Utilizando o fstream ela tenta abrir o arquivo de texto definido e, caso consiga, l dele o nmero de linhas e colunas da matriz, criando-a dinamicamente logo em seguida. Usando um lao for, a matriz recm-criada preenchida pelos elementos lidos do arquivo e a funo encerrada.

Paralela a esta tem-se a funo "grava_matriz", responsvel por gravar em arquivo o resultado obtido atravs das operaes escolhidas pelo usurio. Esta funo tambm faz uso do fstream, s que desta vez para escrever no arquivo e no ler. A funo desaloca_matriz() responsvel por desalocar a matriz criada da memria, seu uso importante caso uma matriz que ser usada possua valores antigos nela. A funo tamanho_matriz() compara duas matrizes e verifica se elas possuem o mesmo tamanho ao comparar o tamanho de suas linhas e colunas.

Esta funo chamada durante as funes de soma e subtrao, uma vez que apenas matrizes de mesmo tamanho podem realizar estas operaes. A funo verif(), trabalha em conjunto com a desaloca_matriz(), verificando se uma matriz possui dados antigos. As funes de operaes (multiplicar por escalar, somar, subtrair, multiplicar por matriz, obter transposta) possuem funcionamento semelhante umas s outras, diferendo-se apenas nos clculos realizados.

Estudo de Complexidade
O programa possui ordem de complexibilidade (n), por conta da funo "multiplica()", que multiplica duas matrizes, utilizando trs (3) laos "for". Cada lao for possui ordem de complexibilidade (n), logo, (n)x (n)x (n) = (n).

Concluso
Toda a dificuldade encontrada durante o desenvolvimento deste programa girou em torno de funes que trabalhavam com a alocao dinmica de matrizes. Uma reviso do contedo e uma pequena pesquisa foram suficientes para contornar o problema e fazer o programa funcionar perfeitamente. Este trabalho foi de grande valia para o nosso conhecimento por trabalhar com novos elementos e manipular objetos de formas novas e eficientes.

Bibliografia
Alocao Dinmica de Matrizes em C++ <http://cabelovivaolinux.wordpress.com/2009/08/07/alocacao-dinamica-dematriz-em-c/> Acesso em 27 de Setembro de 2011. W3 Support <http://pt.w3support.net/index.php> Acesso em 27 de Setembro de 2011. Stack Overflow <http://stackoverflow.com/> Acesso em 28 de Setembro de 2011.

Вам также может понравиться