Prévia do material em texto
Atividade referente a aula III,IV e V
Desenvolva um programa em C++ que trabalhe com arquivos de texto e manipulação
de matrizes por meio de um menu interativo com três opções: ABRIR, SALVAR e
FECHAR.
O objetivo é permitir que o usuário carregue uma matriz de um arquivo, realize
cálculos sobre ela e grave os resultados em outro arquivo.
1. Menu principal
O programa deve exibir continuamente um menu com as opções:
1 – ABRIR
2 – SALVAR
3 – FECHAR
O usuário escolhe digitando o número correspondente.
Após executar a opção desejada, o menu reaparece, exceto quando a opção FECHAR
for escolhida.
2. Opção ABRIR
Solicitar ao usuário o nome de um arquivo .txt a ser aberto (ex.: matriz.txt).
Esse arquivo contém:
1. A primeira linha no formato tamanho:N, indicando que a matriz é quadrada
de ordem N.
2. Em seguida, N linhas com N números inteiros cada, sem espaços,
representando cada linha da matriz.
Exemplo de arquivo:
tamanho:3
123
123
123
O programa deve:
1. Ler o valor de N.
2. Alocar dinamicamente uma matriz de inteiros de dimensão N x N.
3. Converter cada caractere numérico em inteiro e armazená-lo na matriz.
3. Opção SALVAR
Requer que uma matriz já tenha sido carregada com a opção ABRIR.
Executa os seguintes cálculos:
Maior valor da matriz.
Multiplicação dos elementos da diagonal principal (posições [i][i]).
Soma dos elementos da diagonal secundária (posições [i][N-1-i]).
Cria um novo arquivo chamado resultado_matriz.txt (ou outro nome
informado pelo usuário) contendo:
Maior:
Multiplicação Diagonal Principal:
Soma Diagonal Secundária:
Exemplo:
Maior: 3
Multiplicação Diagonal Principal: 6
Soma Diagonal Secundária: 7
4. Opção FECHAR
Libera toda a memória alocada para a matriz.
Encerra o programa de forma segura.
R:
#include
#include
#include
#include
using namespace std;
// Estrutura global para armazenar a matriz
vector> matriz;
int tamanho = 0;
bool carregada = false;
// Função para abrir e carregar a matriz do arquivo
void abrir() {
string nomeArquivo;
cout > nomeArquivo;
ifstream arqEntrada(nomeArquivo);
if (!arqEntrada.is_open()) {
cout (tamanho, 0));
for (int i = 0; i > nomeSaida;
int maiorElemento = matriz[0][0];
long long produtoDiagPrincipal = 1;
int somaDiagSecundaria = 0;
for (int i = 0; i maiorElemento) {
maiorElemento = matriz[i][j];
}
}
produtoDiagPrincipal *= matriz[i][i];
somaDiagSecundaria += matriz[i][tamanho - 1 - i];
}
ofstream arqSaida(nomeSaida);
if (!arqSaida) {
cout > opcao;
switch (opcao) {
case 1:
abrir();
break;
case 2:
salvar();
break;
case 3:
fechar();
break;
default:
cout