PI1_2024-2_P2

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 4

Prova P2 de “UFSM00250 Projeto Integrador I” – 2024-2

Departamento de Eletrônica e Computação


A solução da prova
Centro de Tecnologia P2 deve ser enviada
por e-mail em
13/12.
UFSM00251 – Projeto Integrador I

Prof. Fernando DeCastro


Prof. Natanael Gomes
Desenvolva o código fonte C para um programa executável que lê uma matriz complexa 𝐶𝑀𝑎𝑡[𝑚][𝑛] e um vetor coluna
complexo 𝐶𝑉𝑒𝑡[𝑛] de dois respectivos arquivos texto cujos nomes são dados pelos correspondentes argumentos de linha
de comando “InputMatrix” e “InputVector”, a seguir respectivamente armazenando os valores lidos na matriz COMPLEX
**CMat e no vetor COMPLEX *CVet alocados dinamicamente no heap. Em sequência, o programa efetua a operação
𝐶𝑉𝑟𝑒𝑠 𝑚 = 𝐶𝑀𝑎𝑡[𝑚][𝑛] ∙ 𝐶𝑉𝑒𝑡[𝑛] e escreve 𝐶𝑉𝑟𝑒𝑠 𝑚 no arquivo texto cujo nome é dado pelo argumento da linha de
https://en.wikipedia.org/wiki/Matrix_multiplication

comando “OutputVector” (ver https://en.wikipedia.org/wiki/Matrix_multiplication ). Por exemplo, para

o programa deve gerar o resultado

O programa executável e o código fonte C que dá origem ao referido programa devem obrigatoriamente atender às
seguintes especificações (-2.0 pontos para cada especificação não atendida):
(a) Quando argc resultar diferente de 4 para a entrada de argumentos na linha de comando, o programa imprime na tela do
console um texto de “help” especificando e descrevendo o que faz o programa e quais são os argumentos da linha de
comando. Especificamente, os argumentos da linha de comando são “InputMatrix” correspondendo a argv[1],
“InputVector” correspondendo a argv[2] e “OutputVector” correspondendo a argv[3] .
(b) O formato numérico dos arquivos texto que armazenam em disco os vetores complexos 𝐶𝑉𝑒𝑡[𝑛] e 𝐶𝑉𝑟𝑒𝑠 𝑚 é https://www.fccdecastro.com.br/pdf/CPS_Cap%20III.pdf

conforme descrito no Cap III.1 das notas de aula disponível em https://www.fccdecastro.com.br/pdf/CPS_Cap%20III.pdf .


(c) O formato numérico do arquivo texto que armazena em disco a matriz complexa 𝐶𝑀𝑎𝑡[𝑚][𝑛] é conforme descrito no
https://www.fccdecastro.com.br/pdf/CPS_Cap%20III.pdf

Cap III.2 das notas de aula disponível em https://www.fccdecastro.com.br/pdf/CPS_Cap%20III.pdf .


Projeto Integrador I Prova P2 Prof Fernando DeCastro Prof Natanael Gomes 2
(d) O programa determina automaticamente o número de linhas e colunas da matriz de valores complexos 𝐶𝑀𝑎𝑡[𝑚][𝑛]
armazenada em disco no arquivo cujo nome é especificado no argumento da linha de comando “InputMatrix”.
(e) O programa determina automaticamente o número de elementos do vetor coluna complexo 𝐶𝑉𝑒𝑡[𝑛] armazenado em
disco no arquivo cujo nome é especificado no argumento da linha de comando “InputVector”.
(f) Qualquer operação de leitura/escrita/bufferização em disco é testada quanto à ocorrência de erro.
(g) O tipo de dado COMPLEX referido no 1° parágrafo do slide anterior é definido como
typedef struct Complex{
float Re;
float Im;
} COMPLEX;
(h) O programa usa alocação dinâmica em conformidade com o Cap III.1 e o Cap III.2 das notas de aula para alocar
memória no heap para o conjunto de valores complexos lidos de “InputMatrix” e “InputVector”.
(i) Qualquer operação de alocação de memória é testada quanto à ocorrência de erro.
(j) O programa testa a conformidade das dimensões da matriz complexa lida de “InputMatrix” com o número de elementos
do vetor coluna “InputVector”, bem como testa a conformidade de todo e qualquer valor numérico lido de disco, e acusa
erro quando ocorrer qualquer tipo de inconformidade.
(k) Na medida em que se façam necessárias operações aritméticas {+, −,× ,÷} com valores Z do tipo COMPLEX e/ou
operações módulo de Z, fase de Z, conjugação de Z e raiz de Z, o código fonte C a ser desenvolvido faz uso das respectivas
funções cujos protótipos estão descritos em "FUNCTION PROTOTYPES" no slide 18 do Cap III.1 das notas de aula.
(l) O código fonte C a ser desenvolvido faz uso da função void Quit(ERR err, char *name) p/ o tratamento de toda e
qualquer ocorrência de erro (ver slides 66 e 67 do Cap III.2 das notas de aula). Se necessário, acrescentar à função Quit()
eventuais situações de ocorrência de erro nela não previstas.
(m) O programa desenvolvido deve ser validado com os softwares MathCad e/ou Matlab.

Projeto Integrador I Prova P2 Prof Fernando DeCastro Prof Natanael Gomes 3


Diretrizes para entrega da solução da prova P2:
• A solução da prova consiste em (1) código fonte C desenvolvido pelo aluno, (2) o correspondente executável gerado,
(3) os arquivos texto de entrada e saída do programa executável e (4) os scripts MathCad e/ou Matlab utilizados na
validação.
• Enviar (1),(2),(3) e (4) por e-mail em 13/12 a fccdecastro@outlook.com com cópia a natanael-
rodrigues.gomes@ufsm.br.
• Atentar para a individualidade da solução: Partes do código fonte C desenvolvido que forem absolutamente idênticas
em duas soluções pertencentes a alunos distintos não serão pontuados para ambos. É exceção e não será penalizado
por ausência de individualidade partes do código fonte C desenvolvido pelo aluno que sejam cópia das funções e
procedimentos disponibilizados em linguagem C nas notas de aula.
• Códigos fonte C absolutamente idênticos em sua totalidade e alegadamente desenvolvidos por alunos distintos não
serão considerados.

Projeto Integrador I Prova P2 Prof Fernando DeCastro Prof Natanael Gomes 4

Você também pode gostar