Code:
#include <stdio.h>
int main(void)
{
float r1, r2, r3, r4, r5, e1, e2, e3;
printf("Enter resistor values in kili-ohms and battery values in volts\n");
printf("r1: ");
scanf_s("%f", &r1);
printf("r2: ");
scanf_s("%f", &r2);
printf("r3: ");
scanf_s("%f", &r3);
printf("r4: ");
scanf_s("%f", &r4);
printf("r5: ");
scanf_s("%f", &r5);
printf("e1: ");
scanf_s("%f", &e1);
printf("e2: ");
scanf_s("%f", &e2);
printf("e3: ");
scanf_s("%f", &e3);
float A[3][3] = { { -1, 1, 1 }, { r1 + r2 + r3, 0, r5 }, { 0, r4, -1 * r5 } },
Ax[3][3] = { { 0, A[0][1], A[0][2] }, { e1 + e3, A[1][1], A[1][2] }, { (-1 * e2) + (-1 * e3), A[2][1], A[2][2] } },
Ay[3][3] = { { A[0][0], 0, A[0][2] }, { A[1][0], e1 + e3, A[1][2] }, { A[2][0], (-1 * e2) + (-1 * e3), A[2][2] } },
Az[3][3] = { { A[0][0], A[0][1], 0 }, { A[1][0], A[1][1], e1 + e3 }, { A[2][0], A[2][1], (-1 * e2) + (-1 * e3) } };
float detA = (A[0][0] * (A[1][1] * A[2][2] - A[2][1] * A[1][2])) - (A[0][1] * (A[1][0] * A[2][2] - A[2][0] * A[1][2])) + (A[0][2] * (A[1][0] * A[2][1] - A[2][0] * A[1][1])),
detAx = (Ax[0][0] * (Ax[1][1] * Ax[2][2] - Ax[2][1] * Ax[1][2])) - (Ax[0][1] * (Ax[1][0] * Ax[2][2] - Ax[2][0] * Ax[1][2])) + (Ax[0][2] * (Ax[1][0] * Ax[2][1] - Ax[2][0] * Ax[1][1])),
detAy = (Ay[0][0] * (Ay[1][1] * Ay[2][2] - Ay[2][1] * Ay[1][2])) - (Ay[0][1] * (Ay[1][0] * Ay[2][2] - Ay[2][0] * Ay[1][2])) + (Ay[0][2] * (Ay[1][0] * Ay[2][1] - Ay[2][0] * Ay[1][1])),
detAz = (Az[0][0] * (Az[1][1] * Az[2][2] - Az[2][1] * Az[1][2])) - (Az[0][1] * (Az[1][0] * Az[2][2] - Az[2][0] * Az[1][2])) + (Az[0][2] * (Az[1][0] * Az[2][1] - Az[2][0] * Az[1][1]));
float i1 = detAx / detA, i2 = detAy / detA, i3 = detAz / detA;
printf("i1, i2 and i3 are %f, %f and %f", &i1, &i2, &i3);
getch();
return(0);
}
A classmate who used to code also mentioned that for loops might be an alternative option for populating arrays. I'm not sure if that applies here but extra tips are always helpful.