Hola,
¿En serio tu profesor les pidió que internamente operen como si fuera fracciones?
Me cuesta creerlo, no es del todo aconsejable, y ni que decir... muy posiblemente contraproducente en términos de cálculo debido a que de una u otra forma deberás llevas los cálculos con el tipo double.
De poder se puede, pero es una receta hecha para el desastre. ¿Porqué? Porque hará más complicada las cosas... sobre todo para implementar adecuadamente las sumas (restas) y multiplicaciones (divisiones). Necesariamente deberás definir dentro de toda tu operatoria un algoritmo capaz de llevar todo en una aritmética basada en fracciones y tener muchas cosas presente.
Primero, en lo que hace a la matriz, cada posición deberá ser de un tipo de dato que represente a una fracción.
En Delphi existe lo que se conoce como registro o record. No es más que una estructura de datos definida por el usuario donde uno puede diseñar bajo un mismo identificador una serie de campos o atributos (de tipos de datos simples). Lo que yo haría es esto:
type
TFraccion = record
Num, Den: integer;
end;
...
var Frac: TFraccion;
...
// Almaceno el número 5/12:
Frac.Num := 5;
Frac.Den := 12;
Y para el caso de los negativos, basta con que se pase en Num o Den en negativo. Por ejemplo:
// -2/3 equivale a:
Frac.Num := -2;
Frac.Den := 3;
Si no me equivoco, en C existe el concepto análogo bajo el nombre Structure
Entonces a la matriz la declaro de este tipo:
type
TMatriz = array of array of TFraccion; //matriz dinámica
Y ahora para hacer uso de ésta basta con que haga algo así:
var A: TMatriz;
...
// Almaceno en (3,2) 6/9
A[3,2].Num := 6;
A[3,2].Den := 9;
Creería que en C es posible hacer algo como esto.
Una vez que ya tienes solucionado esto. Viene lo complejo. No es posible hacer de forma directa algo como:
A[2,4] = A[3,2] + A[5,1];
Y que mágicamente se opere como en las fracciones de toda la vida. Necesariamente deberás llevar los cálculos por tu propia cuenta. Aquí repasarás lo que viste en primaria... usa el lapiz y el papel... ¿Cómo le haces a mano? Pues eso... ahora deberás implementarlo aquí. Para cada operación deberás implementar su algoritmo.
Repasemos juntos:
Siendo n/d el numerador y el denominador, entonces:
Suma y Resta:
Sea n1/d1 y n2/d2 dos fracciones, la suma se hace con los siguientes pasos:
1) se multiplica d1 y d2 y se pone en el denominador del resultado >> d3 = d1 * d2
2) Vamos a calcular el numerador:
2.1) Para el primer miembro se divide d3 con d1 y se multiplica por n1 >> n3a = (d3 / d1) * n1
2.2) Para el segundo miembro de forma análoga: n3b = (d3 / d2) * n2
3) El numerador será entonces la suma de estos dos >> n3 = n3a + n3b
4) El resultado final es n3/d3
CUIDADO: la división (/) en este contexto corresponde a la división entera. Recuerda que si bien estamos utilizando fracciones (en algunos lugares les llaman quebrados) cada valor del numerador y el denominador pertenece al cuerpo de los números enteros.
A nivel de código debe hacerse distinción. Al menos en Delphi se tiene el operador DIV que es para divisiones enteras, mientras que / es para reales.
La resta es similar, en lugar de hacer n3 = n3a + n3b se aplica una substracción:
n3 = n3a - n3b.
Multiplicación:
La multiplicación de fracciones es sencilla de hacer. Sea n1/d1 y n2/d2 el resultado n3/d3 corresponde a:
n3 = n1 * n2
d3 = d1 * d2
División:
Si recordamos el producto cruzado, sea n1/d1 y n2/d2 la división (n1/d1)/(n2/d2) consiste en:
n1 n2 n1 * d2
--- % --- = ----------
d1 d2 d1 * n2
O visto así:
n1
----
d1
---------
n2
----
d2
Se multiplican los extremos superior externos y se coloca en numerador n3 = n1 * d2
Se multiplican los internos y se coloca en el denominador d3 = d1 * n2
¿Viste? Es útil recordar cosas de las matemáticas que nos enseñaron en la escuela

