1
Estrutura de Dados
PUC
7
Estrutura de Dados
PUC
1
Estrutura de Dados
PUC
9
Estrutura de Dados
PUC
27
Estrutura de Dados
PUC
1
Estrutura de Dados
PUC
3
Estrutura de Dados
PUC
1
Estrutura de Dados
PUC
3
Estrutura de Dados
PUC
9
Estrutura de Dados
PUC
Texto de pré-visualização
PUCMinas Ciência da Computação AED1 Estudo Dirigido 12 Tema Introdução à programação IV Atividade Grupos de dados heterogêneos 01 Editar e salvar um esboço de programa em C cujo nome será mymatrixhpp que conterá definições para uso posterior mymatrixhpp v00 Author definicoes globais ifndef MYMATRIXH define MYMATRIXH dependencias include iostream using stdcin para entrada using stdcout para saida using stdendl para mudar de linha include iomanip using stdsetw para definir espacamento include string using stdstring para cadeia de caracteres include fstream using stdofstream para gravar arquivo using stdifstream para ler arquivo template typename T class Matrix private area reservada T optional int rows int columns T data public area aberta Matrix definir valores iniciais thisrows 0 thiscolumns 0 sem reservar area data nullptr end constructor Matrix int rows0 int columns0 T initial definir dado local bool OK true definir valores iniciais thisoptional initial thisrows rows thiscolumns columns reservar area data new T rows if data nullptr for int x 0 x rows xx1 data x new T columns OK OK data x nullptr end for if OK data nullptr end if end if end constructor Matrix if data nullptr for int x 0 x rows xx1 delete data x end for delete data data nullptr end if end destructor void set int row int column T value if row 0 row rows column 0 column columns cout ERROR Invalid position else data row column value end if end set T get int row int column T value optional if row 0 row rows column 0 column columns cout ERROR Invalid position else value data row column end if return value end get void print cout endl for int x 0 x rows xx1 for int y 0 y columns yy1 cout data x y end for cout endl end for cout endl end print end class endif Editar outro programa em C na mesma pasta cujo nome será Exemplo1201cpp para mostrar dados em matriz Method01 Mostrar certa quantidade de valores void method01 definir dados Matrix int intmatrix 2 2 0 intmatrixset 0 0 1 intmatrixset 0 1 2 intmatrixset 1 0 3 intmatrixset 1 1 4 identificar cout EXEMPLO1210 Method01 v00 endl mostrar dados intmatrixprint encerrar pause Apertar ENTER para continuar fim method01 OBS As referências para matrizes são duplas e precisarão valores iniciais em ambas A reciclagem do espaço será feita automaticamente de acordo com à definição do destrutor 02 Compilar o programa Se houver erros resolvêlos e compilar novamente até que todos tenham sido resolvidos Se não houver erros seguir para o próximo passo Em caso de dúvidas consultar a apostila recorrer aos monitores ou apresentálas ao professor 03 Executar o programa Observar as saídas Registrar os dados e os resultados 04 Copiar a versão atual do programa para outra nova Exemplo1202cpp 05 Editar mudanças no nome do programa e versão Acrescentar na biblioteca outro método para ler e guardar dados em matriz void read cout endl for int x 0 x rows xx1 for int y 0 y columns yy1 cout setw 2 x setw 2 y cin data x y end for end for cout endl end read Na parte principal incluir a chamada do método para testar o novo Method02 void method02 definir dados Matrix int matrix 2 2 0 identificar cout endl EXEMPLO1210 Method02 v00 endl ler dados matrixread mostrar dados matrixprint encerrar pause Apertar ENTER para continuar fim method02 OBS Só poderá ser mostrado o arranjo em que existir algum conteúdo diferente de nullptr inexistência de dados 06 Compilar o programa novamente Se houver erros resolvêlos e compilar novamente até que todos tenham sido resolvidos Se não houver erros seguir para o próximo passo 07 Executar o programa Observar as saídas Registrar os dados e os resultados 08 Copiar a versão atual do programa para outra nova Exemplo1203cpp 09 Editar mudanças no nome do programa e versão Acrescentar na biblioteca outro método para gravar em arquivo dados na matriz void fprint string fileName ofstream afile afileopen fileName afile rows endl afile columns endl for int x 0 x rows xx1 for int y 0 y columns yy1 afile data x y endl end for end for afileclose end fprint Na parte principal incluir a chamada do método para testar o novo Method03 void method03 definir dados Matrix int matrix 2 2 0 identificar cout endl EXEMPLO1210 Method03 v00 endl ler dados matrixread mostrar dados matrixprint gravar dados matrixfprint MATRIX1TXT encerrar pause Apertar ENTER para continuar fim method03 OBS As quantidades de linhas e colunas serão gravadas nas primeiras linhas do arquivo 10 Compilar o programa novamente Se houver erros resolvêlos e compilar novamente até que todos tenham sido resolvidos Se não houver erros seguir para o próximo passo 11 Executar o programa Observar as saídas Registrar os dados e os resultados 12 Copiar a versão atual do programa para outra nova Exemplo1204cpp 13 Editar mudanças no nome do programa e versão Acrescentar na biblioteca outro método para ler arquivo e guardar dados em matriz void fread string fileName ifstream afile int m 0 int n 0 afileopen fileName afile m afile n if m 0 n 0 cout ERROR Invalid dimensions for matrix endl else guardar a quantidade de dados rows m columns n reservar area data new T rows for int x 0 x rows xx1 data x new T columns end for ler dados for int x 0 x rows xx1 for int y 0 y columns yy1 afile data x y end for end for end if afileclose end fread Na parte principal incluir a chamada do método para testar o novo Method04 void method04 definir dados Matrix int matrix 1 1 0 identificar cout endl EXEMPLO1210 Method04 v00 endl ler dados matrixfread MATRIX1TXT mostrar dados matrixprint encerrar pause Apertar ENTER para continuar fim method04 OBS Só poderá ser guardada a mesma quantidade de dados lida no início do arquivo se houver Haverá redimensionamento da área reservada para armazenar os valores 14 Compilar o programa novamente Se houver erros resolvêlos e compilar novamente até que todos tenham sido resolvidos Se não houver erros seguir para o próximo passo 15 Executar o programa Observar as saídas Registrar os dados e os resultados 16 Copiar a versão atual do programa para outra nova Exemplo1205cpp 17 Editar mudanças no nome do programa e versão Acrescentar na biblioteca outros construtores e um método para criar um objeto com dados copiados de outras matriz Matrix operator const Matrix T other if otherrows 0 othercolumns 0 cout ERROR Missing data endl else thisrows otherrows thiscolumns othercolumns thisdata new T rows for int x 0 x rows xx1 thisdata x new T columns end for for int x 0 x thisrows xx1 for int y 0 y thiscolumns yy1 data x y otherdata x y end for end for end if return this end operator Na parte principal incluir a chamada do método para testar o novo Method05 void method05 definir dados Matrix int intmatrix1 1 1 0 Matrix int intmatrix2 1 1 0 identificar cout endl EXEMPLO1210 Method05 v00 endl ler dados intmatrix1fread MATRIX1TXT mostrar dados cout Original endl intmatrix1print copiar dados intmatrix2 intmatrix1 mostrar dados cout Copia endl intmatrix2print encerrar pause Apertar ENTER para continuar fim method05 OBS Só poderá ser copiada a mesma quantidade de dados se houver espaço suficiente 18 Compilar o programa novamente Se houver erros resolvêlos e compilar novamente até que todos tenham sido resolvidos Se não houver erros seguir para o próximo passo 19 Executar o programa Observar as saídas Registrar os dados e os resultados 20 Copiar a versão atual do programa para outra nova Exemplo1206cpp 21 Editar mudanças no nome do programa e versão Acrescentar na biblioteca uma função para testar se a matriz só contém zeros bool isZeros bool result false int x 0 int y 0 if rows 0 columns 0 result true while x rows result y 0 while y columns result result result data x y 0 y y 1 end for x x 1 end while end if return result end isZeros Na parte principal incluir a chamada do método para testar a função Method06 void method06 definir dados Matrix int intmatrix 2 2 0 intmatrixset 0 0 0 intmatrixset 0 1 0 intmatrixset 1 0 0 intmatrixset 1 1 0 identificar cout endl EXEMPLO1210 Method06 v00 endl mostrar dados intmatrixprint testar condicao cout Zeros intmatrixisZeros endl ler dados intmatrixfread MATRIX1TXT mostrar dados intmatrixprint testar condicao cout Zeros intmatrixisZeros endl encerrar pause Apertar ENTER para continuar fim method06 22 Compilar o programa novamente Se houver erros resolvêlos e compilar novamente até que todos tenham sido resolvidos Se não houver erros seguir para o próximo passo 23 Executar o programa Observar as saídas Registrar os dados e os resultados 24 Copiar a versão atual do programa para outra nova Exemplo1207cpp 25 Editar mudanças no nome do programa e versão Acrescentar na biblioteca um operador para testar se matrizes são diferentes bool operator const Matrix T other bool result false int x 0 int y 0 if otherrows 0 rows otherrows othercolumns 0 columns othercolumns cout ERROR Missing data endl else x 0 while x rows result y 0 while y columns result result data x y otherdata x y y y 1 end for x x 1 end for end if return result end operator Na parte principal incluir a chamada do método para testar a função Method07 void method07 definir dados Matrix int intmatrix1 1 1 0 Matrix int intmatrix2 1 1 0 identificar cout endl EXEMPLO1210 Method07 v00 endl ler dados intmatrix1fread MATRIX1TXT mostrar dados cout Matrix1 intmatrix1print copiar dados intmatrix2 intmatrix1 mostrar dados cout Matrix2 intmatrix2print testar condicao cout Diferentes intmatrix1intmatrix2 endl alterar dados intmatrix2set 0 0 1 mostrar dados cout Matrix1 intmatrix1print mostrar dados cout Matrix2 intmatrix2print testar condicao cout Diferentes intmatrix1intmatrix2 endl encerrar pause Apertar ENTER para continuar fim method07 OBS Só poderão ser comparadas matrizes com as mesmas dimensões 26 Compilar o programa novamente Se houver erros resolvêlos e compilar novamente até que todos tenham sido resolvidos Se não houver erros seguir para o próximo passo 27 Executar o programa Observar as saídas Registrar os dados e os resultados 28 Copiar a versão atual do programa para outra nova Exemplo1208cpp 29 Editar mudanças no nome do programa e versão Acrescentar um método para subtrair dados em matrizes posição por posição Matrix operator const Matrix T other static Matrix T result 1 1 0 int x 0 int y 0 if otherrows 0 rows otherrows othercolumns 0 columns othercolumns cout ERROR Missing data endl else resultrows rows resultcolumns othercolumns resultdata new T resultrows for int x 0 x resultrows xx1 resultdata x new T resultcolumns end for for int x 0 x resultrows xx1 for int y 0 y resultcolumns yy1 resultdata x y data x y otherdata x y end for end for end if return result end operator Na parte principal incluir a chamada do método para testar a operação Method08 void method08 definir dados Matrix int intmatrix1 1 1 0 Matrix int intmatrix2 1 1 0 Matrix int intmatrix3 1 1 0 identificar cout endl EXEMPLO1210 Method08 v00 endl ler dados intmatrix1fread MATRIX1TXT mostrar dados cout Matrix1 intmatrix1print copiar dados intmatrix2 intmatrix1 mostrar dados cout Matrix2 intmatrix2print operar dados intmatrix3 intmatrix1 intmatrix2 mostrar dados cout Matrix3 intmatrix3print encerrar pause Apertar ENTER para continuar fim method08 OBS Só poderão ser operadas matrizes com as mesmas dimensões 30 Compilar o programa novamente Se houver erros resolvêlos e compilar novamente até que todos tenham sido resolvidos Se não houver erros seguir para o próximo passo 31 Executar o programa Observar as saídas Registrar os dados e os resultados 32 Copiar a versão atual do programa para outra nova Exemplo1209cpp 33 Editar mudanças no nome do programa e versão Acrescentar um operador para calcular o produto de matrizes Matrix operator const Matrix T other static Matrix T result 1 1 0 int x 0 int y 0 int z 0 int sum 0 if rows 0 columns 0 otherrows 0 othercolumns 0 columns otherrows cout endl ERROR Invalid data endl resultdata 0 0 0 else resultrows rows resultcolumns othercolumns resultdata new T resultrows for int x 0 x resultrows xx1 resultdata x new T resultcolumns end for for x 0 x resultrows x x 1 for y 0 y resultcolumns y y 1 sum 0 for z 0 z columns z z 1 sum sum data x z otherdata z y end for resultdata x y sum end for end for end if return result end operator Na parte principal incluir a chamada do método para testar a operação Method09 void method09 definir dados Matrix int intmatrix1 2 2 0 intmatrix1set 0 0 1 intmatrix1set 0 1 0 intmatrix1set 1 0 0 intmatrix1set 1 1 1 Matrix int intmatrix2 1 1 0 Matrix int intmatrix3 1 1 0 identificar cout endl EXEMPLO1210 Method09 v00 endl ler dados intmatrix2fread MATRIX1TXT mostrar dados cout Matrix1 intmatrix1print mostrar dados cout Matrix2 intmatrix2print operar dados intmatrix3 intmatrix1 intmatrix2 mostrar dados cout Matrix3 intmatrix3print encerrar pause Apertar ENTER para continuar fim method09 OBS Só poderão ser operadas matrizes com dimensões compatíveis 34 Compilar o programa novamente Se houver erros resolvêlos e compilar novamente até que todos tenham sido resolvidos Se não houver erros seguir para o próximo passo 35 Executar o programa Observar as saídas Registrar os dados e os resultados 36 Copiar a versão atual do programa para outra nova Exemplo1210c 37 Editar mudanças no nome do programa e versão Acrescentar na biblioteca para acessos externos aos valores em matriz const int getRows return rows end getRows const int getColumns return columns end getColumns Na parte principal incluir a chamada do método para testar a função Method10 void method10 definir dados Matrix int intmatrix 3 3 0 int x 0 int y 0 identificar cout endl EXEMPLO1210 Method10 v00 endl ler dados intmatrixfread MATRIX1TXT mostrar dados cout Matrix intmatrixprint operar dados for int x 0 x intmatrixgetRows xx1 for int y 0 y intmatrixgetColumns yy1 intmatrixset x y intmatrixget x y 1 end for end for mostrar dados cout Matrix intmatrixprint encerrar pause Apertar ENTER para continuar fim method10 OBS Só poderá haver acesso se houver dados e somente serão acessadas posições válidas 38 Compilar o programa novamente Se houver erros resolvêlos e compilar novamente até que todos tenham sido resolvidos Se não houver erros seguir para o próximo passo 39 Executar o programa Observar as saídas Registrar os dados e os resultados Exercícios DICAS GERAIS Consultar o Anexo C 02 na apostila para outros exemplos Prever realizar e registrar todos os testes efetuados Integrar as chamadas de todos os programas em um só 01 Incluir métodos Exemplo1211 para ler a quantidade de elementos MxN a serem gerados gerar essa quantidade MxN de valores aleatórios dentro do intervalo e armazenálos em matriz graválos um por linha em um arquivo DADOSTXT A primeira linha do arquivo deverá informar a quantidade de números aleatórios N que serão gravados em seguida DICA Usar a função rand mas tentar limitar valores ao intervalo 1100 Exemplo matrixgerarInt inferior superior 02 Incluir uma função Exemplo1212 para escalar uma matriz multiplicando todos os seus valores por uma constante Para testar receber um nome de arquivo como parâmetro e aplicar a função sobre a matriz com os valores lidos Exemplo matrix1 lerArquivo DADOS1TXT matrix2 matrix1escalar 3 03 Incluir uma função Exemplo1213 para testar se uma matriz é a identidade Para testar receber um nome de arquivo como parâmetro e aplicar a função sobre a matriz com os valores lidos Exemplo matrix1 lerArquivo DADOS1TXT teste matrix1identidade 04 Incluir em um programa Exemplo1214 um operador para testar a igualdade de duas matrizes Para testar receber um nome de arquivo como parâmetro e aplicar a função sobre o arranjo com os valores lidos Exemplo matrix1 lerArquivo DADOS1TXT matrix2 lerArquivo DADOS2TXT teste matrix1 matrix2 05 Incluir uma função Exemplo1215 para somar duas matrizes e mostrar o resultado Para testar receber um nome de arquivo como parâmetro e aplicar a função sobre o arranjo com os valores lidos Exemplo matrix1 lerArquivo DADOS1TXT matrix2 lerArquivo DADOS2TXT soma matrix1somar matrix2 06 Incluir uma função Exemplo1216 para operar duas linhas da matriz guardando no lugar da primeira as somas de cada elemento da primeira com o respectivo da segunda multiplicados por uma constante Exemplo matrix1 lerArquivo DADOS1TXT matrix1somarLinhas 0 1 1 07 Incluir uma função Exemplo1217 para operar duas linhas da matriz guardando no lugar da primeira as diferenças de cada elemento da primeira com o respectivo da segunda multiplicado por uma constante Exemplo matrix1 lerArquivo DADOS1TXT matrix1subtrairLinhas 0 1 2 08 Incluir uma função Exemplo1218 para dizer em qual linha da matriz se encontra certo valor se houver Exemplo matrix1 lerArquivo DADOS1TXT teste matrix1procurarLinhas procurado 09 Incluir uma função Exemplo1219 para dizer em qual coluna da matriz se encontra certo valor se houver Exemplo matrix1 lerArquivo DADOS1TXT teste matrix1procurarColunas procurado 10 Incluir uma função Exemplo1220 para transpor os dados em uma matriz Exemplo matrix1 lerArquivo DADOS1TXT matrix1transpor Tarefas extras E1 Incluir uma função Exemplo12E1 para dizer se uma matriz apresenta a característica abaixo 1 2 3 4 1 2 3 5 6 7 8 1 2 4 5 6 9 10 11 12 3 4 7 8 9 13 14 15 16 E2 Incluir uma função Exemplo12E2 para montar uma matriz com a característica abaixo 1 5 9 13 1 4 7 2 6 10 14 1 3 2 5 8 3 7 11 15 2 4 3 6 9 4 8 12 16
1
Estrutura de Dados
PUC
7
Estrutura de Dados
PUC
1
Estrutura de Dados
PUC
9
Estrutura de Dados
PUC
27
Estrutura de Dados
PUC
1
Estrutura de Dados
PUC
3
Estrutura de Dados
PUC
1
Estrutura de Dados
PUC
3
Estrutura de Dados
PUC
9
Estrutura de Dados
PUC
Texto de pré-visualização
PUCMinas Ciência da Computação AED1 Estudo Dirigido 12 Tema Introdução à programação IV Atividade Grupos de dados heterogêneos 01 Editar e salvar um esboço de programa em C cujo nome será mymatrixhpp que conterá definições para uso posterior mymatrixhpp v00 Author definicoes globais ifndef MYMATRIXH define MYMATRIXH dependencias include iostream using stdcin para entrada using stdcout para saida using stdendl para mudar de linha include iomanip using stdsetw para definir espacamento include string using stdstring para cadeia de caracteres include fstream using stdofstream para gravar arquivo using stdifstream para ler arquivo template typename T class Matrix private area reservada T optional int rows int columns T data public area aberta Matrix definir valores iniciais thisrows 0 thiscolumns 0 sem reservar area data nullptr end constructor Matrix int rows0 int columns0 T initial definir dado local bool OK true definir valores iniciais thisoptional initial thisrows rows thiscolumns columns reservar area data new T rows if data nullptr for int x 0 x rows xx1 data x new T columns OK OK data x nullptr end for if OK data nullptr end if end if end constructor Matrix if data nullptr for int x 0 x rows xx1 delete data x end for delete data data nullptr end if end destructor void set int row int column T value if row 0 row rows column 0 column columns cout ERROR Invalid position else data row column value end if end set T get int row int column T value optional if row 0 row rows column 0 column columns cout ERROR Invalid position else value data row column end if return value end get void print cout endl for int x 0 x rows xx1 for int y 0 y columns yy1 cout data x y end for cout endl end for cout endl end print end class endif Editar outro programa em C na mesma pasta cujo nome será Exemplo1201cpp para mostrar dados em matriz Method01 Mostrar certa quantidade de valores void method01 definir dados Matrix int intmatrix 2 2 0 intmatrixset 0 0 1 intmatrixset 0 1 2 intmatrixset 1 0 3 intmatrixset 1 1 4 identificar cout EXEMPLO1210 Method01 v00 endl mostrar dados intmatrixprint encerrar pause Apertar ENTER para continuar fim method01 OBS As referências para matrizes são duplas e precisarão valores iniciais em ambas A reciclagem do espaço será feita automaticamente de acordo com à definição do destrutor 02 Compilar o programa Se houver erros resolvêlos e compilar novamente até que todos tenham sido resolvidos Se não houver erros seguir para o próximo passo Em caso de dúvidas consultar a apostila recorrer aos monitores ou apresentálas ao professor 03 Executar o programa Observar as saídas Registrar os dados e os resultados 04 Copiar a versão atual do programa para outra nova Exemplo1202cpp 05 Editar mudanças no nome do programa e versão Acrescentar na biblioteca outro método para ler e guardar dados em matriz void read cout endl for int x 0 x rows xx1 for int y 0 y columns yy1 cout setw 2 x setw 2 y cin data x y end for end for cout endl end read Na parte principal incluir a chamada do método para testar o novo Method02 void method02 definir dados Matrix int matrix 2 2 0 identificar cout endl EXEMPLO1210 Method02 v00 endl ler dados matrixread mostrar dados matrixprint encerrar pause Apertar ENTER para continuar fim method02 OBS Só poderá ser mostrado o arranjo em que existir algum conteúdo diferente de nullptr inexistência de dados 06 Compilar o programa novamente Se houver erros resolvêlos e compilar novamente até que todos tenham sido resolvidos Se não houver erros seguir para o próximo passo 07 Executar o programa Observar as saídas Registrar os dados e os resultados 08 Copiar a versão atual do programa para outra nova Exemplo1203cpp 09 Editar mudanças no nome do programa e versão Acrescentar na biblioteca outro método para gravar em arquivo dados na matriz void fprint string fileName ofstream afile afileopen fileName afile rows endl afile columns endl for int x 0 x rows xx1 for int y 0 y columns yy1 afile data x y endl end for end for afileclose end fprint Na parte principal incluir a chamada do método para testar o novo Method03 void method03 definir dados Matrix int matrix 2 2 0 identificar cout endl EXEMPLO1210 Method03 v00 endl ler dados matrixread mostrar dados matrixprint gravar dados matrixfprint MATRIX1TXT encerrar pause Apertar ENTER para continuar fim method03 OBS As quantidades de linhas e colunas serão gravadas nas primeiras linhas do arquivo 10 Compilar o programa novamente Se houver erros resolvêlos e compilar novamente até que todos tenham sido resolvidos Se não houver erros seguir para o próximo passo 11 Executar o programa Observar as saídas Registrar os dados e os resultados 12 Copiar a versão atual do programa para outra nova Exemplo1204cpp 13 Editar mudanças no nome do programa e versão Acrescentar na biblioteca outro método para ler arquivo e guardar dados em matriz void fread string fileName ifstream afile int m 0 int n 0 afileopen fileName afile m afile n if m 0 n 0 cout ERROR Invalid dimensions for matrix endl else guardar a quantidade de dados rows m columns n reservar area data new T rows for int x 0 x rows xx1 data x new T columns end for ler dados for int x 0 x rows xx1 for int y 0 y columns yy1 afile data x y end for end for end if afileclose end fread Na parte principal incluir a chamada do método para testar o novo Method04 void method04 definir dados Matrix int matrix 1 1 0 identificar cout endl EXEMPLO1210 Method04 v00 endl ler dados matrixfread MATRIX1TXT mostrar dados matrixprint encerrar pause Apertar ENTER para continuar fim method04 OBS Só poderá ser guardada a mesma quantidade de dados lida no início do arquivo se houver Haverá redimensionamento da área reservada para armazenar os valores 14 Compilar o programa novamente Se houver erros resolvêlos e compilar novamente até que todos tenham sido resolvidos Se não houver erros seguir para o próximo passo 15 Executar o programa Observar as saídas Registrar os dados e os resultados 16 Copiar a versão atual do programa para outra nova Exemplo1205cpp 17 Editar mudanças no nome do programa e versão Acrescentar na biblioteca outros construtores e um método para criar um objeto com dados copiados de outras matriz Matrix operator const Matrix T other if otherrows 0 othercolumns 0 cout ERROR Missing data endl else thisrows otherrows thiscolumns othercolumns thisdata new T rows for int x 0 x rows xx1 thisdata x new T columns end for for int x 0 x thisrows xx1 for int y 0 y thiscolumns yy1 data x y otherdata x y end for end for end if return this end operator Na parte principal incluir a chamada do método para testar o novo Method05 void method05 definir dados Matrix int intmatrix1 1 1 0 Matrix int intmatrix2 1 1 0 identificar cout endl EXEMPLO1210 Method05 v00 endl ler dados intmatrix1fread MATRIX1TXT mostrar dados cout Original endl intmatrix1print copiar dados intmatrix2 intmatrix1 mostrar dados cout Copia endl intmatrix2print encerrar pause Apertar ENTER para continuar fim method05 OBS Só poderá ser copiada a mesma quantidade de dados se houver espaço suficiente 18 Compilar o programa novamente Se houver erros resolvêlos e compilar novamente até que todos tenham sido resolvidos Se não houver erros seguir para o próximo passo 19 Executar o programa Observar as saídas Registrar os dados e os resultados 20 Copiar a versão atual do programa para outra nova Exemplo1206cpp 21 Editar mudanças no nome do programa e versão Acrescentar na biblioteca uma função para testar se a matriz só contém zeros bool isZeros bool result false int x 0 int y 0 if rows 0 columns 0 result true while x rows result y 0 while y columns result result result data x y 0 y y 1 end for x x 1 end while end if return result end isZeros Na parte principal incluir a chamada do método para testar a função Method06 void method06 definir dados Matrix int intmatrix 2 2 0 intmatrixset 0 0 0 intmatrixset 0 1 0 intmatrixset 1 0 0 intmatrixset 1 1 0 identificar cout endl EXEMPLO1210 Method06 v00 endl mostrar dados intmatrixprint testar condicao cout Zeros intmatrixisZeros endl ler dados intmatrixfread MATRIX1TXT mostrar dados intmatrixprint testar condicao cout Zeros intmatrixisZeros endl encerrar pause Apertar ENTER para continuar fim method06 22 Compilar o programa novamente Se houver erros resolvêlos e compilar novamente até que todos tenham sido resolvidos Se não houver erros seguir para o próximo passo 23 Executar o programa Observar as saídas Registrar os dados e os resultados 24 Copiar a versão atual do programa para outra nova Exemplo1207cpp 25 Editar mudanças no nome do programa e versão Acrescentar na biblioteca um operador para testar se matrizes são diferentes bool operator const Matrix T other bool result false int x 0 int y 0 if otherrows 0 rows otherrows othercolumns 0 columns othercolumns cout ERROR Missing data endl else x 0 while x rows result y 0 while y columns result result data x y otherdata x y y y 1 end for x x 1 end for end if return result end operator Na parte principal incluir a chamada do método para testar a função Method07 void method07 definir dados Matrix int intmatrix1 1 1 0 Matrix int intmatrix2 1 1 0 identificar cout endl EXEMPLO1210 Method07 v00 endl ler dados intmatrix1fread MATRIX1TXT mostrar dados cout Matrix1 intmatrix1print copiar dados intmatrix2 intmatrix1 mostrar dados cout Matrix2 intmatrix2print testar condicao cout Diferentes intmatrix1intmatrix2 endl alterar dados intmatrix2set 0 0 1 mostrar dados cout Matrix1 intmatrix1print mostrar dados cout Matrix2 intmatrix2print testar condicao cout Diferentes intmatrix1intmatrix2 endl encerrar pause Apertar ENTER para continuar fim method07 OBS Só poderão ser comparadas matrizes com as mesmas dimensões 26 Compilar o programa novamente Se houver erros resolvêlos e compilar novamente até que todos tenham sido resolvidos Se não houver erros seguir para o próximo passo 27 Executar o programa Observar as saídas Registrar os dados e os resultados 28 Copiar a versão atual do programa para outra nova Exemplo1208cpp 29 Editar mudanças no nome do programa e versão Acrescentar um método para subtrair dados em matrizes posição por posição Matrix operator const Matrix T other static Matrix T result 1 1 0 int x 0 int y 0 if otherrows 0 rows otherrows othercolumns 0 columns othercolumns cout ERROR Missing data endl else resultrows rows resultcolumns othercolumns resultdata new T resultrows for int x 0 x resultrows xx1 resultdata x new T resultcolumns end for for int x 0 x resultrows xx1 for int y 0 y resultcolumns yy1 resultdata x y data x y otherdata x y end for end for end if return result end operator Na parte principal incluir a chamada do método para testar a operação Method08 void method08 definir dados Matrix int intmatrix1 1 1 0 Matrix int intmatrix2 1 1 0 Matrix int intmatrix3 1 1 0 identificar cout endl EXEMPLO1210 Method08 v00 endl ler dados intmatrix1fread MATRIX1TXT mostrar dados cout Matrix1 intmatrix1print copiar dados intmatrix2 intmatrix1 mostrar dados cout Matrix2 intmatrix2print operar dados intmatrix3 intmatrix1 intmatrix2 mostrar dados cout Matrix3 intmatrix3print encerrar pause Apertar ENTER para continuar fim method08 OBS Só poderão ser operadas matrizes com as mesmas dimensões 30 Compilar o programa novamente Se houver erros resolvêlos e compilar novamente até que todos tenham sido resolvidos Se não houver erros seguir para o próximo passo 31 Executar o programa Observar as saídas Registrar os dados e os resultados 32 Copiar a versão atual do programa para outra nova Exemplo1209cpp 33 Editar mudanças no nome do programa e versão Acrescentar um operador para calcular o produto de matrizes Matrix operator const Matrix T other static Matrix T result 1 1 0 int x 0 int y 0 int z 0 int sum 0 if rows 0 columns 0 otherrows 0 othercolumns 0 columns otherrows cout endl ERROR Invalid data endl resultdata 0 0 0 else resultrows rows resultcolumns othercolumns resultdata new T resultrows for int x 0 x resultrows xx1 resultdata x new T resultcolumns end for for x 0 x resultrows x x 1 for y 0 y resultcolumns y y 1 sum 0 for z 0 z columns z z 1 sum sum data x z otherdata z y end for resultdata x y sum end for end for end if return result end operator Na parte principal incluir a chamada do método para testar a operação Method09 void method09 definir dados Matrix int intmatrix1 2 2 0 intmatrix1set 0 0 1 intmatrix1set 0 1 0 intmatrix1set 1 0 0 intmatrix1set 1 1 1 Matrix int intmatrix2 1 1 0 Matrix int intmatrix3 1 1 0 identificar cout endl EXEMPLO1210 Method09 v00 endl ler dados intmatrix2fread MATRIX1TXT mostrar dados cout Matrix1 intmatrix1print mostrar dados cout Matrix2 intmatrix2print operar dados intmatrix3 intmatrix1 intmatrix2 mostrar dados cout Matrix3 intmatrix3print encerrar pause Apertar ENTER para continuar fim method09 OBS Só poderão ser operadas matrizes com dimensões compatíveis 34 Compilar o programa novamente Se houver erros resolvêlos e compilar novamente até que todos tenham sido resolvidos Se não houver erros seguir para o próximo passo 35 Executar o programa Observar as saídas Registrar os dados e os resultados 36 Copiar a versão atual do programa para outra nova Exemplo1210c 37 Editar mudanças no nome do programa e versão Acrescentar na biblioteca para acessos externos aos valores em matriz const int getRows return rows end getRows const int getColumns return columns end getColumns Na parte principal incluir a chamada do método para testar a função Method10 void method10 definir dados Matrix int intmatrix 3 3 0 int x 0 int y 0 identificar cout endl EXEMPLO1210 Method10 v00 endl ler dados intmatrixfread MATRIX1TXT mostrar dados cout Matrix intmatrixprint operar dados for int x 0 x intmatrixgetRows xx1 for int y 0 y intmatrixgetColumns yy1 intmatrixset x y intmatrixget x y 1 end for end for mostrar dados cout Matrix intmatrixprint encerrar pause Apertar ENTER para continuar fim method10 OBS Só poderá haver acesso se houver dados e somente serão acessadas posições válidas 38 Compilar o programa novamente Se houver erros resolvêlos e compilar novamente até que todos tenham sido resolvidos Se não houver erros seguir para o próximo passo 39 Executar o programa Observar as saídas Registrar os dados e os resultados Exercícios DICAS GERAIS Consultar o Anexo C 02 na apostila para outros exemplos Prever realizar e registrar todos os testes efetuados Integrar as chamadas de todos os programas em um só 01 Incluir métodos Exemplo1211 para ler a quantidade de elementos MxN a serem gerados gerar essa quantidade MxN de valores aleatórios dentro do intervalo e armazenálos em matriz graválos um por linha em um arquivo DADOSTXT A primeira linha do arquivo deverá informar a quantidade de números aleatórios N que serão gravados em seguida DICA Usar a função rand mas tentar limitar valores ao intervalo 1100 Exemplo matrixgerarInt inferior superior 02 Incluir uma função Exemplo1212 para escalar uma matriz multiplicando todos os seus valores por uma constante Para testar receber um nome de arquivo como parâmetro e aplicar a função sobre a matriz com os valores lidos Exemplo matrix1 lerArquivo DADOS1TXT matrix2 matrix1escalar 3 03 Incluir uma função Exemplo1213 para testar se uma matriz é a identidade Para testar receber um nome de arquivo como parâmetro e aplicar a função sobre a matriz com os valores lidos Exemplo matrix1 lerArquivo DADOS1TXT teste matrix1identidade 04 Incluir em um programa Exemplo1214 um operador para testar a igualdade de duas matrizes Para testar receber um nome de arquivo como parâmetro e aplicar a função sobre o arranjo com os valores lidos Exemplo matrix1 lerArquivo DADOS1TXT matrix2 lerArquivo DADOS2TXT teste matrix1 matrix2 05 Incluir uma função Exemplo1215 para somar duas matrizes e mostrar o resultado Para testar receber um nome de arquivo como parâmetro e aplicar a função sobre o arranjo com os valores lidos Exemplo matrix1 lerArquivo DADOS1TXT matrix2 lerArquivo DADOS2TXT soma matrix1somar matrix2 06 Incluir uma função Exemplo1216 para operar duas linhas da matriz guardando no lugar da primeira as somas de cada elemento da primeira com o respectivo da segunda multiplicados por uma constante Exemplo matrix1 lerArquivo DADOS1TXT matrix1somarLinhas 0 1 1 07 Incluir uma função Exemplo1217 para operar duas linhas da matriz guardando no lugar da primeira as diferenças de cada elemento da primeira com o respectivo da segunda multiplicado por uma constante Exemplo matrix1 lerArquivo DADOS1TXT matrix1subtrairLinhas 0 1 2 08 Incluir uma função Exemplo1218 para dizer em qual linha da matriz se encontra certo valor se houver Exemplo matrix1 lerArquivo DADOS1TXT teste matrix1procurarLinhas procurado 09 Incluir uma função Exemplo1219 para dizer em qual coluna da matriz se encontra certo valor se houver Exemplo matrix1 lerArquivo DADOS1TXT teste matrix1procurarColunas procurado 10 Incluir uma função Exemplo1220 para transpor os dados em uma matriz Exemplo matrix1 lerArquivo DADOS1TXT matrix1transpor Tarefas extras E1 Incluir uma função Exemplo12E1 para dizer se uma matriz apresenta a característica abaixo 1 2 3 4 1 2 3 5 6 7 8 1 2 4 5 6 9 10 11 12 3 4 7 8 9 13 14 15 16 E2 Incluir uma função Exemplo12E2 para montar uma matriz com a característica abaixo 1 5 9 13 1 4 7 2 6 10 14 1 3 2 5 8 3 7 11 15 2 4 3 6 9 4 8 12 16