A modo de off-topic esto es un mensaje dedicado para todos aquellos que se quejan y reniegan de para que estudiar x cosa si luego no te va a servir.... en especial para aquellos negados a la tan bella y mal comprendida matemática.
Listo... ya tenemos hechas las operaciones y nos aseguramos que los cálculos se hagan como en la escuela. Pero no termina aquí las cosas. Hay algo especial en las fracciones... las equivalencias. Así es que de pronto nos damos con que:
1/1 = 2/2 = 7000/7000 = 1
O que:
1/2 = 2/4 = 3/6 ....
Si sólo hiciéramos las operaciones como lo hemos descripto llegaremos a números tan grandes que no entenderíamos el número real al que representan. Por ejemplo: 457/356 o 1578/964. ¿Que debemos hacer? Reducirlo, buscar la mínima expresión posible.
¿Cómo se procede? De nuevo vamos a 5to grado de primaria. El algoritmo que hacemos a mano consiste en ir diviendo tanto el numerador y el denominador por un factor buscando que éstos sean múltiplos hasta que ya no sea posible continuar. Empezamos con 2 y dividimos hasta donde sea posible, luego vamos con el 3, 4, etc.
Pero hacer esto en la computadora como que no va. Debe haber una forma más directa. A ver, pensemos... ¿que es en última lo que estamos buscando? El Máximo Común Divisor... o comunmente llamado MCD. ¿Cómo se calcula? Ha... para eso nos remontamos al tan famoso
algoritmo de Euclides.
Listo, una vez calculado el MCD, entonces ya directamente reducir el número. Es decir que:
sea m = MCD(n3, d3) entonces:
n3 = n3 / m
d3 = d3 / m
Ya con esto creería que estarías en condiciones de seguir con tu trabajo. Al final resulta que este hilo se está convirtiendo más en repaso de álgebra lineal y de matemática que de una duda técnica
Sigo pensando que implentarlo de esta forma es muy rebuscada. Me parece que se está mal interpretando el pedido del profesor y a lo que apunta el es que a efectos de visualización al final se muestre en forma de fracción. Que no necesariamente esto indica que internamente se opere así.
Así se pierde la esencia de la cátedra de Cálculo y no hace al objetivo real. Se está desviando la verdadera atención del concepto a presentar a un tema menor que al final tiene sus costos en el problema. Al menos así es mi parecer.
Yo siempre me digo que si fuera profesor sería muy HDP con mis alumnos, pero no llegaría al extremo que ha llegado tu profesor con este "extraño" pedido... aunque quien sabe. He escuchado historias de cada profesor de algunas universidades que te avientan con cosas tan ridículas en un examen que ya te hacen dudar de si son puros chismes exagerados para asustar a los recién ingresados sobre la dura vida universitaria o si en verdad lo han hecho (1)
(1) Por ejemplo, en un caso verídico que le ha pasado a mi primo mayor. Durante un examen oral el profesor le preguntó cuantos escalones tiene cierto monumento (que no recuerdo ahora cual) que está en una plaza de Tucumán (mi primo estudió allí). Mi primo quedó con cara de Poker Face y suspendió por eso. Cuando nos encontramos en la reunión familiar nos contó su relato. Yo no me lo creía pero luego me aseguraron el resto de mis primos, conocidos y allegados a dicho profesor que así es esa persona y lo hace siempre con todos los estudiantes. Se lleva el máximum god of trolling.
Volviendo a tu caso, espero que tu profe no sea de esos tipos.
Saludos,